Yoya Booking
Book meetings on a host's real availability. No auth - mirrors their public Yoya page.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"yoya-booking": {
"url": "https://yoya.ai/api/mcp/book"
}
}
}Remote-Endpunkte
https://yoya.ai/api/mcp/bookstreamable-httpWas es kann
Tool-Inventar
Tools (7)
🟢get_booking_page(slug)
Read a public Yoya booking link or slug. Includes required guest fields and meeting options. No host account access.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 2048
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢list_available_times(slug, timezone, timeOfDay, from, to, ...)
Find up to 10 times (max 50), labeled in the guest's IANA timezone. Filter by inclusive from/exclusive to datetimes and morning (06–12), afternoon (12–18) or evening (18–24) in the guest timezone. Pass nextCursor unchanged to continue with the same filters. Slots are suggestions; preview then book rechecks availability. Never invent slot IDs.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"timezone": {
"type": "string",
"maxLength": 100
},
"timeOfDay": {
"type": "string",
"enum": [
"morning",
"afternoon",
"evening"
]
},
"from": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"to": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"cursor": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢preview_booking(meetingFormat, requestId, slug, name, email, ...)
Validate guest details and the selected time without booking or sending email. Show the returned summary to the guest and ask for explicit approval. Then call book_meeting with the returned normalized booking, requestId and confirmationToken.
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingFormat": {
"description": "Copy the value from preview_booking unchanged.",
"type": "string",
"maxLength": 1000
},
"requestId": {
"description": "Reuse the ID returned by preview_booking for retries.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"purpose": {
"default": "",
"type": "string",
"maxLength": 2000
},
"meetingType": {
"type": "string",
"enum": [
"google_meet",
"zoom",
"in_person"
]
},
"timezone": {
"type": "string",
"maxLength": 100
},
"fieldAnswers": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
}
},
"required": [
"slug",
"name",
"email",
"slotId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🔴book_meeting(meetingFormat, requestId, slug, name, email, ...)
Creates a free booking or returns PAYMENT_REQUIRED with a secure payment URL for paid meetings. Paid meetings are not booked until payment succeeds; show the link and never claim confirmation before that. Only call after the guest explicitly approves preview_booking. Copy the preview's booking fields and confirmationToken unchanged. Reuse requestId and token on network retries; never claim notifications are delivered until syncStatus is ready.
Eingabe-Schema
{
"type": "object",
"properties": {
"meetingFormat": {
"description": "Copy the value from preview_booking unchanged.",
"type": "string",
"maxLength": 1000
},
"requestId": {
"description": "Reuse the ID returned by preview_booking for retries.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"purpose": {
"default": "",
"type": "string",
"maxLength": 2000
},
"meetingType": {
"type": "string",
"enum": [
"google_meet",
"zoom",
"in_person"
]
},
"timezone": {
"type": "string",
"maxLength": 100
},
"fieldAnswers": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"confirmationToken": {
"type": "string",
"maxLength": 1000
},
"confirmed": {
"type": "boolean",
"const": true
}
},
"required": [
"slug",
"name",
"email",
"slotId",
"confirmationToken",
"confirmed"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_booking(token)
Read a booking using its private manage-link token. Includes meeting-link synchronization status. Treat this token as a password; do not share it publicly.
Eingabe-Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🔴cancel_booking(token, confirmed, reason)
Cancel using a private manage token. Ask the guest for explicit approval first; this sends cancellation notifications.
Eingabe-Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"confirmed": {
"type": "boolean",
"const": true
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"token",
"confirmed"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🔴reschedule_booking(token, slotId, confirmed, reason)
Move a booking using its private manage token and a fresh slot ID from list_available_times. Ask for explicit approval first. The original booking stays intact if the new time cannot be reserved.
Eingabe-Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"confirmed": {
"type": "boolean",
"const": true
},
"reason": {
"type": "string",
"maxLength": 500
}
},
"required": [
"token",
"slotId",
"confirmed"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"syncStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"attention"
]
},
"nextCursor": {
"type": [
"string",
"null"
]
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"ok"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}Empfohlene Prompts
get_booking_pageget_booking_pagelist_available_timeslist_available_timeslist_available_timesget_booking_pageCommunity
Nachweis