accept_plan_price
ChatGPTNeeds the customer's connected LUMINA account. For a plan waiting for the customer to accept a new price (get_my_plan shows pendingPriceChange: old and new price, from when): accepts it like My bookings, so the plan continues and LUMINA charges the card before each visit at the new price. Only after you explained the change and the customer clearly said yes. Needs permission to pay and a new price within the customer's per-booking limit; otherwise returns customer_action_required with a link for the customer.
add_saved_address
ChatGPTNeeds the customer's connected LUMINA account. Saves a new address in the customer's account, checked like the site (service area, remote-area fee). Confirm the full address and the map location with the customer first. The coordinates must be the customer's own shared or confirmed location of the building entrance, never a search result. Returns the saved address (addressId) for find_cleaning_times, or status outside_service_area.
cancel_booking
ChatGPTNeeds the customer's connected LUMINA account. Cancels a visit (or skips one plan visit) exactly like My bookings, with the same refund, fee and notices. Only after you explained it and the customer clearly said yes. Send the previewToken, expectedVersion, confirmedRefundMinor and confirmedFeeMinor from preview_booking_cancellation; if they no longer match you get an error and must preview again. When part of the refund is a card refund, the customer must choose card or Wallet (refundDestination). Returns the updated booking.
check_dubai_coverage
ChatGPTCheck whether a location (latitude and longitude of the customer’s building) is inside LUMINA’s Dubai service area.
checkout_cleaning_order
ChatGPTNeeds the customer's connected LUMINA account. Only after the customer clearly agreed to the price (including any Wallet credit used), time, address and cancellation terms: holds the visit from prepare_cleaning_order and, when paymentMethodId is given and the customer allowed payments, charges that saved card now, up to their per-booking limit (and at most 3 card payments in 24 hours). For a weekly or fortnightly plan also send recurringConsent true and confirmedPlanPerVisitMinor (the plan's price per visit): the first visit is charged now; for a plan 2 or 3 times a week, LUMINA charges the other first-week visits within hours; after that LUMINA charges the same card about chargeBeforeEachVisitHours before each visit, like a plan booked on the website. The plan keeps running if the assistant is disconnected; the customer can pause or end it any time in My bookings. The per-booking limit covers the amount charged now and each plan visit; the 24-hour limits count only the payment made now. Send confirmedTotalMinor, the total the customer agreed to; if the price changed you get an error with the new total to show them. Results: confirmed (paid and booked); processing (check get_cleaning_order); details_required (the customer adds an email or phone at manageUrl); plan_limit_reached (they already have a plan); or payment_required with a payUrl the customer opens to pay on LUMINA. A pay link holds the time only for a few minutes (holdExpiresAt). After a declined card don't retry with another saved card: give the customer payUrl. Reuse the same idempotencyKey when retrying: a retry never charges twice.
create_booking_link
ChatGPTCreate a public booking link with the home size and frequency preselected. For a fully prepared visit use find_cleaning_times and prepare_cleaning_order; browser agents may use the normal form with customer approval.
edit_saved_address
ChatGPTNeeds the customer's connected LUMINA account. Replaces a saved address with the complete new details, like the site. Confirm the full address and the map location with the customer first; coordinates must be the customer's own. Visits already booked keep the address they were booked with; the result says which visits and plans use it.
estimate_cleaning_price
ChatGPTEstimate the price of one LUMINA cleaning visit in Dubai from a home size, or from hours and cleaners, with how often and whether LUMINA brings supplies. Returns a price breakdown and a prefilled booking link.
find_cleaning_times
ChatGPTFind live LUMINA cleaning appointments in Dubai. With the customer's connected LUMINA account: give addressId (a saved address from get_my_lumina_account), selection and dates. Works for one-off visits and for weekly or fortnightly plans; for a weekly plan 2 or 3 times a week, pick the extra days from the same results (see nextAction). With a registered integration Bearer key instead: supply the customer's complete service address, their explicitly confirmed coordinates, selection and date range. Never guess a location or represent a Google search result as customer-supplied coordinates. To check another date for the same visit, supply bookingSession and dates only. Stores a temporary address check, but does not hold capacity or charge anyone. Dates use Asia/Dubai; maximum seven calendar days per request.
find_reschedule_times
ChatGPTNeeds the customer's connected LUMINA account. Live times the customer can move a booked visit (including a plan visit) to, for the same address and team size, plus the booking's expectedVersion. Dates use Asia/Dubai; up to seven days per call.
get_booking_invoice
ChatGPTNeeds the customer's connected LUMINA account. The invoice for a paid visit as data (number, date, lines in English and Arabic, VAT, totals, payments, refunds, card receipt links) plus invoiceUrl, the printable invoice you can open for 5 minutes.
get_booking_photos
ChatGPTNeeds the customer's connected LUMINA account. The photos the customer sees for a visit (before, after, issues, checklist proof), each with a link you can open for about 5 minutes.
get_cleaning_order
ChatGPTRead payment and booking lifecycle status using the orderToken from prepare_cleaning_order. Tokens work for this single order for 30 days. Returns no customer contact details, access notes, address, account data or payment secrets. Only confirmed=true establishes a confirmed visit. Keep tokens private and poll at most once per 15 seconds.
get_lumina_cleaning_service
ChatGPTDescribe LUMINA’s home cleaning service in Dubai: live prices in AED (first hour and later hours per cleaner, price per visit by home size), visit lengths, service hours, what’s included, cancellation, payment, the Dubai communities covered and booking links. Use first for any question about home cleaning, maids or cleaners in Dubai.
get_my_booking
ChatGPTNeeds the customer's connected LUMINA account. Everything the customer sees for one visit: address with unit and access details, notes, team, price lines, discount and Wallet use, payment and refund status, and what they can still change or cancel. For the invoice use get_booking_invoice and for photos get_booking_photos: they return links you can open.
get_my_lumina_account
ChatGPTNeeds the customer's connected LUMINA account (OAuth). You act for this signed-in customer and see their whole account, as they see it in the app: profile (name, email, phone, verified WhatsApp, language, privacy and marketing choices), saved addresses with every field (unit, floor, landmark, how the cleaner gets in, access or keybox code, map pin), saved cards (paymentMethodId, brand, last 4 digits, expiry, funding, country, which plan uses it), Wallet balance, regular plans (next 5 visits each), the next 10 upcoming bookings, whether you may pay and up to how much, and whether contact details are complete (readyToBook). Use list_my_bookings, get_my_booking, get_my_plan and get_my_wallet for more. Don't share any of it with anyone else.
get_my_plan
ChatGPTNeeds the customer's connected LUMINA account. A weekly or fortnightly plan as the customer sees it: frequency, days and times, price per visit, the card it charges (brand and last 4 digits), status and next visits. includePastVisits adds earlier visits (pastVisitsLimit 1 to 50, pastVisitsCursor for more).
get_my_wallet
ChatGPTNeeds the customer's connected LUMINA account. Wallet balance (promotional and refund credit), expiry and the history of credits and uses, as the customer sees it. Pass the returned cursor for older entries.
list_my_bookings
ChatGPTNeeds the customer's connected LUMINA account. The customer's visits as their My bookings page shows them: reference, status, payment status, times, address, team, price and plan. filter is all (default), upcoming or history; limit is 1 to 50 (default 10); pass nextCursor as cursor for the next page.
list_preferred_cleaners
ChatGPTNeeds the customer's connected LUMINA account. Cleaners who have cleaned for this customer, as the booking form lists them: id, first name, rating and when they last came. Use an id as selection.preferredCleanerId in find_cleaning_times.
manage_plan
ChatGPTNeeds the customer's connected LUMINA account. Pauses, ends or resumes a regular plan exactly like My bookings. Only after you explained it and the customer clearly said yes. pause/end: send previewToken, expectedVersion and confirmedRefundMinor from preview_plan_change (refundDestination wallet optional). resume (needs permission to pay and a price per visit within the customer's limit, else you get customer_action_required with a link for the customer): send expectedVersion, settingsVersionId, confirmedTotalMinor (the price per visit) and recurringConsent true (LUMINA charges the card before each visit again). Returns the updated plan.
prepare_cleaning_order
ChatGPTPrepare an authoritative, itemized cleaning quote for the customer's chosen live slot. Needs bookingSession, slotToken and idempotencyKey, and either an integration Bearer key or the customer's connected LUMINA account. Reuse the same key for retries with identical details. With an integration key it returns a secure hosted checkout URL. With a connected account it also takes extraSlotTokens for a weekly plan 2 or 3 times a week and returns plan details for plans; show the customer the total, time, address and cancellation terms (for a plan also the price per visit, how often, that the card is charged before each visit and that they can pause or end it any time in My bookings), get their clear OK, then call checkout_cleaning_order with the orderToken. This does not reserve capacity, create a confirmed booking or charge a card. Never send card data or passwords here.
preview_booking_cancellation
ChatGPTNeeds the customer's connected LUMINA account. What cancelling a visit (or skipping one visit of a regular plan, action skip) would do, exactly as My bookings shows it: whether it's allowed, the refund (card and Wallet parts), any fee (feeMinor, only when one applies) and a previewToken valid for a few minutes. Changes nothing.
preview_plan_change
ChatGPTNeeds the customer's connected LUMINA account. What pausing or ending a regular plan would do (visits cancelled, paid visits kept, refunds, previewToken), or the price and terms for resuming it, as My bookings shows. Changes nothing. To skip one visit, call preview_booking_cancellation with action skip first, then cancel_booking.
preview_reschedule
ChatGPTNeeds the customer's connected LUMINA account. Holds the chosen new time for a few minutes and returns the price change (priceChangeMinor: more, less or the same) and terms, like My bookings. The visit itself doesn't change until reschedule_booking.
reschedule_booking
ChatGPTNeeds the customer's connected LUMINA account. Moves the visit to the time from preview_reschedule, exactly like My bookings. Only after you explained it and the customer clearly said yes. confirmedPriceChangeMinor must equal priceChangeMinor. A cheaper time is refunded after it's confirmed. If it costs more, the visit keeps its old time until the extra is paid: with paymentMethodId and the customer's permission to pay, the saved card is charged now (same per-booking and 24-hour limits as bookings); otherwise you get payment_required with a payUrl the customer opens signed in to LUMINA before holdExpiresAt. After a declined card don't retry with another saved card. Returns the updated booking.