MCP App Store
by KeenEthics
Business & Operations
Icelook icon

Icelook

by Icelook Ltd

Overview

Icelook connects clients with independent beauty specialists — nail techs, lash and brow artists, hairdressers, and makeup artists. Book the specialist, not the salon. Clients can check a specialist's real availability, book an appointment, and reschedule or cancel it — all in chat. Specialists can review their day, manage bookings, clients, and services, and check how their business is doing. Every booking action confirms the details first, and nothing on your calendar is ever changed silently.

Tools

book_appointment

ChatGPT
Book a beauty appointment for the user with a specialist: exact nickname, services (by id or exact name), date, startTime (a time check_availability returned; specialist's timezone). Optional notes carry a message to the specialist. Current live prices apply — confirm services, total price, date and time with the user BEFORE calling. A 'pending' result awaits the specialist's approval — say it is not confirmed yet. Bookings are for the user's own account only (no booking for companions).

book_client_appointment

ChatGPT
Book an immediately-CONFIRMED appointment for an existing client of the specialist (clientId from find_client) — for requests arriving by text or phone. Services by id or exact name from the specialist's own menu; date and startTime (30-minute grid, specialist's timezone). The specialist's own bookings skip the rest buffer and lead time — only real overlaps fail (the error lists still-free times). Optional clampedDurationMinutes squeezes into a tighter window at full price — only when the specialist says they can work faster. To MOVE an appointment use reschedule_appointment; for a walk-in with no record use book_guest_appointment.

book_guest_appointment

ChatGPT
Book a walk-in — anyone without an Icelook account or client record — on the specialist's own calendar: creates a 'Guest #N' contact and an immediately-CONFIRMED appointment in one step (no notifications sent). Same rules as book_client_appointment; if the person IS in the roster use book_client_appointment instead — never create a guest duplicate.

cancel_my_appointment

ChatGPT
Cancel an appointment the user booked as a client (id from get_my_appointments). A pending request is withdrawn silently; a confirmed appointment REQUIRES reason plans_changed | got_sick | other (reasonDetails exactly with 'other') — ask the user which applies. The specialist is notified. To cancel on the user's OWN specialist calendar use respond_to_appointment action 'cancel'.

check_availability

ChatGPT
Find a specialist's free bookable start times for one or more services (exact nickname; services by id or exact name; durations sum into one visit). Scans up to 14 days from dateFrom (default today). Times are HH:MM in the SPECIALIST'S timezone — resolve 'today'/'tomorrow'/weekdays from the returned 'today' and 'weekday' fields, never by your own calendar math. Returned times are exactly what book_appointment accepts. For price/menu questions without a time component use get_specialist_menu.

create_review

ChatGPT
Publish the user's review of a COMPLETED appointment (id from get_my_appointments): rating 1-5 stars, optional public comment. Allowed once per appointment, within 3 days after it ends. It cannot be edited or deleted — confirm the rating and exact wording with the user first.

create_services

ChatGPT
Add new services — and service groups — to the specialist's own menu / price list: 'create group Nails with manicure 500' is one direct call with groupName and that service. groupName reuses an existing group or creates a new one (omit for ungrouped). Each service needs name, priceCents (the quoted price in integer cents: 500 → 50000), and durationMinutes (ask if not given). Live on the booking menu immediately; partial success reported per service.

delete_service

ChatGPT
Remove ONE service from the specialist's own menu (by id or exact name). No longer bookable; existing appointments keep their booked values. Cannot be undone — make sure the user named the right service.

delete_service_group

ChatGPT
Remove ONE service group from the specialist's own menu (by id or exact name). deleteServices required: true also deletes the services inside, false keeps them ungrouped — infer it from the user's words ('keep the services' = false), ask only if unsaid. Cannot be undone.

delete_working_day

ChatGPT
Close ONE working day on the specialist's own calendar entirely — the date becomes a day off (one call per date). If appointments are booked, deleting CANCELS them and notifies every client, and then REQUIRES reason: got_sick | schedule_changed | other (+reasonDetails) — ask the user before proceeding. To merely change hours use update_working_day. To know who is affected, read the day with get_my_schedule BEFORE deleting.

find_client

ChatGPT
Search the specialist's own client roster by name substring (omit 'query' to list everyone, most recently active first). Returns each client's id — the handle get_client_details, book_client_appointment and set_client_notes take. Blocked clients are not listed.

get_appointment_history

ChatGPT
Event timeline of ONE appointment on the specialist's own calendar (id from get_my_schedule or get_client_details): who accepted/cancelled/moved it and when, old and new times of reschedules, reminders sent, the client's review. Only for questions about past changes — current state comes from get_my_schedule. For the user's own booking with another specialist use get_my_appointment_history.

get_business_analytics

ChatGPT
Business analytics for the specialist's own practice — earnings/revenue, appointment totals, client loyalty, review trend, schedule utilization (pick 'areas'; default all). Derive 'period' from the question: a named month → 'custom' with dateFrom/dateTo (the response includes the preceding window for comparison). 'today' works on every plan; other periods need a paid plan — the error names the tier. Money is integer cents. For one client's lifetime stats use get_client_details.

get_client_details

ChatGPT
Everything about one client of the specialist (clientId from find_client): private notes, blocked status, lifetime stats (total paid, visit count, first/last visit), pending booking requests, upcoming and recent past appointments, most-used services. Times in the specialist's timezone; money integer cents.

get_my_appointment_history

ChatGPT
Event timeline of ONE appointment the user booked as a client (id from get_my_appointments): who confirmed/cancelled/moved it and when, old and new times of reschedules, reminders sent, the review. Only for questions about past changes — current state comes from get_my_appointments.

get_my_appointments

ChatGPT
List the beauty appointments the user booked as a client: all upcoming first (pending or confirmed), then past, newest first; page with pagination.nextCursor and filter rows yourself (no status filter). Times are local to each specialist's timezone; prices integer cents. Row ids feed cancel_my_appointment, reschedule_my_appointment, set_appointment_reminder, and get_my_appointment_history. For the user's own specialist calendar use get_my_schedule instead.

get_my_reviews

ChatGPT
The reviews clients left on the specialist's own profile, with texts, newest first, 20 per page. For aggregate numbers over a period use get_business_analytics area 'reviews'.

get_my_schedule

ChatGPT
The specialist's own beauty-booking calendar. For the next/earliest scheduled working day on or after today, use period 'next_working_day' and OMIT dateFrom/dateTo: Icelook resolves the specialist's local today, includes today even after closing, and returns only the earliest working day within the next 3 months. Do not calculate a date range for this request. For multi-day or explicit-date calendars, use period 'range' (the default; a month from local today unless dates are supplied, max 3 months; past dates work). Returns hours, breaks, appointments (client, services, time, price, status, note), pending counts, and cancelled/rejected bookings separately. Times are local HH:MM; use returned today/timezone, never the device's calendar date. In range mode, missing dates within the returned range are days off. Beauty practice only, never the user's general/work calendar. Appointment ids feed respond_to_appointment, reschedule_appointment, get_appointment_history.

get_my_services

ChatGPT
The specialist's own price list as clients see it: groups and services with ids, prices (integer cents), durations — plus nickname, bio, address, contacts, and booking policy. Ids and exact names feed update_service, delete_service, and book_client_appointment. Read this before bulk edits.

get_specialist_menu

ChatGPT
A specialist's public profile by exact nickname, without an availability scan: bio, rating, salon address, contacts (instagram, phones, telegram, whatsapp, viber), booking policy, and the full service menu with prices (integer cents) and durations. Use for any price/menu/address/contact question; for free TIMES use check_availability.

get_specialist_reviews

ChatGPT
Read a specialist's public reviews with their texts (exact nickname), newest first, 20 per page. For just the average rating get_specialist_menu is enough.

list_my_specialists

ChatGPT
List the specialists the user saved as favorites: nickname (the handle other tools take), name, rating. Use first when the user refers to a specialist loosely ('my nail tech'). There is no public search — if someone is not listed, ask for their exact nickname instead of guessing.

rename_service_group

ChatGPT
Rename ONE service group on the specialist's own menu (group by id or exact name). The services inside are unchanged.

reschedule_appointment

ChatGPT
Move a CONFIRMED appointment on the specialist's OWN calendar to a new date/startTime (30-minute grid, own timezone; services, price and confirmed status stay; the client is notified). ALWAYS use this to move — never cancel and rebook. The specialist's own moves skip the rest buffer; only real overlaps or outside-hours fail. Optional clampedDurationMinutes squeezes into a tighter window at full price — only when the specialist says they can work faster. The user's own booking with another specialist moves via reschedule_my_appointment.

reschedule_my_appointment

ChatGPT
Move a CONFIRMED appointment the user booked as a client to a new date/startTime (specialist's timezone; verify the slot with check_availability first; services stay the same). May return to 'pending' if the specialist approves manually — tell the user. To move an appointment on the user's OWN specialist calendar use reschedule_appointment.

respond_to_appointment

ChatGPT
Act on an appointment on the specialist's OWN calendar (id from get_my_schedule or get_client_details): accept or reject a PENDING request; complete, no_show, or cancel a CONFIRMED one (complete/no_show only after its start time). cancel REQUIRES reason: got_sick | schedule_changed | other (+reasonDetails) — ask the user which. The client is notified. To MOVE an appointment use reschedule_appointment — never cancel and rebook. For the user's own booking with another specialist use cancel_my_appointment.

set_appointment_reminder

ChatGPT
Set, change, or remove the push reminder for an upcoming appointment of the user (id from get_my_appointments). minutesBefore: 15, 30, 60, 120, 1440 (24h) or 2880 (48h) before start — pick the closest and tell the user; null removes the reminder.

set_client_notes

ChatGPT
Set the specialist's PRIVATE notes on one of their clients (clientId from find_client). REPLACES the existing note — to append, read current notes via get_client_details first; null clears. The client never sees them.

set_favorite

ChatGPT
Add (favorite true) or remove (false) a specialist by exact nickname in the user's saved favorites — the list list_my_specialists returns.

set_working_days

ChatGPT
Open NEW working days on the specialist's own calendar, 1-365 per call: date, startTime/endTime (30-minute grid; endTime may be 24:00), optional breaks (don't invent unasked ones). Today or later only. Dates that already have a working day are SKIPPED, never overwritten — edit those with update_working_day.

update_bio

ChatGPT
Set the bio on the specialist's own public profile (max 128 chars; null clears). Use the user's wording verbatim unless they ask for help. Phones, addresses and social handles never go in the bio — use update_contact_details.

update_booking_policy

ChatGPT
Change how clients may book the specialist: requiresApproval (true = bookings arrive as pending requests), minLeadTimeMinutes (how far in advance clients must book), bufferTimeMinutes (rest kept free after each appointment). Binds client bookings only — the specialist's own booking tools bypass both. Future bookings only.

update_contact_details

ChatGPT
Update only the named contact fields on the specialist's own public profile: instagram, telegram, phoneNumber/2/3 (international format), whatsapp, viber, rawAddress (workplace address). Omitted fields keep their value; null is IGNORED, not an erase — to erase, list field names in 'clear'. Handles and numbers may be pasted as dictated; they are normalized. Check which phone slots are taken via get_my_services before adding, or an existing number is overwritten.

update_service

ChatGPT
Change name, priceCents (the quoted price in integer cents: 650 → 65000), durationMinutes, description, and/or group of ONE service on the specialist's own menu (service by id or exact name; group must already exist, null ungroups). Applies to future bookings only. Removing entirely = delete_service.

update_working_day

ChatGPT
Edit ONE existing working day on the specialist's own calendar: change hours (startTime AND endTime together) and/or addBreaks / removeBreaks (by break start time). Provide only what the user asked to change. Shrinking hours fails if booked appointments would fall outside — move them first. Past days can't be edited. No working day yet → set_working_days; closing the day → delete_working_day.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

35

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily