AI agents and developer evaluation
AI Scheduling Agent Evaluation: Build a Hard-Meeting Test Suite
The happy-path demo lies by omission. One organizer, one provider, three free calendars, and one successful create-event call prove almost nothing about a scheduling agent. Add an external Microsoft participant, an unconnected candidate, a stale reply, an optional observer, a worker restart, and an uncertain calendar write. Now the product has to finish the meeting instead of finishing the demo.
Build the hard-meeting evaluation in eight steps
Use one base fixture: a sixty-minute customer kickoff inside a five-business-day window. Four people are required, one is optional, two companies use Google and Microsoft, and one required person will not connect a calendar. Every test mutates this fixture while preserving one meeting request ID.
- 1
Define terminal success before writing prompts
Write a machine-checkable completion contract: one canonical event, approved start and end, meeting time zone, correct organizer, every required participant, the final optional-attendee decision, and verified invitation dispatch. Also define terminal non-booking outcomes such as required decline, deadline expiry, revoked authority, and no overlap after permitted changes.- An HTTP 200, tool success, or model success sentence does not pass the evaluation.
- A bounded exception names current evidence, one owner, and one allowed next action.
- Cancellation and rescheduling use separate authority and completion contracts.
- 2
Freeze a typed meeting-intent fixture
Storemeeting_request_id, revision, organizer, purpose, duration, date window, deadline, IANA time zone, location, required people, optional people, approved substitutes, working-hour rules, buffers, outreach policy, approval mode, and allowed calendar writes. Keep the source instruction, but grade the system against typed state rather than its interpretation of old prose.- Reject a fixture with no organizer, duration, bounded window, deadline, or required participant.
- Every proposal, approval, message, and booking attempt points to the current revision.
- Mutating required people, duration, or date bounds invalidates stale proposals.
- 3
Build the participant and availability matrix
Vary required versus optional status, Google versus Microsoft, connected versus unconnected calendars, known versus ambiguous time zones, and approved versus denied outreach. Normalize provider free/busy and participant-provided windows into intervals with source, freshness, zone, consent state, and error state. Missing evidence is never treated as open time.- A required participant with no connection receives a consent-safe availability path.
- An optional decline changes scoring without changing required quorum.
- Private event titles and message bodies stay outside routine evaluation output.
- 4
Test conversation and time-zone ambiguity
Feed replies such as ‘Tuesday after lunch,’ ‘Friday morning,’ a date without a year, and a daylight-saving transition. Grade whether the agent asks the minimum clarification, preserves the original response, and creates normalized windows only after date and zone are authoritative. Run reminder timing in each participant’s local zone.- The agent never guesses a time zone from an email domain or phone number.
- A correction supersedes old evidence while preserving the audit trail.
- Silence from a required person remains a wait or exception, not consent.
- 5
Inject stale state, duplicate delivery, and worker restarts
Change a required calendar after proposals are generated. Deliver the same participant reply twice. Restart the worker after outreach, after approval, and during booking. Repeat REST commands and MCP tool calls with the same command identity. The system should resume from durable meeting state, rebuild stale proposals, and suppress duplicate side effects.- Outreach, approval, and booking use separate idempotency keys.
- A duplicate webhook or reply does not create another state transition.
- A restarted worker does not need the original model transcript to recover.
- 6
Test consent, approval, and human reclaim
Deny calendar access, revoke it after a read, opt a participant out of reminders, expire organizer approval, and add a sensitive participant after approval. Grade whether calendar reads, participant contact, slot approval, event creation, update, cancellation, and rescheduling are treated as distinct permissions. The agent must stop when authority ends.- Possessing an address does not grant permission to contact it.
- Approval binds to the current people, proposal, organizer calendar, and revision.
- A human can pause, revise, reclaim, or end the workflow without hidden work continuing.
- 7
Break the booking commit on purpose
Return a timeout after the provider creates the event, omit one required attendee, reject one invitation, and move a calendar between final check and write. The agent must reconcile the organizer calendar before retrying, repair an allowed partial failure, and return one canonical provider event identifier. Blind retry is a failing grade.- An uncertain write enters reconciliation rather than immediate replay.
- The final read-back verifies time, zone, organizer, attendees, and invitation state.
- Repeated booking commands return the original result rather than a second event.
- 8
Score completion, recovery, and operating evidence
Score each fixture on intent fidelity, required attendance, cross-company reach, optional-sync fallback, time-zone correctness, consent, duplicate suppression, recovery, observability, and terminal proof. Record active processing separately from participant wait. Compare engineering and support work needed to pass the suite, not only first-call latency.- Every failure has a stable reason code and the meeting timeline needed to reproduce it.
- Expected participant wait is not reported as infrastructure failure.
- A product passes only the fixtures that finish or stop inside declared policy.
Use one fixture schema across every agent and protocol
Keep the fixture above REST, MCP, model vendor, and calendar provider. The same meeting brief should run through a custom agent, a model-callable MCP client, or direct application code. Transport adapters may differ. Required attendance, consent, evidence freshness, approval, and completion cannot.
Store expected state transitions beside expected output. A fixture should say when the system waits, when it retries, when it asks for clarification, when it invalidates a proposal, and when it hands a decision back. That catches agents that reach the right final time through unsafe or irreproducible behavior.
Separate deterministic checks from model grading
Use exact assertions for participant roles, intervals, time zones, revisions, idempotency keys, provider event IDs, and attendee lists. Use bounded semantic grading for whether an outreach message explains purpose, asks only for necessary availability, or clearly states a decision. Do not let a language-model judge overrule a missing required invitation.
Run adversarial language through the parser, but keep policy in code. A persuasive response cannot change a required participant into an optional one. A confident model cannot convert an expired calendar permission into current evidence.
A provider test is not a scheduling evaluation
A calendar API test can prove that free/busy and event writes work. A poll test can prove that votes were stored. A booking-link test can prove that a slot was selected. An AI assistant test can prove that outreach was drafted. Those are component checks.
Scheduling execution evaluation starts with the instruction and follows required and optional people, connected and conversational availability, time zones, consent, overlap, approval, retries, recovery, the canonical event, and invitations. The terminal proof is the category boundary.
Run the suite against build and buy options
Give an internal build and an external scheduling service the same fixtures. Count failed cases, application code required outside the service, operator interventions, and unresolved provider differences. Include the no-calendar path and uncertain-write path; otherwise the comparison rewards the easiest demo.
WonderCal’s release should earn adoption by passing hard meetings with less undifferentiated calendar and coordination code. Until the live MCP/API path is available, this suite is a demand on the roadmap rather than proof of completion.
Compare evaluation depth by the work it proves
A useful test does more than confirm an endpoint. It proves whether the product owns the hard meeting across people, providers, elapsed time, and failure.
| Decision vector | Happy-path agent demo | Provider and API integration tests | WonderCal execution direction |
|---|---|---|---|
| Execution completion | Often stops at a proposed slot, drafted message, or successful tool call. | Proves provider reads and writes but not the required group outcome. | Target suite closes only on verified invitations or a bounded exception. |
| Cross-company reach | Usually uses one provider and identities the test owner controls. | Can cover Google and Microsoft while external participant coordination remains application work. | Designed to test required and optional people across companies, providers, and unconnected calendars. |
| Optional-sync fallback | May replace missing access with a link or omit the case. | Provider suites cannot grade outreach, reply parsing, reminders, or consent. | Target fixtures join conversational windows and connected free/busy in one meeting state. |
| Recovery and observability | Failures are rerun from the beginning with little durable evidence. | Provider errors are visible; participant waits and meeting-level recovery live elsewhere. | Target evaluation covers replay, reconciliation, reason codes, timelines, and safe operator action. |
| Consent and control | A demo account can hide real permission and outreach boundaries. | OAuth is testable; contact, approval, reschedule, and cancellation authority need application fixtures. | Target suite separates every sensitive operation and proves human pause or reclaim. |
| Time to ship | Fast to present and weak at predicting production support work. | Necessary integration coverage with coordination tests still left to build. | Worth adopting when the live service passes the corpus with less application and repair code. |
Execution completion
Happy-path agent demo
Often stops at a proposed slot, drafted message, or successful tool call.
Provider and API integration tests
Proves provider reads and writes but not the required group outcome.
WonderCal execution direction
Target suite closes only on verified invitations or a bounded exception.
Cross-company reach
Happy-path agent demo
Usually uses one provider and identities the test owner controls.
Provider and API integration tests
Can cover Google and Microsoft while external participant coordination remains application work.
WonderCal execution direction
Designed to test required and optional people across companies, providers, and unconnected calendars.
Optional-sync fallback
Happy-path agent demo
May replace missing access with a link or omit the case.
Provider and API integration tests
Provider suites cannot grade outreach, reply parsing, reminders, or consent.
WonderCal execution direction
Target fixtures join conversational windows and connected free/busy in one meeting state.
Recovery and observability
Happy-path agent demo
Failures are rerun from the beginning with little durable evidence.
Provider and API integration tests
Provider errors are visible; participant waits and meeting-level recovery live elsewhere.
WonderCal execution direction
Target evaluation covers replay, reconciliation, reason codes, timelines, and safe operator action.
Consent and control
Happy-path agent demo
A demo account can hide real permission and outreach boundaries.
Provider and API integration tests
OAuth is testable; contact, approval, reschedule, and cancellation authority need application fixtures.
WonderCal execution direction
Target suite separates every sensitive operation and proves human pause or reclaim.
Time to ship
Happy-path agent demo
Fast to present and weak at predicting production support work.
Provider and API integration tests
Necessary integration coverage with coordination tests still left to build.
WonderCal execution direction
Worth adopting when the live service passes the corpus with less application and repair code.
Frequently asked questions
What should an AI scheduling agent evaluation measure?
What is the hardest scheduling-agent fixture?
Should model output be graded by another model?
How do you test an agent that waits for participant replies?
Where can developers evaluate WonderCal’s agent direction?
Primary sources
- Google Calendar API: Freebusy query — official Google request, response, time-zone, group-expansion, and error fields for availability fixtures
- Microsoft Graph: calendar getSchedule — official Microsoft availability operation, permissions, limits, and time-zone behavior
- Model Context Protocol: Tools — official tool schemas, structured results, human confirmation, timeouts, and security guidance
- RFC 9110: Idempotent methods — HTTP idempotency semantics used as a base for retry and replay fixtures
- OpenTelemetry: Traces — official trace and span concepts for meeting-level evaluation evidence
Make the hard meeting your release test
Evaluate WonderCal and your own integration against the same corpus: mixed providers, optional connection, consent, time zones, safe replay, recovery, and one verified group booking.
Review WonderCal for AI agents