Book meetings on a host's real availability. No auth - mirrors their public Yoya page.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Reuse the ID returned by preview_booking for retries.
Copy the value from preview_booking unchanged.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
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.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| slug* | string | |
| email* | string | |
| slotId* | string | |
| purpose | string | |
| timezone | string | |
| confirmed* | boolean | |
| requestId | string | Reuse the ID returned by preview_booking for retries. |
| meetingType | string | |
| fieldAnswers | object | |
| meetingFormat | string | Copy the value from preview_booking unchanged. |
| confirmationToken* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug",
"name",
"email",
"slotId",
"confirmationToken",
"confirmed"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"slug": {
"type": "string",
"maxLength": 2048,
"minLength": 1
},
"email": {
"type": "string",
"maxLength": 320
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"purpose": {
"type": "string",
"default": "",
"maxLength": 2000
},
"timezone": {
"type": "string",
"maxLength": 100
},
"confirmed": {
"type": "boolean",
"const": true
},
"requestId": {
"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)$",
"description": "Reuse the ID returned by preview_booking for retries."
},
"meetingType": {
"enum": [
"google_meet",
"zoom",
"in_person"
],
"type": "string"
},
"fieldAnswers": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"meetingFormat": {
"type": "string",
"maxLength": 1000,
"description": "Copy the value from preview_booking unchanged."
},
"confirmationToken": {
"type": "string",
"maxLength": 1000
}
}
}Cancel using a private manage token. Ask the guest for explicit approval first; this sends cancellation notifications.
| Argument | Type | Description |
|---|---|---|
| token* | string | |
| reason | string | |
| confirmed* | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token",
"confirmed"
],
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"reason": {
"type": "string",
"maxLength": 500
},
"confirmed": {
"type": "boolean",
"const": true
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| token* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
}
}Read a public Yoya booking link or slug. Includes required guest fields and meeting options. No host account access.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 2048,
"minLength": 1
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| slug* | string | |
| limit | integer | |
| cursor | string | |
| timezone | string | |
| timeOfDay | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"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)))$"
},
"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)))$"
},
"slug": {
"type": "string",
"maxLength": 2048,
"minLength": 1
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"timezone": {
"type": "string",
"maxLength": 100
},
"timeOfDay": {
"enum": [
"morning",
"afternoon",
"evening"
],
"type": "string"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| slug* | string | |
| email* | string | |
| slotId* | string | |
| purpose | string | |
| timezone | string | |
| requestId | string | Reuse the ID returned by preview_booking for retries. |
| meetingType | string | |
| fieldAnswers | object | |
| meetingFormat |
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.
| Argument | Type | Description |
|---|---|---|
| token* | string | |
| reason | string | |
| slotId* | string | |
| confirmed* | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token",
"slotId",
"confirmed"
],
"properties": {
"token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"reason": {
"type": "string",
"maxLength": 500
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"confirmed": {
"type": "boolean",
"const": true
}
}
}| string |
| Copy the value from preview_booking unchanged. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug",
"name",
"email",
"slotId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"slug": {
"type": "string",
"maxLength": 2048,
"minLength": 1
},
"email": {
"type": "string",
"maxLength": 320
},
"slotId": {
"type": "string",
"pattern": "^s_\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}Z$"
},
"purpose": {
"type": "string",
"default": "",
"maxLength": 2000
},
"timezone": {
"type": "string",
"maxLength": 100
},
"requestId": {
"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)$",
"description": "Reuse the ID returned by preview_booking for retries."
},
"meetingType": {
"enum": [
"google_meet",
"zoom",
"in_person"
],
"type": "string"
},
"fieldAnswers": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"meetingFormat": {
"type": "string",
"maxLength": 1000,
"description": "Copy the value from preview_booking unchanged."
}
}
}