Reservio MCP by usefulapi
Check open slots, list bookings, services and staff, book appointments and group events in Reservio.
我该使用它吗
质量与安全性
发现(1)
- LOW在 reservio_create_appointment_booking 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"reservio": {
"url": "https://reservio.usefulapi.io/mcp"
}
}
}远程端点
https://reservio.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(16)
🟢reservio_get_business(business_id)
Get the business profile: name, address, contact details, time zone. Reservio API: GET /businesses/{businessId}.
输入模式
{
"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.
输入模式
{
"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}.
输入模式
{
"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.
输入模式
{
"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}.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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}.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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"
}社区
证据