reservations

Remote MCP for TehProf Booking: browse resources & availability, create & cancel reservations.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,111Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (0.87% of 128k context)

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-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

retrieve_data
Get details about [item] from reservations
Expected tools: get_branding
fetch_info
Fetch [information type] using reservations
Expected tools: get_branding
list_items
List all [items] available in reservations
Expected tools: list_resources
browse_collection
Show me the [collection] from reservations
Expected tools: list_resources
explore_workflow
List available [items], then get details for each one using reservations
Expected tools: list_resourcesget_branding

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools