book_appointment
ChatGPTUse this when the user explicitly asks to book a selected slot, an exact date/time, or the latest available time in a date range. Requires query or resolved providerId and serviceId. Use startAt for an exact slot, date for one day, or inclusive fromDate/toDate with slotPreference=latest for the latest time. Use book_first_available_appointment for earliest-time requests or requests without a date/time. Creates a booking and may notify the provider when all choices and required acknowledgements are satisfied; otherwise returns missing choices or a draft for confirm_booking. Never treat a request to check availability as permission to book.
book_first_available_appointment
ChatGPTUse this when the user explicitly asks to book the earliest available time (first, soonest or ASAP), including a booking request with no date or time. Searches the requested date range, or the next 7 days by default. Requires query or a resolved providerId and serviceId. Creates a booking only when the place and service are unambiguous and required acknowledgements exist; otherwise returns missing choices or a draft for confirm_booking. For nearby requests set sort=nearest. A place selected only from host location requires user confirmation. For an exact time or the latest time, use book_appointment. A successful booking shares booking details with the selected provider and may send notifications.
cancel_booking
ChatGPTUse this when the user explicitly asks to cancel one of their Umovi bookings. Requires bookingId or bookingRef and confirmedByUser=true. Cancels the booking, releases its slot and may notify the provider. Cancellation cannot guarantee that the released time will remain available for rebooking.
check_availability
ChatGPTUse this when the user wants available times for a selected place and service on one calendar day. Requires providerId, serviceId and date; after and before restrict the time window. Returns up to limit slots (maximum 50) without reserving them. Use find_available_slot to find an earliest or latest slot across a date range. rescheduleBookingId requires account access and checks availability for moving that booking.
confirm_booking
ChatGPTUse this when a previous booking result returned draftId and the user has confirmed the displayed booking details. Requires that draftId and confirmedByUser=true. If the result required providerDataDisclosureAcknowledged, display its data-sharing notice and set this flag only after active acknowledgement. This is not marketing consent. Finalizes the booking, shares its details with the provider and may send notifications. An isolated confirmation without a preceding draft requires clarification.
find_available_slot
ChatGPTUse this when the user wants to find an earliest or latest available slot for a selected Umovi place and service without booking it. Requires providerId and serviceId. Set slotPreference=earliest or slotPreference=latest; default is earliest. Use date for one day or inclusive fromDate/toDate bounds for a range. Convert strict after/before requests to inclusive date bounds. Without bounds the horizon is 7 days. Returns the selected time, or no availability. With rescheduleBookingId, requires account access and can return up to 10 alternatives on the selected day.
get_booking_details
ChatGPTUse this when the connected user wants the details of one of their Umovi bookings. Requires bookingId or bookingRef. Returns its service, place, time, status and available actions without changing the booking.
get_booking_messages
ChatGPTUse this when the connected user wants to read messages or events for one of their Umovi bookings. Requires bookingId or bookingRef. Returns the booking and paginated conversation timeline without sending messages or marking them as read. To display the timeline as a widget, pass the result to render_booking_messages.
get_my_bookings
ChatGPTUse this when the connected user wants to list or search their Umovi bookings. With no status/archive filter and upcoming omitted, returns upcoming non-cancelled bookings only. Set upcoming=false to include past and cancelled bookings without a time filter; archive=true instead selects past or cancelled bookings. sortOrder sorts by startsAt, not createdAt. For the most recently created booking, include all statuses with upcoming=false, inspect createdAt and follow pagination before choosing; do not treat the first start-time-sorted row as the newest creation. Supports status, place and search filters. Returns only bookings accessible to that account, without changing them. Does not read external calendars.
get_my_places
ChatGPTUse this when the connected user wants their saved Umovi places, frequently used places or rebooking recommendations. mode selects saved, suggested or recommended results. Supports search, sorting and pagination. nearest sorting uses host-provided location when available; never request GPS coordinates. Does not save or remove places.
get_provider_profile
ChatGPTUse this when the user wants public details of one Umovi place. Requires its providerId or slug. Returns its profile, services, address, booking constraints and communication language without changing data.
remove_saved_place
ChatGPTUse this when the connected user explicitly asks to remove a saved Umovi place and confirms its privacy unlinking effects. Requires providerId and confirmedByUser=true. Removes the relationship and applies the backend's associated data-unlinking rules. This may affect access to related booking data; do not use it merely to hide a search result.
render_booking_messages
ChatGPTUse this when the user explicitly asks to display a booking conversation as a widget after get_booking_messages succeeds. Copy booking and timeline from its result. Displays existing messages and events without fetching, sending or marking messages as read. A question about whether the provider replied can be answered directly from get_booking_messages.
render_booking_options
ChatGPTUse this when the user asks to see or compare booking options as cards and search_providers has returned those options. Copy the relevant providers and services, labels and matching bookingFlow candidates from that result without changing their values. Include total only when it still describes the supplied subset. The widget is the presentation of these options; do not duplicate its cards or slot lists in the assistant response. Displays the supplied options without fetching data or creating a booking. Empty results display an empty state.
render_provider_preview
ChatGPTUse this when the user asks for a visual preview of one place already retrieved with get_provider_profile. Copy its public profile into provider. Displays an image, name, address and brief description; does not fetch data or create bookings.
repeat_booking
ChatGPTUse this when the user explicitly asks to create another booking for the same place and service as a previous booking. Requires bookingId or bookingRef and confirmedByUser=true. Uses the earliest eligible time within the supplied date bounds or the next 7 days. Creates a new booking or returns missing choices/acknowledgement; leaves the original booking unchanged. The provider receives the new booking details and may receive notifications.
reschedule_booking
ChatGPTUse this when the user explicitly asks to move their existing booking to a chosen exact startAt. Requires bookingId or bookingRef and confirmedByUser=true. Atomically replaces the old booking time, releases its previous slot and may notify the provider. It does not require cancelling first. If the new time is unknown, check availability before moving it.
reschedule_booking_to_first_available
ChatGPTUse this when the user explicitly asks to move their existing booking to its earliest available replacement time. Requires bookingId or bookingRef and confirmedByUser=true. Finds a slot within the supplied date bounds or the next 7 days, then atomically moves the booking and may notify the provider. Releases the old time. A request only to view replacement options does not authorize this action.
save_place
ChatGPTUse this when the connected user explicitly asks to save a Umovi place to their personal list. Requires providerId. Adds the relationship in that account; repeating the action does not create duplicate saved entries.
search_providers
ChatGPTUse this when the user wants to find or compare Umovi places, services, prices, employees, or available times. query is a short search phrase containing only the requested service, place and search area; do not include conversation history or the user's home address. Preserve names in the user's language. Optional structured service and employee filters refine results. For nearby requests set sort=nearest to use host-provided location when available. For availability without a day, set firstAvailable=true; the default horizon is 7 days. Returns matching services, prices and slot previews without reserving them. A direct request to book belongs to book_appointment or book_first_available_appointment. Search is relevance-ranked and may include alternatives. When the user names one place or service, resolve its returned identifiers and narrow the results to that place and service before presenting cards; do not present other matches as the requested place. For an explicit request to show option cards, pass only the relevant returned providers and services to render_booking_options, preserving their data.
send_booking_message
ChatGPTUse this when the user explicitly asks to send a message about one existing booking. Requires bookingId or bookingRef, body, bodyLanguage, deliveryMode and confirmedByUser=true. Sends to that booking's provider and may notify them; the recipient may read it immediately. For a composed message, use the returned providerCommunicationLanguage and COMPOSED_IN_TARGET_LANGUAGE. For exact user wording in another language, retain it in originalBody, translate into body and use AI_TRANSLATED_WITH_ORIGINAL with both language tags. Use ORIGINAL_ONLY if it already matches. Set translationDeclinedByUser only for an explicit request not to translate. Do not add facts or sensitive details the user did not supply.