Reservio MCP by usefulapi
Check open slots, list bookings, services and staff, book appointments and group events in Reservio.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen reservio_create_appointment_booking
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"reservio": {
"url": "https://reservio.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://reservio.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (16)
🟢reservio_get_business(business_id)
Get the business profile: name, address, contact details, time zone. Reservio API: GET /businesses/{businessId}.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_services(business_id, sort, filter, limit, offset)
List the services clients can book, with duration, price and capacity. Reservio API: GET /businesses/{businessId}/services.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_service(business_id, service_id)
Get one service by id. Reservio API: GET /businesses/{businessId}/services/{serviceId}.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"service_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Service id (from reservio_list_services)."
}
},
"required": [
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_resources(business_id, sort, filter, limit, offset)
List bookable resources, such as staff members or rooms. Reservio API: GET /businesses/{businessId}/resources.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_resource(business_id, resource_id)
Get one resource (staff member or room) by id. Reservio API: GET /businesses/{businessId}/resources/{resourceId}.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"resource_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Resource id (from reservio_list_resources)."
}
},
"required": [
"resource_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_events(business_id, sort, filter, limit, offset)
List calendar events (appointments, group events, blocked time) with start, end, type and capacity. Reservio API: GET /businesses/{businessId}/events.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_bookings(business_id, sort, filter, limit, offset)
List bookings with client name, state, cost and linked event. Sort by -createdAt to see the newest first (Reservio has no webhooks, so polling this is the way to find new bookings). Reservio API: GET /businesses/{businessId}/bookings.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_coupons(business_id, sort, filter, limit, offset)
List coupons (credit or visit packages). Reservio API: GET /businesses/{businessId}/coupons.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_coupon(business_id, coupon_id)
Get one coupon by id. Reservio API: GET /businesses/{businessId}/coupons/{couponId}.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"coupon_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Coupon id (from reservio_list_coupons)."
}
},
"required": [
"coupon_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_opening_hours(business_id)
List the opening hours of the business (days and start/end in seconds from midnight). Reservio API: GET /businesses/{businessId}/opening-hours.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_list_rosters(business_id, sort, filter, limit, offset)
List staff work schedules (rosters) per resource and date. Reservio API: GET /businesses/{businessId}/rosters.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"sort": {
"description": "Sort column, prefix - for descending, e.g. -createdAt.",
"type": "string",
"pattern": "^-?[A-Za-z.]+$"
},
"filter": {
"description": "Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z.]+$"
},
"additionalProperties": {
"type": "string"
}
},
"limit": {
"description": "Page size (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Number of items to skip, for paging.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_booking_slots(business_id, from, to, service_id, resource_id)
List free time slots for a service in a date range, optionally for one resource. Use before creating a booking. Reservio API: GET /businesses/{businessId}/availability/booking-slots.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"from": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"to": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"service_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Service id."
},
"resource_id": {
"description": "Limit to one resource (staff member), from reservio_list_resources.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"from",
"to",
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_booking_days(business_id, from, to, service_id, resource_id)
For each day in a range, tell whether any slot is free for a service. Reservio API: GET /businesses/{businessId}/availability/booking-days.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"from": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"to": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"service_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Service id."
},
"resource_id": {
"description": "Limit to one resource (staff member), from reservio_list_resources.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"from",
"to",
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢reservio_get_event_days(business_id, from, to, resource_id)
For each day in a range, tell whether a group event is open for booking. Reservio API: GET /businesses/{businessId}/availability/event-days.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"from": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"to": {
"type": "string",
"minLength": 8,
"description": "Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."
},
"resource_id": {
"description": "Limit to one resource (staff member), from reservio_list_resources.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reservio_create_appointment_booking(business_id, service_id, start, end, client, ...)
WRITE: create a real appointment booking for a service at a start/end time (use a slot from reservio_get_booking_slots). Reservio may notify the client. Not safe to repeat: a second call books a second appointment. Reservio API: POST /businesses/{businessId}/bookings.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"service_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Service id."
},
"start": {
"type": "string",
"minLength": 8,
"description": "Slot start, ISO 8601 with offset."
},
"end": {
"type": "string",
"minLength": 8,
"description": "Slot end, ISO 8601 with offset."
},
"client": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Client name."
},
"email": {
"description": "Client e-mail.",
"type": "string"
},
"phone": {
"description": "Client phone.",
"type": "string"
}
},
"required": [
"name"
]
},
"note": {
"description": "Note for the booking.",
"type": "string"
}
},
"required": [
"service_id",
"start",
"end",
"client"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴reservio_create_group_booking(business_id, event_id, client)
WRITE: book a client into an existing group event (event id from reservio_list_events). Reservio may notify the client. Not safe to repeat: a second call books a second seat. Reservio API: POST /businesses/{businessId}/bookings.
Esquema de entrada
{
"type": "object",
"properties": {
"business_id": {
"description": "Business id. Default: the business you entered at login.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$"
},
"event_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Group event id."
},
"client": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Client name."
},
"email": {
"description": "Client e-mail.",
"type": "string"
},
"phone": {
"description": "Client phone.",
"type": "string"
}
},
"required": [
"name"
]
}
},
"required": [
"event_id",
"client"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia