{
  "protocolVersion": "0.3.0",
  "name": "Let’s Relax Thai Wellness booking",
  "version": "1.0.0",
  "description": "A structured booking agent for a spa in Midtown NYC. Synchronous A2A DataPart messages only. Requests are not confirmed reservations. Read the documentation before transmitting customer details.",
  "url": "https://letsrelaxnyc.com/api/agent",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "Let’s Relax Thai Wellness",
    "url": "https://letsrelaxnyc.com/"
  },
  "documentationUrl": "https://letsrelaxnyc.com/agents",
  "iconUrl": "https://letsrelaxnyc.com/favicon.svg",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "securitySchemes": {
    "receipt": {
      "type": "http",
      "scheme": "bearer",
      "description": "The private accessToken returned for one appointment request. Required only for get_request."
    }
  },
  "skills": [
    {
      "id": "list_services",
      "name": "List services",
      "description": "Get the current service IDs, durations, USD prices, guest counts, and add-on rules.",
      "tags": [
        "spa",
        "booking",
        "New York"
      ],
      "examples": [
        "{\"action\":\"list_services\"}"
      ]
    },
    {
      "id": "quote",
      "name": "Calculate a treatment price",
      "description": "Get the server-calculated price for a selection. No appointment is created.",
      "tags": [
        "spa",
        "booking",
        "New York"
      ],
      "examples": [
        "{\"action\":\"quote\"}"
      ]
    },
    {
      "id": "request_times",
      "name": "List times a guest can request",
      "description": "Get times within opening hours, in America/New_York. These are not confirmed available slots.",
      "tags": [
        "spa",
        "booking",
        "New York"
      ],
      "examples": [
        "{\"action\":\"request_times\"}"
      ]
    },
    {
      "id": "request_appointment",
      "name": "Request an appointment",
      "description": "After explicit customer approval and contact consent, submit an idempotent request. Staff confirmation is required; no payment is taken.",
      "tags": [
        "spa",
        "booking",
        "New York"
      ],
      "examples": [
        "{\"action\":\"request_appointment\"}"
      ]
    },
    {
      "id": "get_request",
      "name": "Read a private appointment request",
      "description": "Read the status of one request using its receipt access token in Authorization: Bearer.",
      "tags": [
        "spa",
        "booking",
        "New York"
      ],
      "examples": [
        "{\"action\":\"get_request\"}"
      ],
      "security": [
        {
          "receipt": []
        }
      ]
    }
  ]
}