← WebMCP Directory

Tool tree

webmcp-ochre.vercel.app

CommerceTools verified
Website
Reactive Salon & Spa appointment booking storefront with WebMCP tool registration (PR #498 pattern)
Explore capabilities
    salon.search_servicesAction

    Search LuxeSalon & Spa treatments by keyword, category, or budget. Returns service IDs, pricing, duration, and descriptions. Updates the catalog UI reactively.

    View tool JSON
    {
      "name": "salon.search_services",
      "kind": "act",
      "impl": "imperative",
      "description": "Search LuxeSalon & Spa treatments by keyword, category, or budget. Returns service IDs, pricing, duration, and descriptions. Updates the catalog UI reactively.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Keyword to search for salon treatments (e.g. 'haircut', 'facial', 'color', 'massage', 'nails')."
          },
          "category": {
            "type": "string",
            "enum": [
              "all",
              "hair",
              "skin",
              "massage",
              "nails"
            ],
            "description": "Filter treatments by service category."
          },
          "maxPrice": {
            "type": "number",
            "minimum": 0,
            "description": "Upper price limit in USD."
          }
        },
        "additionalProperties": false
      }
    }
    salon.get_available_slotsAction

    Look up available time slots and designated specialists for a service on a given date. Returns slot IDs required for booking. Updates the calendar UI view.

    View tool JSON
    {
      "name": "salon.get_available_slots",
      "kind": "act",
      "impl": "imperative",
      "description": "Look up available time slots and designated specialists for a service on a given date. Returns slot IDs required for booking. Updates the calendar UI view.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "serviceId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique ID of the salon service (e.g., 'hair-cut-style', 'hydra-glow-facial', 'hair-balayage-color'). Must be obtained from salon.search_services."
          },
          "date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Target appointment date in YYYY-MM-DD format (e.g. '2026-09-05')."
          },
          "stylistId": {
            "type": "string",
            "description": "Optional specialist handle (e.g. 'alex-vance', 'elena-rostova') if the client requests a specific stylist."
          }
        },
        "required": [
          "serviceId"
        ],
        "additionalProperties": false
      }
    }
    salon.book_appointmentSensitive Action

    Propose an appointment booking. Surfaces a pending confirmation modal in the storefront UI for human user approval. Resolves once user confirms or declines.

    View tool JSON
    {
      "name": "salon.book_appointment",
      "kind": "transact",
      "impl": "imperative",
      "description": "Propose an appointment booking. Surfaces a pending confirmation modal in the storefront UI for human user approval. Resolves once user confirms or declines.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "serviceId": {
            "type": "string",
            "minLength": 1,
            "description": "Service ID from salon.search_services (e.g., 'hair-cut-style')."
          },
          "slotId": {
            "type": "string",
            "minLength": 1,
            "description": "Exact slot ID returned by salon.get_available_slots (e.g., 'slot-2026-09-05-1100-alex-vance')."
          },
          "date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Appointment date in YYYY-MM-DD format."
          },
          "clientName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100,
            "description": "Full name of the client receiving the service."
          },
          "clientPhone": {
            "type": "string",
            "minLength": 7,
            "maxLength": 25,
            "description": "Client phone number for booking confirmation and SMS reminders."
          },
          "notes": {
            "type": "string",
            "maxLength": 500,
            "description": "Optional requests, hair/skin allergies, or styling preferences."
          }
        },
        "required": [
          "serviceId",
          "slotId",
          "date",
          "clientName",
          "clientPhone"
        ],
        "additionalProperties": false
      }
    }
    salon.get_booking_statusAnswer

    Retrieve details and status for an existing appointment by booking reference code or client phone number. Opens the appointments list for the customer.

    View tool JSON
    {
      "name": "salon.get_booking_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Retrieve details and status for an existing appointment by booking reference code or client phone number. Opens the appointments list for the customer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bookingReference": {
            "type": "string",
            "description": "The confirmation reference code (e.g. 'LUXE-9412') provided when the appointment was booked."
          },
          "clientPhone": {
            "type": "string",
            "description": "The phone number used during booking to search customer reservations."
          }
        },
        "additionalProperties": false
      }
    }