Reserve Time Slot
reserve_slotReserve a time slot at a business. Returns a pending_offer reservation and sends a 6-digit confirmation code to the customer's email or phone. The customer reads the code back to confirm via the confirm_booking tool. The reservation expires in 15 minutes if not confirmed. Idempotent: re-using the same idempotency_key returns the original reservation without resending the code.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Business slug identifier | |
| agent_id | No | Optional agent identifier | |
| offer_id | No | Optional id of a signed get_quote offer to redeem against this reservation. Omit for a business with no exact-priced service — authentication is a capability upgrade here, never a toll. | |
| window_end | Yes | Slot end (Unix seconds) | |
| window_start | Yes | Slot start (Unix seconds) | |
| idempotency_key | Yes | Unique key for idempotent reservation | |
| customer_contact | Yes | How to reach the customer. MUST include at least one of email or phone — the confirmation code is delivered there, and a hold nobody can confirm is unreachable from both sides. Email is used when both are present. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Reservation state — 'pending_offer' on a fresh hold; a replay returns the existing row's state | |
| expires_at | Yes | ISO-8601. When this hold lapses if the code is not confirmed | |
| confirmation | Yes | ||
| reservation_id | Yes | ||
| idempotent_replay | No | Present and true when this idempotency_key already had a reservation; no new code was sent |