{
  "$schema": "https://wanakahaus.nz/schemas/agent-manifest-v1.json",
  "name": "Wanaka Haus",
  "description": "Direct booking for a certified Passive House holiday home in Wānaka, New Zealand. Sleeps 8. Agents may search availability, request a quote and create a paid booking end to end.",
  "url": "https://wanakahaus.nz",
  "contact": {
    "email": "hello@wanakahaus.nz",
    "human_response_time": "P1D"
  },
  "documentation": {
    "llms_txt": "/llms.txt",
    "openapi": "/openapi.json",
    "availability_feed": "/availability.json",
    "mcp": "/.well-known/mcp.json"
  },
  "mcp": {
    "endpoint": "/api/mcp",
    "transport": "streamable-http",
    "authentication": "none",
    "note": "The same five capabilities below, as native MCP tools. Connect directly — no registration or key."
  },
  "auth": {
    "search": "none",
    "quote": "none",
    "booking": "none — a guest name and email are required in the request body",
    "payment": "Stripe Checkout; the API returns a hosted checkout_url, never card data"
  },
  "capabilities": [
    {
      "id": "search_availability",
      "method": "GET",
      "path": "/api/availability",
      "description": "Open and booked nights for a date window, up to 18 months ahead."
    },
    {
      "id": "get_quote",
      "method": "POST",
      "path": "/api/quote",
      "description": "Itemised total for a date range and party size. Validates stay rules before you commit."
    },
    {
      "id": "create_booking",
      "method": "POST",
      "path": "/api/bookings",
      "description": "Holds the dates for 30 minutes and returns a Stripe Checkout URL. The hold lapses if payment is not completed."
    },
    {
      "id": "get_booking",
      "method": "GET",
      "path": "/api/bookings/{id}",
      "description": "Status of a booking: held, confirmed, cancelled or lapsed."
    },
    {
      "id": "cancel_booking",
      "method": "POST",
      "path": "/api/bookings/{id}/cancel",
      "description": "Cancels under the published policy and issues any refund due. Requires guest_email in the request body, matching (case-insensitive) the email the booking was made with — a booking id alone is not enough to cancel."
    }
  ],
  "property": {
    "type": "VacationRental",
    "sleeps": 8,
    "bedrooms": 4,
    "bathrooms": 3,
    "address": {
      "locality": "Wānaka",
      "region": "Otago",
      "country": "NZ"
    },
    "geo": {
      "latitude": -44.7003,
      "longitude": 169.1321
    },
    "certifications": [
      "Passive House (Passivhaus Institut)"
    ],
    "performance": {
      "airtightness_ach50": 0.4,
      "heat_recovery_efficiency": 0.9,
      "annual_heating_demand_kwh_m2": 14,
      "indoor_temperature_c": 21
    }
  },
  "pricing": {
    "currency": "NZD",
    "nightly_rate": 950,
    "cleaning_fee": 180,
    "taxes_included": true,
    "platform_fees": 0
  },
  "policies": {
    "min_nights": 2,
    "min_nights_peak": 4,
    "max_guests": 8,
    "check_in": "15:00",
    "check_out": "10:00",
    "cancellation": "Free to 14 days before arrival; 50% refund to 7 days; non-refundable inside 7 days.",
    "house_rules": [
      "No pets",
      "No parties or events",
      "No smoking on the property"
    ]
  },
  "crawling": {
    "allowed": true,
    "note": "All AI crawlers and booking agents are welcome. Please identify yourself in the User-Agent."
  }
}