{
  "specVersion": "1.0",
  "host": {
    "displayName": "ONE HOUR LEFT GmbH",
    "identifier": "did:web:www.onehourleft.de",
    "documentationUrl": "https://www.onehourleft.de/llms.txt",
    "logoUrl": "https://www.onehourleft.de/images/ohl-logo-360-360w.webp"
  },
  "entries": [
    {
      "identifier": "urn:air:onehourleft.de:mcp:booking-tools",
      "displayName": "ONE HOUR LEFT Buchungs-Tools (WebMCP)",
      "type": "application/mcp-server-card+json",
      "description": "WebMCP-Werkzeuge der Website: Verfügbarkeit und Angebot lesen, den Buchungsfluss öffnen, die Auswahl setzen und Kontaktangaben als Entwurf eintragen. Kein Werkzeug sendet eine Anfrage oder schließt eine Buchung ab.",
      "tags": [
        "escape-room",
        "vr",
        "muenchen",
        "ottobrunn",
        "booking"
      ],
      "capabilities": [
        "ohl.booking.availability.find",
        "ohl.booking.offer.read",
        "ohl.booking.flow.open",
        "ohl.booking.selection.set",
        "ohl.booking.contact.draft"
      ],
      "representativeQueries": [
        "Welche Startzeiten sind am Wochenende für vier Personen frei?",
        "Escape Room in Ottobrunn für sechs Personen buchen",
        "Was kostet ein VR-Erlebnis für eine Gruppe?",
        "Verfügbarkeit für Psychose am nächsten freien Termin prüfen"
      ],
      "version": "1.3.0",
      "metadata": {
        "schemaOrgType": "TouristAttraction",
        "address": "Jägerweg 10, 85521 Ottobrunn, DE",
        "telephone": "+49-89-66594204",
        "areaServed": "München; Ottobrunn; Landkreis München",
        "surface": "WebMCP (Browser, gleiche Herkunft)"
      },
      "data": {
        "name": "onehourleft-booking",
        "description": "WebMCP-Tools der Website ONE HOUR LEFT. Sie laufen im geöffneten Browser derselben Herkunft und liefern nur öffentliche Verfügbarkeits- und Angebotsauskünfte. Der Buchungsabschluss bleibt beim Menschen im sichtbaren Buchungsfluss.",
        "tools": [
          {
            "name": "ohl.booking.availability.find",
            "description": "Fragt den öffentlichen Verfügbarkeitsstand der kommenden Tage ab: je Tag die Zahl online buchbarer und nur telefonisch buchbarer Plätze sowie je Angebot die nächste freie Startzeit. Die Auskunft ist eine Momentaufnahme und keine Reservierung.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "size": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 32,
                  "description": "Gruppengröße in Personen, 2 bis 32; ohne Angabe gilt die Standardgröße der Website."
                },
                "resources": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "auk",
                      "hypnose",
                      "psychose",
                      "kes",
                      "vr"
                    ]
                  },
                  "description": "Angebote, die geprüft werden sollen; ohne Angabe alle öffentlichen Angebote."
                },
                "days": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 14,
                  "description": "Anzahl der Tage ab heute, die betrachtet werden; Standard sind fünf Tage."
                }
              },
              "additionalProperties": false
            }
          },
          {
            "name": "ohl.booking.offer.read",
            "description": "Liest den öffentlichen Auswahlstand zu einem Datum und einer Gruppengröße: Preisangaben des Tages, Zustand der Wunschtage sowie je Erlebnis die buchbaren Startzeiten. Enthält keine Reservierung und keinen Buchungscode.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string",
                  "description": "Wunschtag als YYYY-MM-DD; ohne Angabe wählt die Website den nächsten Tag."
                },
                "size": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 32,
                  "description": "Gruppengröße in Personen, 2 bis 32; ohne Angabe gilt die Standardgröße der Website."
                }
              },
              "additionalProperties": false
            }
          },
          {
            "name": "ohl.booking.flow.open",
            "description": "Öffnet den Buchungsablauf mit dem gewünschten Kontext und zeigt danach den passenden Schritt sichtbar an. Ohne Angabe beginnt der Ablauf bei der Auswahl.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "size": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 32,
                  "description": "Gruppengröße in Personen, 2 bis 32; ohne Angabe übernimmt der Ablauf seinen Standard."
                },
                "date": {
                  "type": "string",
                  "description": "Wunschtag als YYYY-MM-DD; ohne Angabe übernimmt der Ablauf seinen Standard."
                }
              },
              "additionalProperties": false
            }
          },
          {
            "name": "ohl.booking.selection.set",
            "description": "Setzt Datum, Gruppengröße oder die gewünschten Erlebnisse in der bereits sichtbaren Auswahl und lädt Verfügbarkeit und Preise neu. Meldet den Erfolg erst, nachdem die Oberfläche den neuen Stand übernommen hat.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string",
                  "description": "Neuer Wunschtag als YYYY-MM-DD."
                },
                "size": {
                  "type": "integer",
                  "minimum": 2,
                  "maximum": 32,
                  "description": "Neue Gruppengröße in Personen, 2 bis 32."
                },
                "experiences": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "ausser-kontrolle",
                      "kernschmelze",
                      "psychose",
                      "hypnose",
                      "vr"
                    ]
                  },
                  "description": "Gewünschte Erlebnisschlüssel; eine leere Liste hebt die Vorauswahl auf."
                }
              },
              "required": [],
              "additionalProperties": false
            }
          },
          {
            "name": "ohl.booking.contact.draft",
            "description": "Trägt Name, E-Mail, Telefon und eine optionale Nachricht in das vorhandene Kontaktformular ein und meldet, welche Pflichtangaben noch fehlen. Es wird nichts gesendet und nichts gebucht; das Absenden bleibt beim Menschen.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "first_name": {
                  "type": "string",
                  "description": "Vorname der buchenden Person."
                },
                "last_name": {
                  "type": "string",
                  "description": "Nachname der buchenden Person."
                },
                "email": {
                  "type": "string",
                  "description": "E-Mail-Adresse für Bestätigung und Rückfragen."
                },
                "phone": {
                  "type": "string",
                  "description": "Telefonnummer für Rückfragen am Spieltag."
                },
                "note": {
                  "type": "string",
                  "description": "Optionale Nachricht an das Team."
                }
              },
              "additionalProperties": false
            }
          }
        ]
      }
    }
  ]
}
