§ For agents · Coordination layer

The scheduling coordination layer for AI agents.

A scheduling coordination layer is a shared service every AI scheduling agent calls before it writes to a calendar. Instead of each agent racing to create events directly — where two agents can both pass an availability check and both write — the coordination layer arbitrates: exactly one agent wins each contested slot, deterministically, and every loser gets a typed rejection it can act on. AgentDraft is that layer.

Updated


§ 01Why the category exists

Calendar APIs — Google Calendar, Microsoft Graph, CalDAV — were designed for one writer at a time. None of them expose a slot-level compare-and-swap. So an agent's "check availability" and its "commit booking" are two separate network calls, and other agents can complete their own check-and-write in between. Two agents both pass the availability check; both succeed in writing; the human ends up with overlapping events. That failure mode is a multi-agent calendar collision, and it gets more common every month as more agents touch the same calendars.

The collision can only be resolved correctly in one place: a layer that every agent goes through, where the availability check and the booking write are a single atomic operation. That layer is the scheduling coordination layer.


§ 02Where it sits in the stack
agent-1 ────┐
agent-2 ────┼──▶  coordination layer  ──▶  Google / M365 / CalDAV
agent-3 ────┘     (decide the winner)       (store the winner's write)

Every agent that needs to write to a user's calendar calls the coordination layer first. It resolves the race; exactly one agent gets 201 COMMITTED back. That agent's write propagates to the underlying calendar through whichever connector the user is on. The losing agents never reach the calendar at all, so the availability surface every agent reads stays coherent.


§ 03What it is — and isn't
A coordination layer is……not
The arbiter that decides which agent's write landsA calendar store — it sits in front of the calendar you already use
A provider-agnostic API every agent calls before writingA unified provider adapter — that's Cronofy/Nylas, which it sits above
A deterministic, priority-ranked conflict resolverA best-effort retry loop or a lock you have to hold in app code
An append-only record of who booked, lost, and got evictedA human-facing scheduling widget like Cal.com

§ 04How AgentDraft implements it

AgentDraft writes each booking as one conditional row per fixed time bucket inside a single database transaction. Every write carries a condition that lets a higher-priority agent evict a lower-priority hold — or a still-bumpable commit — while refusing any write that would collide with an equal-or-higher-priority booking. The check is the write, so exactly one agent wins each slot. Losers receive 409 with the winner's identity, priority, and an audit reference. The guarantee lives at the storage layer, not in application code — which is what makes it race-free under real concurrency. The collision benchmark has the numbers.


§ 05Frequently asked
Why do AI scheduling agents need a coordination layer?

Because calendar APIs expose no slot-level compare-and-swap. When two or more independent agents share a calendar, their check-then-write sequences interleave and produce double-bookings. A coordination layer is the only place that race can be resolved correctly, because it makes the availability check and the booking write a single atomic operation.

How is this different from a unified calendar API?

A unified API (Cronofy, Nylas) normalizes many providers behind one interface — it's an adapter. A coordination layer sits above whatever adapter you use and decides which agent's write actually lands when several compete for the same slot. They're complementary: keep your provider adapter, add the coordination layer for multi-agent safety. See AgentDraft vs. Cronofy and vs. Nylas.

Do I have to migrate my calendar?

No. AgentDraft connects to the calendar you already use. Agents call the coordination layer first; the winner's write propagates to the underlying calendar; the losers never reach it.

What frameworks can call it?

Any framework that can make an HTTP call — plus first-party SDKs for Python and TypeScript, an LangChain package, an MCP server, and a ChatGPT App.


§ 06Further reading