HairDora Salon Scheduling
Was dieses MCP kann
Reviews tenant-scoped salon clients, appointments, availability, services, quotes, providers, calendar blocks, and payment records without performing payment actions.
Tools
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['appointmentId'], 'properties': {'appointmentId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Id of one appointment, as the appointment list returns it (24 lowercase hex characters)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'appointment'], 'properties': {'status': {'enum': ['found', 'not-found'], 'type': 'string'}, 'appointment': {'anyOf': [{'type': 'object', 'required': ['id', 'clientId', 'salonId', 'startTime', 'endTime', 'status', 'serviceCount', 'servicesTruncated', 'services'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'status': {'anyOf': [{'enum': ['SCHEDULED', 'CLIENT_ARRIVED', 'NO_SHOW', 'CANCELED'], 'type': 'string'}, {'type': 'null'}]}, 'endTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'clientId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'services': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'price'], 'properties': {'id': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'name': {'type': 'string', 'maxLength': 200}, 'price': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'maxItems': 50}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'serviceCount': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'servicesTruncated': {'type': 'boolean'}}, 'additionalProperties': False}, {'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.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['clientId'], 'properties': {'clientId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Id of one client, as the client list returns it (24 lowercase hex characters)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'client'], 'properties': {'client': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'salonId', 'language', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'language': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, {'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', 'not-found'], 'type': 'string'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['salonId'], 'properties': {'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's salons, as the salon list returns it (24 lowercase hex characters)"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'salon'], 'properties': {'salon': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'timezone', 'countryCode', 'firstDayOfTheWeek', 'appointmentDuration', 'phone', 'street', 'city', 'state', 'postalCode', 'website', 'openingHours', 'openingHoursTruncated'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'city': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'name': {'type': 'string', 'maxLength': 200}, 'phone': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'state': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'street': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'website': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'postalCode': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'countryCode': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{2}$'}, {'type': 'null'}]}, 'openingHours': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'open', 'close'], 'properties': {'day': {'anyOf': [{'enum': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 'type': 'string'}, {'type': 'null'}]}, 'open': {'anyOf': [{'type': 'string', 'pattern': '^\\d{1,2}:\\d{2}$'}, {'type': 'null'}]}, 'close': {'anyOf': [{'type': 'string', 'pattern': '^\\d{1,2}:\\d{2}$'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 14}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}, 'firstDayOfTheWeek': {'anyOf': [{'enum': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 'type': 'string'}, {'type': 'null'}]}, 'appointmentDuration': {'anyOf': [{'type': 'integer', 'maximum': 1440, 'exclusiveMinimum': 0}, {'type': 'null'}], 'description': 'Default appointment length in minutes'}, 'openingHoursTruncated': {'type': 'boolean', 'description': 'True when the salon has more than 14 opening-hour rows'}}, 'additionalProperties': False}, {'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', 'not-found'], 'type': 'string'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['salonId'], 'properties': {'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's salons, as the salon list returns it (24 lowercase hex characters)"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'slotCount', 'firstSlot', 'lastSlot'], 'properties': {'day': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}]}, 'lastSlot': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}], 'description': 'End time of the last open slot that day'}, 'firstSlot': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}], 'description': 'Start time of the first open slot that day'}, 'slotCount': {'type': 'integer', 'maximum': 1440, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 14, '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."}, 'status': {'enum': ['found', 'salon-not-found', 'no-availability'], 'type': 'string'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of appointments to return (default 20, maximum 100)', 'exclusiveMinimum': 0}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'Only appointments ending before this ISO 8601 time'}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only appointments at this salon, by an id from the user's salon list; every salon when absent"}, 'clientId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only appointments of this client, by an id from the client list'}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Only appointments starting at or after this ISO 8601 time'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['appointments', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'appointments': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'clientId', 'salonId', 'startTime', 'endTime', 'status'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'status': {'anyOf': [{'enum': ['SCHEDULED', 'CLIENT_ARRIVED', 'NO_SHOW', 'CANCELED'], 'type': 'string'}, {'type': 'null'}]}, 'endTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'clientId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Bookings, latest start first. Free-text notes, reminders, contact details, organization data and payment details are excluded.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of calendar events to return (default 20, maximum 100)', 'exclusiveMinimum': 0}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'Only events ending before this ISO 8601 time'}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only blocks for this salon, by an id from the user's salon list; every salon when absent"}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Only events starting at or after this ISO 8601 time'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['events', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'events': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'salonId', 'type', 'scope', 'effect', 'allDay', 'startTime', 'endTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'type': {'anyOf': [{'enum': ['COURSE', 'MEETING', 'VACATION', 'SICK', 'HOLIDAY', 'MAINTENANCE', 'OTHER'], 'type': 'string'}, {'type': 'null'}]}, 'scope': {'anyOf': [{'enum': ['CHAIR', 'PROVIDER', 'SALON'], 'type': 'string'}, {'type': 'null'}], 'description': 'SALON: the whole salon; PROVIDER: one or more stylists; CHAIR: one chair'}, 'allDay': {'type': 'boolean'}, 'effect': {'anyOf': [{'enum': ['BLOCK', 'OPEN'], 'type': 'string'}, {'type': 'null'}], 'description': 'BLOCK removes bookable time; OPEN adds hours on a normally closed time'}, 'endTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, '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.'}, 'hasMore': {'type': 'boolean'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of clients to return (default 20, maximum 100)', 'exclusiveMinimum': 0}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only clients of this salon, by an id from the user's salon list; every salon when absent"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['clients', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'clients': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'salonId', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, '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.'}, 'hasMore': {'type': 'boolean'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of payments to return (default 20, maximum 100)', 'exclusiveMinimum': 0}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'Only payments ending before this ISO 8601 time'}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only payments at this salon, by an id from the user's salon list; every salon when absent"}, 'clientId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only payments from this client, by an id from the client list'}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Only payments starting at or after this ISO 8601 time'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['payments', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'payments': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'clientId', 'salonId', 'startTime', 'amount', 'currency', 'status'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'amount': {'type': ['number', 'null']}, 'status': {'anyOf': [{'enum': ['CANCELED', 'FAILED', 'SUCCEEDED'], 'type': 'string'}, {'type': 'null'}]}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'clientId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, '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.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['salonId'], 'properties': {'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's salons, as the salon list returns it (24 lowercase hex characters)"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'providers', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'status': {'enum': ['found', 'salon-not-found'], 'type': 'string'}, 'hasMore': {'type': 'boolean'}, 'providers': {'type': 'array', 'items': {'type': 'object', 'required': ['displayName'], 'properties': {'displayName': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'maxItems': 100, '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.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of quotes to return (default 20, maximum 100)', 'exclusiveMinimum': 0}, 'status': {'enum': ['DRAFT', 'PENDING', 'REJECTED', 'APPROVED'], 'type': 'string', 'description': 'Only quotes with this status: DRAFT, PENDING, REJECTED or APPROVED. Applied within the fetched page of newest quotes'}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'Only quotes ending before this ISO 8601 time'}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only quotes from this salon, by an id from the user's salon list; every salon when absent"}, 'clientId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only quotes for this client, by an id from the client list'}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Only quotes starting at or after this ISO 8601 time'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['quotes', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'quotes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'clientId', 'salonId', 'status', 'startTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'status': {'anyOf': [{'enum': ['DRAFT', 'PENDING', 'REJECTED', 'APPROVED'], 'type': 'string'}, {'type': 'null'}]}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'clientId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Quotes, newest first. Free-text notes, quoted line details and amounts, discounts, contact details and organization data are excluded.'}, 'hasMore': {'type': 'boolean'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['salons', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'salons': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Salons in the signed-in organization. Contact, address, payment, organization and configuration fields are excluded.'}, 'hasMore': {'type': 'boolean', 'description': 'True when the organization has more than 100 salons'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of services to return (default 50, maximum 100)', 'exclusiveMinimum': 0}, 'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Only services of this salon, by an id from the user's salon list; every salon when absent"}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['services', 'count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'services': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'price', 'salonId'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'price': {'type': ['number', 'null'], 'description': "Price in the salon's currency"}, 'salonId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Services the salon offers, with prices. Internal metadata and organization data are excluded.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['salonId'], 'properties': {'salonId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's salons, as the salon list returns it (24 lowercase hex characters)"}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['salon', 'clientCount', 'clientCountIsLowerBound', 'appointmentCount', 'appointmentCountIsLowerBound', 'serviceCount', 'serviceCountIsLowerBound', 'services', 'appointments'], 'properties': {'salon': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'timezone'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}}, 'additionalProperties': False}, {'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.'}, 'services': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price'], 'properties': {'name': {'type': 'string', 'maxLength': 200}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 12}, 'clientCount': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'appointments': {'type': 'array', 'items': {'type': 'object', 'required': ['startTime', 'status', 'serviceCount'], 'properties': {'status': {'anyOf': [{'enum': ['SCHEDULED', 'CLIENT_ARRIVED', 'NO_SHOW', 'CANCELED'], 'type': 'string'}, {'type': 'null'}]}, 'startTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'serviceCount': {'type': 'integer', 'maximum': 10000, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 8, 'description': 'The next upcoming appointments, earliest first'}, 'serviceCount': {'type': 'integer', 'maximum': 12, 'minimum': 0}, 'appointmentCount': {'type': 'integer', 'maximum': 8, 'minimum': 0}, 'clientCountIsLowerBound': {'type': 'boolean'}, 'serviceCountIsLowerBound': {'type': 'boolean'}, 'appointmentCountIsLowerBound': {'type': 'boolean'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
AdButler
Manages AdButler advertisers, campaigns, ad items, audiences, zones, creatives, catalogs, and advertising reports.
Duvo MCP
Provides governed retail and CPG operations for cases, queues, approvals, automations, process documentation, integrations, and a…
Lovie Company Formation
Supports company formation and business administration with bank accounts, cards, invoicing, bookkeeping, accounting periods, and…
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…