{
  "name": "WERZ consultation booking",
  "version": "2.0",
  "authentication": "none for public endpoints",
  "documentation": "https://werz.ai/resources/agent-booking",
  "openapi": "https://werz.ai/agent-booking-public-openapi.json",
  "availability": {
    "method": "GET",
    "url": "https://werz.ai/api/agent/public/availability",
    "query": {
      "start": "Optional YYYY-MM-DD",
      "end": "Optional YYYY-MM-DD"
    },
    "default": "Next 14 days",
    "maximumRangeDays": 30,
    "bookingHorizonDays": 60
  },
  "booking": {
    "method": "POST",
    "url": "https://werz.ai/api/agent/public/booking",
    "contentType": "application/json",
    "required": [
      "name",
      "email",
      "phone",
      "date",
      "startTime",
      "timezone",
      "userConfirmed",
      "idempotencyKey",
      "source"
    ],
    "timezone": "America/Los_Angeles",
    "durationMinutes": 30
  },
  "steps": [
    "Fetch available slots. All dates and times use America/Los_Angeles, including daylight saving time.",
    "Collect the buyer's name, email and real international callback number; confirm the exact slot and that they want the booking made.",
    "Generate a fresh random UUID v4 idempotencyKey for this booking intent. Keep it private and reuse it on every retry.",
    "POST with userConfirmed=true, timezone=America/Los_Angeles, and source naming the calling agent.",
    "Report success only from success=true and booking.status=CONFIRMED. Present the actual returned slot, meeting link and any warning."
  ],
  "effects": "A successful submission reserves a real consultation and uses the normal booking confirmation/calendar workflow. SMS consent is not granted through this endpoint.",
  "retries": "After a timeout or server error, retry with the identical idempotencyKey and email. A used key returns its original reservation, even if a different slot was requested. Never create a fresh key solely to retry.",
  "limits": {
    "availability": "60 requests/minute/IP",
    "booking": "5 attempts/hour/IP and 5/hour/email; retries also count",
    "rateLimitResponse": "429 with Retry-After in seconds"
  },
  "fallback": "https://werz.ai/book",
  "languages": [
    "en",
    "de"
  ],
  "mcp": {
    "url": "https://werz.ai/api/agent/public/mcp",
    "transport": "streamable-http",
    "authentication": "none",
    "tools": [
      "werz_check_availability",
      "werz_open_booking_calendar",
      "werz_confirm_booking"
    ],
    "ui": "MCP Apps service-first project form, contact details, timezone-aware calendar and explicit confirmation; requires a connected compatible host",
    "requiredService": "Choose VIDEO_PRODUCTION, WEB_DEVELOPMENT, MARKETING, or FULL_SERVICE for multiple services; include the selected services in notes."
  }
}
