create_preliminary_booking
ChatGPTCreate a preliminary, non-binding booking request ('طلب حجز مبدئي') for one Live-available unit. NEVER call this from a question, a search, or an exploration turn. Call it only after: (1) get_unit_details re-verified the unit Live, (2) you showed the user the full summary (project, unit code, type, bedrooms, area, current price, availability), and (3) the user gave one explicit confirmation and explicit consent to share their name, email and phone with the developer. There is no payment. The engine re-verifies availability and price again before writing and refuses if either changed. On success it returns the real booking_ref with status pending_developer_confirmation.
get_booking_status
ChatGPTLook up the current status of one preliminary booking request by its booking reference (e.g. OP-20260910-XXXXXX). Statuses: pending_developer_confirmation, confirmed, unavailable, expired. Ownership is enforced server-side: a user can only see their own requests. Read-only.
get_project
ChatGPTFetch full verified metadata for one off-plan project by its Off Plan project id (as returned by search_projects — matches the site router). Returns a stable, versioned payload with regulatory data, activation status, marketing description, pricing, media links, unit summary, other projects by the same developer, schema.org JSON-LD, and response_guidance for assistants formatting the answer. Read-only, public data only.
get_unit_details
ChatGPTFetch one specific unit by project id + unit code and re-verify its availability and current price Live against the developer's own source. Call this immediately before asking the user to confirm a preliminary booking request, and show the returned summary (project, unit code, type, bedrooms, area, current price, availability) verbatim. If the Live source is unreachable, say the current price/availability cannot be verified and do not proceed to booking. Read-only.
list_booking_projects
ChatGPTList the Off Plan projects that currently support a preliminary booking request ('طلب حجز مبدئي') with Live availability read from the developer's own source. Use this first to resolve the exact project id before calling search_available_units. Read-only. Returns no stock counts and no prices — those require a Live query.
search_available_units
ChatGPTSearch units that are available right now for a preliminary booking request, read Live from the developer's own inventory source (never from the static registry or project_units). Filter by project, bedrooms, price range, unit type and area. Always state that availability and price are Live at query time and can change. Read-only — this never creates a booking.
search_projects
ChatGPTSearch the Off Plan Saudi real-estate registry by free-text query, city, developer name, or REGA license number. Handles Arabic/English spelling variants and common transliteration differences (v↔f, y↔i, ph→f, أ/إ/آ→ا, ة→ه, ى→ي, ڤ→ف) plus curated aliases per project. Only returns projects that have a real, resolvable page on offplan.sa (mirrored from the site registry into public_project_registry). For ambiguous queries, returns the closest matches instead of an empty list. Read-only, public data only.