{
  "ok": true,
  "service": "BLR AI ChatGPT App MCP Gateway",
  "version": "2026.07.25",
  "mcp_endpoint": "/mcp",
  "tools": [
    {
      "name": "list_courses",
      "input_schema": {
        "type": "object",
        "properties": {}
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "courses": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "BLR course categories with course_id, name, suitable_for and booking notes."
          },
          "booking_rule": {
            "type": "string"
          },
          "_tool_contract": {
            "type": "object",
            "additionalProperties": true
          },
          "_assistant_mandatory_next_step_de": {
            "type": "string"
          },
          "_assistant_next_step": {
            "type": "object",
            "additionalProperties": true
          },
          "_gateway": {
            "type": "object",
            "additionalProperties": true
          }
        }
      }
    },
    {
      "name": "find_booking_options",
      "input_schema": {
        "type": "object",
        "properties": {
          "course_id": {
            "type": "string",
            "description": "BLR course ID. Use erste-hilfe-ausbildung-9ue for Erste Hilfe Kurs München, Führerschein/Fahrerlaubnis/Antrag, Sehtest, biometrische Passbilder, Sparpaket, betrieblicher Ersthelfer, Ersthelfer im Betrieb, Berufsgenossenschaft/Unfallkasse/Abrechnungsformular, Studium/Ausbildung, Trainerschein, Pilotenschein, Segelschein, EG-Konformitätserklärung or private 9UE first aid. Use brandschutzhelfer-ausbildung for Brandschutzhelfer. Use erste-hilfe-kurs-am-kind-baby for Erste Hilfe am Kind & Baby. Use erste-hilfe-in-bildungs-und-betreuungseinrichtungen-fuer-kinder for Kita/Kindergarten/Schule staff when available."
          },
          "event_id": {
            "type": "integer",
            "description": "Optional exact event_id from a previous booking-options result."
          },
          "date_from": {
            "type": "string",
            "description": "Optional lower date bound, YYYY-MM-DD."
          },
          "date_to": {
            "type": "string",
            "description": "Optional upper date bound, YYYY-MM-DD."
          }
        },
        "required": [
          "course_id"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "course_id": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "Compact live booking options with date, location, availability, prices, IDs and create_hold_request_patch."
          },
          "booking_options": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "availability": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "message": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "_tool_contract": {
            "type": "object",
            "additionalProperties": true
          },
          "_assistant_mandatory_followup_de": {
            "type": "string"
          },
          "_assistant_response_rule_de": {
            "type": "string"
          },
          "_assistant_next_step": {
            "type": "object",
            "additionalProperties": true
          },
          "_gateway": {
            "type": "object",
            "additionalProperties": true
          }
        }
      }
    },
    {
      "name": "create_booking_hold",
      "input_schema": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "integer",
            "description": "Exact event_id from the selected find_booking_options result. Do not invent it from a date."
          },
          "ticket_id": {
            "type": "integer",
            "description": "Exact ticket_id from the selected find_booking_options result. Do not invent it from a package label."
          },
          "spaces": {
            "type": "integer",
            "default": 1,
            "description": "Usually 1 unless the user explicitly books more participants."
          },
          "option_id": {
            "type": "string",
            "description": "Optional option_id from the selected find_booking_options result."
          },
          "package_code": {
            "type": "string",
            "enum": [
              "course",
              "course_sehtest",
              "course_passbilder",
              "sparpaket"
            ],
            "description": "Copy from create_hold_request_patch. course=only course; course_sehtest=course plus Sehtest; course_passbilder=course plus biometric Passbilder; sparpaket=course, Sehtest and biometric Passbilder together with discount."
          },
          "add_ons": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "sehtest",
                "passbilder"
              ]
            },
            "description": "Copy from create_hold_request_patch. course=[], course_sehtest=[sehtest], course_passbilder=[passbilder], sparpaket=[sehtest, passbilder]."
          },
          "payment_preference": {
            "type": "string",
            "enum": [
              "pay_on_site",
              "bg_voucher"
            ],
            "description": "Use pay_on_site for normal paid tickets. Do not ask cash versus card; both are possible on site. Use bg_voucher only for supported Berufsgenossenschaft/Unfallkasse/Abrechnungsformular voucher options."
          },
          "course_purpose": {
            "type": "string",
            "enum": [
              "driving_license",
              "work_bg",
              "private",
              "study_training",
              "other",
              "unknown"
            ],
            "description": "Use driving_license for Führerschein/Fahrerlaubnis/Fahrschule/Antrag. Use work_bg for betrieblicher Ersthelfer, employer, Betrieb, Berufsgenossenschaft, Unfallkasse or Abrechnungsformular. Use private for private refresher or Baby/Kind. Use study_training for Studium, Ausbildung, medizinische Ausbildung, Trainerschein, Pilotenschein, Segelschein or EG-Konformitätserklärung."
          },
          "participant": {
            "type": "object",
            "properties": {
              "first_name": {
                "type": "string"
              },
              "last_name": {
                "type": "string"
              },
              "email": {
                "type": "string"
              },
              "birth_date": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "street": {
                "type": "string"
              },
              "house_number": {
                "type": "string"
              },
              "postcode": {
                "type": "string"
              },
              "city": {
                "type": "string"
              }
            },
            "required": [
              "first_name",
              "last_name",
              "email",
              "birth_date",
              "street",
              "house_number",
              "postcode",
              "city"
            ]
          },
          "consents": {
            "type": "object",
            "properties": {
              "terms": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "cancellation_policy": {
                "type": "boolean",
                "enum": [
                  true
                ]
              },
              "data_storage": {
                "type": "boolean",
                "enum": [
                  true
                ]
              }
            },
            "required": [
              "terms",
              "cancellation_policy",
              "data_storage"
            ]
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "event_id",
          "ticket_id",
          "payment_preference",
          "participant",
          "consents"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "hold_id": {
            "type": "string"
          },
          "booking_id": {
            "type": "number"
          },
          "event_id": {
            "type": "number"
          },
          "status": {
            "type": "string"
          },
          "expires_at": {
            "type": "string"
          },
          "expires_at_utc": {
            "type": "string"
          },
          "selected_ticket": {
            "type": "object",
            "additionalProperties": true
          },
          "payment": {
            "type": "object",
            "additionalProperties": true
          },
          "confirmation": {
            "type": "object",
            "additionalProperties": true
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "total_price": {
            "type": "number"
          },
          "price_currency": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "em_errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "retry_instruction": {
            "type": "string"
          },
          "_tool_contract": {
            "type": "object",
            "additionalProperties": true
          },
          "_assistant_mandatory_followup_de": {
            "type": "string"
          },
          "_assistant_next_step": {
            "type": "object",
            "additionalProperties": true
          },
          "_gateway": {
            "type": "object",
            "additionalProperties": true
          }
        }
      }
    }
  ]
}