orbit
Orbit Zürich: Workshop-Räume, Preise und freie Slots abfragen, Buchungsanfragen stellen.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- MEDIUMcreate_booking에서
- LOWcheck_availability에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"orbit": {
"url": "https://www.the-orbit.ch/api/mcp"
}
}
}원격 엔드포인트
https://www.the-orbit.ch/api/mcpstreamable-httphttps://the-orbit.ch/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (6)
🟢list_rooms(category)
Listet alle aktiven Räume des Orbit mit Kapazität, Etage, Ausstattung und Standardpreisen pro Slot (vormittag 08:00–12:00, nachmittag 13:00–18:00, ganztags 08:00–18:00). Räume mit `bookableFrom` in der Zukunft sind sichtbar, aber noch nicht buchbar.
입력 스키마
{
"type": "object",
"properties": {
"category": {
"description": "Optional: Kategorie-Slug zum Filtern (siehe `category.slug` im Ergebnis)",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_availability(date, roomIds)
Prüft für ein Datum, welche Slots (vormittag, nachmittag, ganztags) in welchen Räumen noch frei sind, inklusive Standardpreisen in CHF. Ohne `roomIds` werden alle aktiven Räume geprüft.
입력 스키마
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Datum im Format YYYY-MM-DD"
},
"roomIds": {
"description": "Optional: nur diese Raum-IDs prüfen (IDs aus list_rooms)",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_services
Listet alle buchbaren Zusatzservices (z.B. Catering, Moderation, Workshop-Begleitung) mit Standardpreisen. Services mit `isAccompaniment: true` sind exklusive Begleitformate (max. eines pro Buchung) und können einen Raum-Rabatt auslösen.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢quote_booking(rooms, services, title, notes, participants, ...)
Berechnet den unverbindlichen Gesamtpreis (Listenpreise, CHF) für eine Raum-/Service-Auswahl mit der echten Pricing-Engine des Orbit — inklusive Bestpreis-Logik, Wochenend-Zuschlag (+30%) und Verpflegungs-Pauschalen. Nutze dieses Tool statt Preise aus list_rooms selbst zusammenzurechnen. Mit API-Token wird die Quote personalisiert (Company-Pass-Deckung bzw. Individualrabatt des Kontos statt Listenpreis). Raum-IDs kommen aus list_rooms, Service-IDs aus list_services.
입력 스키마
{
"type": "object",
"properties": {
"rooms": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"roomId": {
"type": "string",
"minLength": 1
},
"slot": {
"type": "string",
"enum": [
"VORMITTAG",
"NACHMITTAG",
"GANZTAGS",
"ZEITFENSTER"
]
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"roomId",
"slot",
"date"
]
},
"description": "Gewünschte Räume mit Slot und Datum (Raum-IDs aus list_rooms)"
},
"services": {
"default": [],
"description": "Optionale Zusatzservices (Service-IDs aus list_services)",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"serviceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"serviceId"
]
}
},
"title": {
"description": "Optionaler Titel des Anlasses",
"type": "string",
"maxLength": 200
},
"notes": {
"description": "Optionale Bemerkungen",
"type": "string",
"maxLength": 2000
},
"participants": {
"description": "Anzahl Personen — Pflicht, wenn Verpflegung pro Person verrechnet wird",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 500
},
{
"type": "null"
}
]
},
"duration": {
"type": "string",
"enum": [
"EIN_TAG",
"ZWEI_TAGE",
"DREI_TAGE",
"VIER_TAGE"
],
"description": "Buchungsdauer; bei Mehrtagen buchen alle Räume GANZTAGS"
},
"startTime": {
"description": "Startzeit 'HH:00' (08–17) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(0[89]|1[0-7]):00$"
},
{
"type": "null"
}
]
},
"endTime": {
"description": "Endzeit 'HH:00' (09–18) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(09|1[0-8]):00$"
},
{
"type": "null"
}
]
}
},
"required": [
"rooms",
"duration"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢request_booking(rooms, services, title, notes, participants, ...)
Stellt eine UNVERBINDLICHE Buchungsanfrage an das Orbit-Team. Die Anfrage reserviert den Slot noch NICHT — das Team prüft sie und bestätigt per E-Mail an die Kontaktadresse. Prüfe vorher mit check_availability, ob die gewünschten Slots frei sind, und nenne dem Menschen den Preis aus quote_booking. Raum-IDs aus list_rooms, Service-IDs aus list_services.
입력 스키마
{
"type": "object",
"properties": {
"rooms": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"roomId": {
"type": "string",
"minLength": 1
},
"slot": {
"type": "string",
"enum": [
"VORMITTAG",
"NACHMITTAG",
"GANZTAGS",
"ZEITFENSTER"
]
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"roomId",
"slot",
"date"
]
},
"description": "Gewünschte Räume mit Slot und Datum (Raum-IDs aus list_rooms)"
},
"services": {
"default": [],
"description": "Optionale Zusatzservices (Service-IDs aus list_services)",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"serviceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"serviceId"
]
}
},
"title": {
"description": "Optionaler Titel des Anlasses",
"type": "string",
"maxLength": 200
},
"notes": {
"description": "Optionale Bemerkungen",
"type": "string",
"maxLength": 2000
},
"participants": {
"description": "Anzahl Personen — Pflicht, wenn Verpflegung pro Person verrechnet wird",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 500
},
{
"type": "null"
}
]
},
"duration": {
"type": "string",
"enum": [
"EIN_TAG",
"ZWEI_TAGE",
"DREI_TAGE",
"VIER_TAGE"
],
"description": "Buchungsdauer; bei Mehrtagen buchen alle Räume GANZTAGS"
},
"startTime": {
"description": "Startzeit 'HH:00' (08–17) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(0[89]|1[0-7]):00$"
},
{
"type": "null"
}
]
},
"endTime": {
"description": "Endzeit 'HH:00' (09–18) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(09|1[0-8]):00$"
},
{
"type": "null"
}
]
},
"contactName": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Name der Kontaktperson"
},
"contactEmail": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "E-Mail der Kontaktperson — hierhin geht die Bestätigung"
},
"contactPhone": {
"description": "Optionale Telefonnummer",
"type": "string",
"maxLength": 40
}
},
"required": [
"rooms",
"duration",
"contactName",
"contactEmail"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_booking(rooms, services, title, notes, participants, ...)
Erstellt eine VERBINDLICHE Buchung mit den echten Konditionen des angemeldeten Kontos (Company-Pass-Deckung bzw. Individualrabatt) — reserviert den Slot sofort. Erfordert einen API-Token (Authorization: Bearer …, erstellbar unter https://the-orbit.ch/account/api-tokens). Prüfe vorher mit check_availability, ob die Slots frei sind, und mit quote_booking den Preis. Ohne Token: request_booking für eine unverbindliche Anfrage nutzen. Raum-IDs aus list_rooms, Service-IDs aus list_services.
입력 스키마
{
"type": "object",
"properties": {
"rooms": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"roomId": {
"type": "string",
"minLength": 1
},
"slot": {
"type": "string",
"enum": [
"VORMITTAG",
"NACHMITTAG",
"GANZTAGS",
"ZEITFENSTER"
]
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"roomId",
"slot",
"date"
]
},
"description": "Gewünschte Räume mit Slot und Datum (Raum-IDs aus list_rooms)"
},
"services": {
"default": [],
"description": "Optionale Zusatzservices (Service-IDs aus list_services)",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"serviceId": {
"type": "string",
"minLength": 1
},
"quantity": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"serviceId"
]
}
},
"title": {
"description": "Optionaler Titel des Anlasses",
"type": "string",
"maxLength": 200
},
"notes": {
"description": "Optionale Bemerkungen",
"type": "string",
"maxLength": 2000
},
"participants": {
"description": "Anzahl Personen — Pflicht, wenn Verpflegung pro Person verrechnet wird",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 500
},
{
"type": "null"
}
]
},
"duration": {
"type": "string",
"enum": [
"EIN_TAG",
"ZWEI_TAGE",
"DREI_TAGE",
"VIER_TAGE"
],
"description": "Buchungsdauer; bei Mehrtagen buchen alle Räume GANZTAGS"
},
"startTime": {
"description": "Startzeit 'HH:00' (08–17) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(0[89]|1[0-7]):00$"
},
{
"type": "null"
}
]
},
"endTime": {
"description": "Endzeit 'HH:00' (09–18) — Pflicht bei EIN_TAG, verboten bei Mehrtagen",
"anyOf": [
{
"type": "string",
"pattern": "^(09|1[0-8]):00$"
},
{
"type": "null"
}
]
},
"contactName": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Name der Kontaktperson"
},
"contactEmail": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "E-Mail der Kontaktperson — hierhin geht die Bestätigung"
},
"contactPhone": {
"description": "Optionale Telefonnummer",
"type": "string",
"maxLength": 40
}
},
"required": [
"rooms",
"duration",
"contactName",
"contactEmail"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}권장 프롬프트
list_roomslist_rooms커뮤니티
증거