reservations
Remote MCP for TehProf Booking: browse resources & availability, create & cancel reservations.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"reservations": {
"url": "https://booking.tehprof.kz/mcp"
}
}
}Remote endpoints
https://booking.tehprof.kz/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢get_branding(slug)
Get public tenant profile and branding (name, logo, colors, tagline) by the tenant public slug. No API key required.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Tenant public slug, e.g. \"baiterekresort-bitrix24-kz\"."
}
},
"required": [
"slug"
]
}🟢list_resources(slug, group_id, search, bed_type, resource_class, ...)
List bookable resources of a tenant (rooms, halls, services) by public slug. Optional filters: group_id, search, bed_type, resource_class, min_capacity, amenities (comma-separated). No API key required.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Tenant public slug."
},
"group_id": {
"type": "string",
"description": "Resource group UUID, or \"none\" for ungrouped."
},
"search": {
"type": "string",
"description": "Free-text name filter (1-100 chars)."
},
"bed_type": {
"type": "string"
},
"resource_class": {
"type": "string"
},
"min_capacity": {
"type": "integer",
"description": "Minimum capacity."
},
"amenities": {
"type": "string",
"description": "Comma-separated amenity keys."
}
},
"required": [
"slug"
]
}🟢list_groups(slug)
List resource groups (categories) of a tenant by public slug — only groups with at least one publicly visible resource. No API key required.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Tenant public slug."
}
},
"required": [
"slug"
]
}🟢check_availability(resource_id, date, duration_minutes)
Get free time slots for a resource on a given date. Returns bookable slots considering existing reservations. No API key required.
Input Schema
{
"type": "object",
"properties": {
"resource_id": {
"type": "string",
"description": "Resource UUID (from list_resources)."
},
"date": {
"type": "string",
"description": "Date in YYYY-MM-DD."
},
"duration_minutes": {
"type": "integer",
"description": "Slot duration in minutes (5-1440, default 60)."
}
},
"required": [
"resource_id",
"date"
]
}🟡create_reservation(resource_id, guest_name, guest_phone, check_in_date, check_out_date, ...)
[Requires API key with the matching scope] Create a reservation. Requires an API key with the reservations:write scope; the booking is bound to the key tenant and the resource must belong to it. Provide either check_in_date+check_out_date (overnight/rental) OR start_at+end_at ISO datetimes (time-slot).
Input Schema
{
"type": "object",
"properties": {
"resource_id": {
"type": "string",
"description": "Resource UUID to book."
},
"guest_name": {
"type": "string",
"description": "Guest full name (2-200 chars)."
},
"guest_phone": {
"type": "string",
"description": "Guest phone, 6-15 digits with optional +."
},
"check_in_date": {
"type": "string",
"description": "Rental check-in date YYYY-MM-DD."
},
"check_out_date": {
"type": "string",
"description": "Rental check-out date YYYY-MM-DD."
},
"start_at": {
"type": "string",
"description": "Slot start ISO datetime (alternative to check_in_date)."
},
"end_at": {
"type": "string",
"description": "Slot end ISO datetime."
},
"guest_email": {
"type": "string",
"description": "Guest email (optional)."
},
"notes": {
"type": "string",
"description": "Free-text notes (max 1000 chars, optional)."
},
"locale": {
"type": "string",
"description": "Locale ru/en/kk (optional, default ru)."
},
"idempotency_key": {
"type": "string",
"description": "Optional client-generated key (e.g. a UUID) to make retries safe. Repeating the call with the same key returns the original reservation instead of creating a duplicate (24h window)."
}
},
"required": [
"resource_id",
"guest_name",
"guest_phone"
]
}🟢list_reservations(resource_id, from, to, status, limit)
[Requires API key with the matching scope] List reservations of the API key tenant. Requires the reservations:read scope. Optional filters: resource_id, from/to (YYYY-MM-DD), status, limit (1-200, default 50).
Input Schema
{
"type": "object",
"properties": {
"resource_id": {
"type": "string",
"description": "Filter by resource UUID."
},
"from": {
"type": "string",
"description": "Start date filter YYYY-MM-DD."
},
"to": {
"type": "string",
"description": "End date filter YYYY-MM-DD."
},
"status": {
"type": "string",
"description": "Filter by status (e.g. confirmed, pending, cancelled)."
},
"limit": {
"type": "integer",
"description": "1-200, default 50."
}
}
}🟢get_reservation(reservation_id)
[Requires API key with the matching scope] Get a single reservation by its UUID. With the reservations:read scope and matching tenant, returns guest details; otherwise only public status fields.
Input Schema
{
"type": "object",
"properties": {
"reservation_id": {
"type": "string",
"description": "Reservation UUID."
}
},
"required": [
"reservation_id"
]
}🔴cancel_reservation(reservation_id)
[Requires API key with the matching scope] Cancel a reservation by UUID. Requires the reservations:write scope and the reservation must belong to the key tenant (idempotent — cancelling an already-cancelled booking succeeds).
Input Schema
{
"type": "object",
"properties": {
"reservation_id": {
"type": "string",
"description": "Reservation UUID to cancel."
}
},
"required": [
"reservation_id"
]
}Recommended Prompts
get_brandingget_brandinglist_resourceslist_resourceslist_resourcesget_brandingCommunity
Evidence