book_appointment
Book an appointment. Books a slot the way the portal calendar does: the account's required customer fields are enforced (422 missing_fields), the time must be in the future (400 invalid_param) and free (409 slot_unavailable), the appointment is confirmed at once, synced to Google Calendar and GoHighLevel when connected, and appointment.booked fires. Business hours are not checked here: call availability first to offer open times. Attach conversation_id to link the booking to a person you are chatting with; no message is sent to them. date and time are the customer's wall-clock time in timezone (the account timezone when omitted).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"date": "<date>",
"time": "<time>",
"customer": "<customer>"
},
"name": "book_appointment"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | ||
| date | Yes | YYYY-MM-DD. | |
| time | Yes | HH:MM, 24-hour, in timezone. | |
| notes | No | ||
| customer | Yes | ||
| location | No | ||
| timezone | No | IANA name. Default: the account timezone. | |
| service_type | No | A bookable service name from ai/config booking.bookable_services, or free text. | consultation |
| vehicle_info | No | ||
| conversation_id | No | Link the booking to the person in this conversation; sets the channel. No message is sent. | |
| duration_minutes | No | Defaults to the service's duration, else 30. | |
| send_confirmation | No | Reserved for booking confirmation emails. Accepted and currently ignored. |