Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://api.authrice.com
Authorization not required, issuer https://api.authrice.com
Changed the definition of "open_hairdora"
OpenUseHairDorathisSalonwhenSchedulingsomeone wants to open HairDora and browseyourtheir salons, upcoming appointment previews, service prices and booking availabilityinteractively.inRead-only;ancannotinteractivebook,sidebar.cancelReturnsorupcharge.toThe100sidebar
Authorization not required, issuer https://api.authrice.com
Added "open_hairdora" (13 tools before, 14 now)
HairDora Salon Scheduling — Open HairDora Salon Scheduling to browse your salons, upcoming appointment previews, service prices and booking availability interactively. Read-only; cannot book, cancel or charge. The sidebar excludes client names, contact details and private notes.
Authorization not required, issuer https://api.authrice.com
Certificate recorded, valid to 2027-03-19
Authorization not required, issuer https://api.authrice.com
Changed the definition of "get_appointment", "get_client", "get_salon" and 10 more
Get appointment detailsFetchUseonethistenant-scopedwhenHairDorasomeone asks what services a specific appointmentbyincludes,antheir
Unknown → Live
First tool surface recorded: 13 tools (server version 0.1.1)
https://mcp.hairdora.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨5 unchanged words⟩ ,"properties":{"appointmentId":{"description":"AppointmentIdidofreturnedonebyappointment,list_appointmentsas the appointment list returns it (24 lowercase hex characters)","pattern": ⟨10 unchanged words⟩
⟨124 unchanged words⟩ :"object"},{"type":"null"}],"description":"One booking with up to 50 booked services and their prices; null when not found. Free-text notes, reminders, contact details, organization data and payment data are excluded."},"status":{"enum":["found", ⟨8 unchanged words⟩
⟨5 unchanged words⟩ false,"readOnlyHint":true,"title":"Get appointment details"}
Get client detailsFetch one tenant-scoped HairDora client by an id returned fromUselist_clients.thisReturnswhenonlysomeonetheasksdisplayaboutname,one salonreference, languageclient,andsuchlast-editastimetheirneededpreferredforlanguageclientorandwhichappointmentsalonworkflowtheychaining.belongEmail,to.phone,Returnsaddress,theoperatorclient'snotesname,service/color historysalon,organization data,language andother profile fields arelastexcluded.editClientstime.ownedNotbyforanothertheorganizationclient'sareemail,reportedphoneasornotbookingfound.history.
⟨5 unchanged words⟩ ,"properties":{"clientId":{"description":"ClientIdidofreturnedonebyclient,list_clientsas the client list returns it (24 lowercase hex characters)","pattern": ⟨10 unchanged words⟩
⟨58 unchanged words⟩ :"object"},{"type":"null"}],"description":"Name, salon, language and edit time only; null when not found. Email, phone, address, operator notes, service and colour history, organization data and other profile fields are excluded."},"status":{"enum":["found", ⟨8 unchanged words⟩
⟨5 unchanged words⟩ false,"readOnlyHint":true,"title":"Get client details"}
Get salon details and opening hoursFetch one tenant-scoped HairDora salon by an id returned from list_salons. ReturnsUsethethisbusinesswhenconfigurationsomeoneneededasks forscheduling: locale,onecurrency,salon'stimezone,openingcountryhours,appointment durationaddress,business contact/locationphone, website,and up to 14 opening-hour rows. Organization ids,timezonepaymentorconfiguration,defaultcredentials,appointmentintegrations,length.reminders,Returnsstaffthatdata,salon'sandbusinessinternalsettingsmetadatawithareupexcluded.toSalons14ownedopening-hourbyrows,anotherMondayorganizationfirst.areNotreportedforasfreenotbookingfound.slots.
⟨5 unchanged words⟩ ,"properties":{"salonId":{"description":"SalonIdidofreturnedonebyoflist_salonsthe user's salons, as the salon list returns it (24 lowercase hex characters)","pattern": ⟨10 unchanged words⟩
⟨18 unchanged words⟩ :"integer"},{"type":"null"}],"description":"Default appointment length in minutes"},"city":{"anyOf":[{"maxLength" ⟨115 unchanged words⟩ ,"type":"array"},"openingHoursTruncated":{"description":"True when the salon has more than 14 opening-hour rows","type":"boolean"},"phone":{"anyOf" ⟨64 unchanged words⟩ :"object"},{"type":"null"}],"description":"Business settings of the salon; null when not found. Organization ids, payment configuration, credentials, integrations, reminders, staff data and internal metadata are excluded."},"status":{"enum":["found", ⟨8 unchanged words⟩
⟨5 unchanged words⟩ false,"readOnlyHint":true,"title":"Get salon details and opening hours"}
GetFindsalonfreeavailabilityappointment slots
Summarize bookableUseavailabilitythisforwhenonesomeoneownedaskssalon.whenThetheirAPIhairfixessalonthehaswindowfreeatappointmenttomorrowslotsthroughor14thedaysnextout.opening. Returnsone safe summary, per day: date,slothowcount,manyfirstonline-bookingslot,slotsandarelastopenslot;plusittheneverfirstexposesstartwhoandoccupieslastunavailableendtimes.time,Thefortooltheprovesnexttenant14ownershipdaysbeforethatcallinghavetheopeningsotherwise-public(nobookingclientrouteorandstylistfailsnames).closedNot foranothermakingorganization.a booking.
⟨5 unchanged words⟩ ,"properties":{"salonId":{"description":"SalonIdidofreturnedonebyoflist_salonsthe user's salons, as the salon list returns it (24 lowercase hex characters)","pattern": ⟨10 unchanged words⟩
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"days":{"description":"One row per day with open online-booking slots inside the salon's booking window, in date order. Slot counts and times only; who holds a booked time is never exposed.","items":{"additionalProperties":false,"properties":{" ⟨19 unchanged words⟩ :"string"},{"type":"null"}],"description":"Start time of the first open slot that day"},"lastSlot":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"description":"End time of the last open slot that day"},"slotCount":{"maximum":1440,"minimum" ⟨26 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"GetFindsalonfreeavailabilityappointment slots"}
List salon appointments
ListUseathisboundedwhenpagesomeoneofasks how many appointmentsinarethebookedauthenticatedonuser'saorganization,daymostorrecentinstartatimeperiod,first.howReturnsmanyonlywerethecanceledappointmentoridno-shows,clientorandwhensalonareferencesclientneededisforbooked.safeReturnschaining,appointmentstimes,acrossandallstatus.theFree-textuser'snotessalons,reminders,orcontactjustdetailsone,organizationwithdataid,andclientpaymentanddetailssalonareids,excludedtimesserver-side.andOptionallystatusfilterforbyanysalonId,dateclientIdwindow,or a startTime/endTime window; results arelatestcappedfirst,byup`limit`to(default100.20,Notmaximumfor100)theandservices`hasMore`insidereportsantruncation.appointment.
⟨5 unchanged words⟩ ,"properties":{"clientId":{"description":"FilterOnlybyappointmentsaof this client, by an idreturnedfrombythelist_clientsclient list","pattern":"^[0-9a-f]{24}$" ⟨33 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybyappointmentsaat this salon, by an idreturnedfromby
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"appointments":{"description":"Bookings, latest start first. Free-text notes, reminders, contact details, organization data and payment details are excluded.","items":{"additionalProperties":false,"properties":{" ⟨86 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"List salon appointments"}
Listcalendarclosures,eventsdays off and blocked time
ListUseathisboundedwhenpagesomeoneofasksnon-appointmentwhencalendartheirblockssaloninistheclosedauthenticatedoruser'shasorganizationextra opening hours,earliestorstartwhentimeafirst.stylistTheseoreventschairexplainisclosuresblockedandforextra-openholidays,periodsvacations,thatsickappointmentsdays,alonetrainingcannotorreveal.meetings. Returnsonlyblocksid,andsalonextrareferenceopenings with salon, type, scope(CHAIR/PROVIDER/SALON), effect(BLOCK/OPEN), all-day flag,andtimes. Free-text titles andtimesnotes,forchairallids,salonsstaffunlessids,oneorganizationisdatagiven,and private reasons are excluded server-side. Optionallyearliestfilterfirstby(nosalonIdtitles ora startTime/endTimenotes).window;Not`hasMore`forreportsclienttruncation.appointments.
⟨38 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybyblocksafor this salon, by an idreturnedfrombythelist_salonsuser's salon list; every salon when absent","pattern":"^[0-9a-f]{24}$" ⟨20 unchanged words⟩
⟨11 unchanged words⟩ ,"type":"integer"},"events":{"description":"Closures, days off and extra openings, earliest first. Free-text titles and notes, chair ids, staff ids, organization data and private reasons are excluded.","items":{"additionalProperties":false,"properties":{" ⟨9 unchanged words⟩ :"string"},{"type":"null"}],"description":"BLOCK removes bookable time; OPEN adds hours on a normally closed time"},"endTime":{"anyOf":[{"maxLength" ⟨31 unchanged words⟩ :"string"},{"type":"null"}],"description":"SALON: the whole salon; PROVIDER: one or more stylists; CHAIR: one chair"},"startTime":{"anyOf":[{"maxLength" ⟨43 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"Listcalendarclosures,eventsdays off and blocked time"}
ListLook up salon clients
List aUseboundedthispagewhenofsomeoneclientsasksinwhothetheirauthenticatedclientsuser'sare,organization.orReturnsneedsonlya client id,displaytoname,looksalonupreferencethat person's appointments,andpaymentslast-editortimequotes.forReturnssafeupappointmenttoworkflow100chaining.clientsEmail,(20phone,byaddress,default)operatoracrossnotes,allservice/colorthehistoryuser's salons,organizationordatajust one,andwithotherid,profilename,fieldssalonareandexcludedlastserver-side.editOptionallytime,filterinbynosalonId;particularresultsorderareandcappedwithoutbya`limit`name(defaultsearch.20,Notmaximumfor100)aandclient's`hasMore`email,reportsphonetruncation.or notes.
⟨23 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybyclientsaof this salon, by an idreturnedfrombythelist_salonsuser's salon list; every salon when absent","pattern":"^[0-9a-f]{24}$" ⟨4 unchanged words⟩
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"clients":{"description":"Clients with the ids needed to look up their bookings, payments and quotes. Email, phone, address, operator notes, service and colour history, organization data and other profile fields are excluded.","items":{"additionalProperties":false,"properties":{" ⟨59 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"ListLook up salon clients"}
List salon payments
List a bounded pageUseofthisoperationalwhenpaymentsomeonerecordsasksinwhatthepaymentsauthenticatedtheiruser'ssalonorganizationtook,mostwhetherrecentafirst.clientReturnspaid,onlyorthehowpayment,muchclient,cameandinsalonoverreferencesaneededperiod.forReturnsworkflowpaymentchaining,recordstime,withamountid,currency,client andstatus. It cannotsalonchargeids,refunddate,transferamount,orcurrencyotherwiseandmovestatusfunds.forCardholderanydata,dateprocessor/customerwindowids,andcredentials,allerrors,salonsdiscounts,unlessstaffonecommissionissplitsgiven,operatornewestnotesfirst,and organization datauparetoexcluded100server-side.(noOptionallycardfilterdetails).byNotsalonId,forclientId,charging ortime window; `hasMore`refundingreportsatruncation.client.
⟨5 unchanged words⟩ ,"properties":{"clientId":{"description":"FilterOnlybypaymentsafrom this client, by an idreturnedfrombythelist_clientsclient list","pattern":"^[0-9a-f]{24}$" ⟨33 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybypaymentsaat this salon, by an idreturnedfromby
⟨14 unchanged words⟩ {"type":"boolean"},"payments":{"description":"Payment records, newest first; this tool cannot charge, refund or move funds. Cardholder data, processor and customer ids, credentials, errors, discounts, staff commission splits, operator notes and organization data are excluded.","items":{"additionalProperties":false,"properties":{" ⟨83 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"List salon payments"}
Listprovidersstylists who take appointments
ListUseupthistowhen100someoneproviderasksdisplaywhichnamesstylistsfororthehairdressersorganizationworkthatatownstheirasalonknownorsalon.canThebesourcebooked.routeReturnsisuppublic,toso100thehairdressertooldisplayfirstnamesprovesfrom thesalonorganizationbelongsthattoowns theauthenticated tenant and fails closed before calling it. Provider roles are organization-wide, not per-salon. Staffsalonids,(no contact details,avatar URLs, role records,or schedules, and organization data are excluded. Salons owned by another organization).areNotreportedforasstylists'notdaysfound.off.
⟨5 unchanged words⟩ ,"properties":{"salonId":{"description":"SalonIdidofreturnedonebyoflist_salonsthe user's salons, as the salon list returns it (24 lowercase hex characters)","pattern": ⟨10 unchanged words⟩
⟨14 unchanged words⟩ {"type":"boolean"},"providers":{"description":"Display names of organization members with the hairdresser role; roles are organization-wide, not per salon. Staff ids, contact details, avatar URLs, role records, schedules and organization data are excluded.","items":{"additionalProperties":false,"properties":{" ⟨26 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"Listprovidersstylists who take appointments"}
List client quotes
ListUseathisboundedwhenpagesomeoneofaskssalonabout price quotesingiventhetoauthenticatedsalonuser'sclients,organizationsuch as which are pending,mostapprovedrecentorfirst.rejected. Returnsonlyquotesthewithquoteid, client,and salonreferences needed for workflow chainingids, status(DRAFT/PENDING/REJECTED/APPROVED),andstartdatetime.forFree-textallnotes,salonsquotedunlesslineonedetails,isdiscountsgiven,contactnewestdetailsfirst,and organization data are excluded server-side. Optionally filterupbytosalonId,100;clientId,the status,or time window;filter`hasMore`appliesreportswithinwhetherthatthepage.boundedNotupstreamforwindowquotemayamountscontainormorelinerecords.items.
⟨5 unchanged words⟩ ,"properties":{"clientId":{"description":"FilterOnlybyquotesafor this client, by an idreturnedfrombythelist_clientsclient list","pattern":"^[0-9a-f]{24}$" ⟨33 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybyquotesafrom this salon, by an idreturnedfromby
⟨14 unchanged words⟩ {"type":"boolean"},"quotes":{"description":"Quotes, newest first. Free-text notes, quoted line details and amounts, discounts, contact details and organization data are excluded.","items":{"additionalProperties":false,"properties":{" ⟨67 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"List client quotes"}
List your salons
ListUseupthistowhen100someoneHairDoraasks which hair salonsintheytherunauthenticatedinuser'sHairDora,organization.orReturnsaonlysalon's id,display name,iscurrency,needed.defaultReturnslocale,upandtolast-edit100time.salonsContact,withaddressid,paymentname,organizationcurrency,and configuration fields aredefaultexcludedlanguagefromandthislastinventory;editcalltime.get_salonNot forone selecteda salon'soperationaladdress,configuration.phone`hasMore`orreportsopeningtruncation.hours.
⟨11 unchanged words⟩ ,"type":"integer"},"hasMore":{"description":"True when the organization has more than 100 salons","type":"boolean"},"salons":{"description":"Salons in the signed-in organization. Contact, address, payment, organization and configuration fields are excluded.","items":{"additionalProperties":false,"properties":{ ⟨58 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"List your salons"}
ListLookservicesup service prices
ListUse this when someone asks what their salon charges for aboundedcut,pagecolour,ofblow-dryservicesorofferedotheracrossservice,theorauthenticatedwhatuser'sservicesorganization.it offers. Returnsonlyservices with id, name, price,and salonreference. Internal metadataforandallorganizationtheirdatasalonsareunlessexcludedoneserver-side.isOptionallygiven,filter50 bysalonId; resultsdefaultareandcappedupbyto`limit`100.(defaultNot50,formaximumwhat100)aandparticular`hasMore`clientreportshadtruncation.done.
⟨23 unchanged words⟩ :"integer"},"salonId":{"description":"FilterOnlybyservicesaof this salon, by an idreturnedfrombythelist_salonsuser's salon list; every salon when absent","pattern":"^[0-9a-f]{24}$" ⟨4 unchanged words⟩
⟨14 unchanged words⟩ {"type":"boolean"},"services":{"description":"Services the salon offers, with prices. Internal metadata and organization data are excluded.","items":{"additionalProperties":false,"properties":{" ⟨10 unchanged words⟩ 200,"type":"string"},"price":{"description":"Price in the salon's currency","type":["number","null"]}," ⟨28 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"ListLookservicesup service prices"}
ShowHairDorasalon overview
RenderUseathisboundedwhentenant-scopedsomeoneoperationalwants a quick overviewfororadashboardsalonofidonereturnedhairbysalon.list_salons.ReturnsShowsanaggregateoverviewclient,cardupcoming-appointment,withandtheservicesalon'scountsdetails,plusasafeclientservicecount,andtheschedulenextpreviews.8Clientupcomingnames,appointmentscontactwithdetailstime,clientstatus andappointmentnumberids,ofnotesservices,organizationanddata,upstafftoids,12paymentservicesdata,withandpricesservice(nohistoryclientarenamesexcluded.or contact details). Not for one specific booking.
⟨3 unchanged words⟩ ,"properties":{"salonId":{"description":"HairDoraId of one of the user's salons, as the salonidlisttoreturnsrenderit (24 lowercase hex characters)","pattern":"^[0-9a-f]{24}$" ⟨6 unchanged words⟩
⟨14 unchanged words⟩ {"type":"boolean"},"appointments":{"description":"The next upcoming appointments, earliest first","items":{"additionalProperties":false,"properties":{" ⟨98 unchanged words⟩ :"object"},{"type":"null"}],"description":"Salon metadata; null when not found. The overview excludes client names, contact details, client and appointment ids, notes, organization data, staff ids, payment data and service history."},"serviceCount":{"maximum":12,"minimum" ⟨43 unchanged words⟩
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"ShowHairDorasalon overview"}