Create services with scheduling policies for hours and durations, then assign resources to handle bookings.
Query available slots through the API. Returns only time slots that satisfy policy constraints and resource capacity.
Reserve a slot with a temporary hold during conversation. The hold locks the resource and starts a TTL timer.
Confirm to finalize the booking, or cancel to release the hold. Webhooks notify your systems of state changes.
Check available slots, create a temporary hold during conversation, then confirm when the user agrees.
POST /v1/.../availability/slots
{
"startTime": "2026-01-08T00:00:00Z",
"endTime": "2026-01-08T23:59:59Z",
"durationMs": 3600000
}
{ "slots": ["10:00", "14:00"] }POST /v1/bookings
{
"serviceId": "svc_consultation",
"resourceId": "rsc_advisor_1",
"startTime": "2026-01-08T10:00:00Z",
"endTime": "2026-01-08T11:00:00Z"
}{ "id": "bkg_abc123", "status": "hold" }POST /v1/bookings/bkg_abc123/confirm
{
"metadata": {
"userName": "Alice Smith",
"userEmail": "alice@example.com"
}
}{ "status": "confirmed" }Holds expire automatically after a TTL. Conflicts are handled at the database level.
No manual cleanup. No race conditions. No complex state management.
Define bookable services with scheduling policies for business hours, slot durations, and booking windows.
Create temporary holds during conversations that expire after a TTL to prevent abandoned reservations.
Connect AI agents through the Model Context Protocol. Agents discover and use booking tools automatically.
Query available slots with policy-aware filtering that returns only time slots satisfying all constraints.
Database constraints and row-level locking prevent double-booking with deterministic conflict responses.
All mutations support idempotency keys for safe retries that return identical responses without side effects.