check_event_overlaps
ChatGPTConflict pre-check for booking writes. Returns bookings overlapping a specific employee+time window. Use ONLY immediately before create_booking or update_booking when scheduling a new/changed time. DO NOT call this for listing, viewing, searching, availability, services, customers, or stats queries — those are unrelated and have their own tools (list_events, get_available_slots, list_services, etc.).
create_booking
ChatGPTCreate a NEW booking/appointment. ONLY call this when the user explicitly asks to BOOK, SCHEDULE, MAKE, or RESERVE an appointment with concrete employee/service/customer/time details. NEVER call for read-only queries like 'show services', 'list bookings', 'show stats', 'what services do I offer' — those have dedicated tools (list_services, list_events, get_stats). Do not invent missing parameters. REQUIRES user confirmation before calling. Conflict detection runs automatically — if the time overlaps an existing booking the call fails with a OVERLAP_DETECTED warning.
create_unavailable_slot
ChatGPTCreate an unavailable booking slot (block/vacation). REQUIRES user confirmation.
create_user
ChatGPTCreate a customer. REQUIRES user confirmation before calling.
delete_booking
ChatGPTPermanently delete a booking. REQUIRES user confirmation. Irreversible. To cancel instead, use update_booking with status='cancelled'.
delete_employee
ChatGPTPermanently delete an employee. REQUIRES user confirmation. Irreversible.
delete_unavailable_slot
ChatGPTDelete an unavailable booking slot. REQUIRES user confirmation. Irreversible.
delete_user
ChatGPTPermanently delete a customer. REQUIRES user confirmation. Irreversible.
get_availability
ChatGPTGet a specific availability schedule by ID.
get_available_slots
ChatGPTGet available appointment time slots for a Calendesk service on a given date. Use this for ANY 'what time slots are available', 'when is X available to book', 'show me free times', 'what times can I book' query. Returns free slots considering existing bookings and employee schedules.
get_booking
ChatGPTGet booking details by ID.
get_employee
ChatGPTGet employee details by ID.
get_group_booking
ChatGPTGet group booking details (multiple slots).
get_me
ChatGPTGet the authenticated caller's identity: user.id, employee record (if staff with employee.id), timezone, locale, permissions. ALWAYS call this FIRST when the user says 'my', 'me', 'I', 'my events', 'my bookings', 'my schedule', 'my customers' — you need the returned ids to filter list_events/list_users/list_availability/etc. Returns {user:{id,name,...}, employee:{id,...} or null, permissions:[...]}. Cache the result for the rest of the conversation; you only need to call it once.
get_service
ChatGPTGet service details (duration, price, locations).
get_settings
ChatGPTGet detailed business settings (working hours, full configuration). Basic settings (company name, currency) and your profile (name, timezone, language, phone, email) are already in your context — do NOT call this tool for those.
get_stats
ChatGPTCalendesk business analytics, dashboard, KPIs, statistics, metrics, reports. Use this for ANY question about how the business is doing, dashboard, stats, analytics, revenue, totals, performance — e.g. 'show me my dashboard', 'how am I doing this month', 'business stats', 'show stats', 'show analytics', 'show metrics', 'show KPIs', 'monthly summary'. Default to type=dashboard for general queries. Use 'type' to select the report: dashboard (KPIs, revenue, bookings, cancellations), revenue (breakdown by source), bookings (counts by status, trends), employees (staff performance, utilization), services (popularity, revenue per service), customers (segments, top spenders, LTV), patterns (peak hours, busiest days), payments (transactions, providers), subscriptions (active count, renewal rate), locations (delivery type breakdown), products (sales analytics), forecast (revenue projections).
get_unavailable_slot
ChatGPTGet details of a single unavailable booking slot (block/vacation) by ID.
get_user
ChatGPTGet customer details by ID.
list_availability
ChatGPTCanonical tool for 'who works on day X', 'working hours', 'on shift', 'available today/now', 'kto pracuje dziś', 'dostępni dziś' — returns each employee's work-schedule rules (weekdays + hours). Use this (NOT list_employees, which is the unfiltered roster) for any day-based availability question. For 'my schedule', 'my hours' queries first call get_me, then pass employee_ids=<your employee.id>. For actual free booking slots, use get_available_slots.
list_employees
ChatGPTFull staff roster only — no date/schedule/availability filter applied. FORBIDDEN for 'who is working/available today/now', 'on shift', 'kto pracuje dziś', 'dostępni dziś' questions: use list_availability (work-schedule rules) for those. For vacation/blocked days use list_events(event_types="unavailable_booking_slot"). For free booking slots use get_available_slots.
list_events
ChatGPTList Calendesk calendar events for the authenticated tenant: bookings, unavailable slots (blocks/vacation), and group bookings. Use this for ANY 'show/list/what events|bookings|appointments|schedule|today's calendar|this week's calendar' query — e.g. 'show me all events for today', 'list bookings this week', 'what's on the calendar tomorrow'. Defaults to all events for the tenant; pass event_date_from/event_date_to to filter by date and event_types to filter by type.
list_products
ChatGPTList products available for sale. Paginated.
list_service_types
ChatGPTList service categories.
list_services
ChatGPTList the catalog of services offered by the business (name, price, duration, locations, variants). Use this for ANY question that asks what services exist, what the business offers, or to enumerate services — e.g. 'what services do I offer', 'what do you offer', 'list services', 'show services', 'show me my services'. Returns the full service catalog.
list_tags
ChatGPTList all tags for customers and bookings.
list_user_groups
ChatGPTList all customer groups.
list_users
ChatGPTList customers with optional filters. Paginated with total count in meta.
search_users
ChatGPTSearch Calendesk customers by name, email, or phone. Use this for ANY 'find/search/look up customers|clients|users' query — e.g. 'find customers named Jan', 'search for customer John Smith', 'look up clients with this email'. Returns matching customer records with IDs, names, emails, phones. Use only when user_id is unknown; otherwise use get_user.
send_notification
ChatGPTSend email/SMS/push to employees or customers. REQUIRES: 1) identify recipient, 2) draft message, 3) wait for explicit user confirmation, 4) then call. For self, use get_me first for employee_id.
update_booking
ChatGPTUpdate a booking. REQUIRES user confirmation. Conflict detection runs automatically when the time changes — if the new slot overlaps another booking the call fails with a OVERLAP_DETECTED warning.
update_unavailable_slot
ChatGPTUpdate an unavailable booking slot. REQUIRES user confirmation.
update_user
ChatGPTUpdate customer info. REQUIRES user confirmation before calling.