{
  "$schema": "https://a2aprotocol.ai/schemas/v1/agent-card.json",
  "name": "heinrich",
  "displayName": "Heinrich — Aussen Alster Hotel Digital Concierge",
  "description": "Autonomous AI Guest Concierge & Direct Booking Agent for Aussen Alster Hotel Hamburg (St. Georg, 50m to Außenalster). Handles real-time room availability, dynamic rate negotiations, amenities reservations (Finnish sauna, Conger sailing boat, bicycles, parking), and hotel guest inquiries.",
  "version": "1.0.0",
  "provider": {
    "name": "Aussen Alster Hotel Hamburg",
    "url": "https://aussenalsterhotel.de",
    "contact": "info@aussenalsterhotel.de",
    "phone": "+49 40 241557",
    "address": "Schmilinskystraße 11, 20099 Hamburg, Germany"
  },
  "endpoints": {
    "a2a": "https://aussenalsterhotel.de/api/a2a",
    "a2aDirect": "https://heinrich.trustcontrol.de/api/a2a",
    "mcp": "https://heinrich.trustcontrol.de/api/mcp",
    "chat": "https://aussenalsterhotel.de/api/chat/public",
    "card": "https://aussenalsterhotel.de/.well-known/agent.json"
  },
  "capabilities": [
    {
      "name": "query_pricing",
      "description": "Query daily dynamic room rates for 10 boutique categories, breakfast price (19.50 EUR), Hamburg event radar, and multi-night stay bonuses.",
      "parameters": {
        "type": "object",
        "properties": {
          "startDate": { "type": "string", "description": "Arrival date in YYYY-MM-DD format (e.g. 2026-11-01)" },
          "endDate": { "type": "string", "description": "Optional departure date in YYYY-MM-DD format" },
          "category": { "type": "string", "description": "Optional room category filter (e.g. Einzelzimmer, Doppelzimmer, Garten, Balkon)" }
        },
        "required": ["startDate"]
      }
    },
    {
      "name": "negotiate_rate",
      "description": "Negotiate direct booking advantages, house discount (HAUS), frequent guest rate (STAMM), or free welcome drinks for multi-night stays.",
      "parameters": {
        "type": "object",
        "properties": {
          "category": { "type": "string" },
          "numberOfNights": { "type": "number" },
          "targetPrice": { "type": "number" }
        }
      }
    },
    {
      "name": "request_reservation",
      "description": "Submit an unbinding direct reservation intent with guest contact details to the hotel front desk.",
      "parameters": {
        "type": "object",
        "properties": {
          "guestName": { "type": "string", "description": "Full name of the guest" },
          "email": { "type": "string", "description": "Guest email address for confirmation" },
          "phone": { "type": "string", "description": "Guest contact phone number" },
          "startDate": { "type": "string", "description": "Check-in date (YYYY-MM-DD)" },
          "endDate": { "type": "string", "description": "Check-out date (YYYY-MM-DD)" },
          "category": { "type": "string", "description": "Desired room category" },
          "agreedPrice": { "type": "number", "description": "Agreed price per night in EUR" },
          "notes": { "type": "string", "description": "Special requests or preferences" }
        },
        "required": ["guestName", "email", "startDate", "endDate"]
      }
    },
    {
      "name": "check_resource_availability",
      "description": "Check real-time availability of Finnish sauna, Conger sailing boat, rental bicycles, or underground parking.",
      "parameters": {
        "type": "object",
        "properties": {
          "resourceType": { "type": "string", "enum": ["garage", "bike", "sauna", "boat", "all"] },
          "startDate": { "type": "string", "description": "Target date (YYYY-MM-DD)" },
          "endDate": { "type": "string", "description": "Optional end date for garage" }
        },
        "required": ["resourceType"]
      }
    },
    {
      "name": "reserve_resource",
      "description": "Reserve a hotel amenity (sauna slot, sailing boat, bike, garage spot) for a guest.",
      "parameters": {
        "type": "object",
        "properties": {
          "resourceType": { "type": "string", "enum": ["garage", "bike", "sauna", "boat"] },
          "guestNameOrRoom": { "type": "string", "description": "Guest name or room identifier" },
          "startDate": { "type": "string", "description": "Date in YYYY-MM-DD" },
          "endDate": { "type": "string", "description": "End date for parking" },
          "timeSlot": { "type": "string", "description": "Sauna timeslot (15-17h, 17:30-19:30h, 20-22h)" },
          "notes": { "type": "string", "description": "Optional details" }
        },
        "required": ["resourceType", "guestNameOrRoom", "startDate"]
      }
    },
    {
      "name": "chat",
      "description": "Natural language agent-to-agent consultation on hotel facts, restaurant recommendations, directions, and guest requests."
    }
  ],
  "security": {
    "type": "public_sandbox",
    "policy": "Guests and personal agents can view rates, check availability, and file booking intents. Administrative functions, physical door opening without verified reservation credentials, surveillance, and staff records are strictly restricted."
  },
  "supportedProtocols": ["a2a/1.0", "mcp/1.0", "json-rpc/2.0"]
}
