scheduling-agent turns plain-English requests — “set up a recurring standup on weekday mornings, but skip Fridays” — into validated calendar events on a live WebCalendar instance. Its defining feature is a durable human-in-the-loop approval step: the agent proposes an event, shows you the fully expanded, timezone-aware recurrence, and writes nothing until you approve.
Key Features
- Natural-language scheduling constrained to a strict, validated
ScheduleProposalschema — the model’s only job is language-to-schema - Durable human-in-the-loop approval — a real LangGraph interrupt, checkpointed to SQLite and resumable after a restart
- RFC 5545 recurrence validated against a Python twin of WebCalendar’s own server-side validator, so invalid rules never reach the backend
- Timezone- and DST-aware occurrence expansion — you approve the actual dates
- Talks to WebCalendar over MCP (
add_event,search_events,check_conflicts, and more) - Provider-agnostic: the Anthropic API, OpenRouter, an Anthropic Pro/Max subscription, or a fully local model via ollama or LM Studio — no cloud key required
- Structured JSON logging, optional tracing, and an eval harness with deterministic scorers in CI
Tech: Python, LangGraph, and the MCP server that ships inside WebCalendar. 186 tests at 100% coverage.
For a full walkthrough — including a live demo running entirely against a local model — read my post From a Sentence to a Calendar Event: Building a Human-in-the-Loop Scheduling Agent.