kronos-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KRONOS_API_KEY | Yes | Key from vendor, sent in the X-API-KEY header | |
| KRONOS_BASE_URL | No | Base URL for the Kronos API | https://genezis-platform-api.gnzs.ru |
| KRONOS_DEFAULT_FILIAL_ID | No | Default branch ID. In networks with multiple locations, it is better not to set this. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kronos_get_time_slotsA | Получить все слоты времени по ресурсам (включая занятые), GET /api/v1/time-slots. Используйте kronos_get_available_slots, если нужны только свободные слоты для показа клиенту — этот инструмент возвращает полную картину (занято + свободно), полезно для административного/диагностического просмотра расписания. Args: params (GetTimeSlotsInput): filial_id, resource_id (список id ресурсов, обязателен), date (YYYY-MM-DD, опционально), day_count (1-30, по умолчанию 1), interval (5-720 минут, по умолчанию 60). Returns: str: JSON-ответ Кронос как есть (форма ответа не документирована вендором). Error Handling: - "Error: filial_id is required..." если не передан и не задан KRONOS_DEFAULT_FILIAL_ID - "Error: Kronos rejected the request (HTTP 401/403)..." при неверном API-ключе или недоступном филиале |
| kronos_get_available_slotsA | Получить только СВОБОДНЫЕ слоты времени, GET /api/v1/available-slots. Это основной инструмент для показа клиенту доступных дат/времени при бронировании — в отличие от kronos_get_time_slots, здесь уже отфильтрованы занятые слоты. Args: params (GetAvailableSlotsInput): filial_id, resource_id (список id ресурсов, обязателен), date (YYYY-MM-DD, опционально), day_count (1-30, по умолчанию 1), interval (5-720 минут, по умолчанию 60). Returns: str: JSON-ответ Кронос как есть (форма ответа не документирована вендором). Examples: - Use when: "какие свободные слоты на ближайшую субботу для площадки Северок" - Don't use when: нужна полная занятость слота (используйте kronos_get_time_slots) |
| kronos_get_time_slots_by_resource_typeA | Получить слоты времени по типу ресурса (а не по конкретному id), GET /api/v1/time-slots/resource-type. Полезно, когда бронирование должно быть безразлично к конкретному зáлу/аниматору — например «любой доступный зал этого типа на 14:50». Args: params (GetTimeSlotsByResourceTypeInput): filial_id, resource_type_id (обязателен), date, day_count, interval. Returns: str: JSON-ответ Кронос как есть. |
| kronos_list_resourcesA | Получить список ресурсов филиала (залы, аниматоры и т.п.), GET /api/v1/resources. Используйте это, чтобы узнать реальные id ресурсов перед вызовом kronos_get_time_slots / kronos_get_available_slots / kronos_create_event — эти id не задокументированы заранее, их нужно получать именно через этот инструмент. Args: params (ListResourcesInput): filial_id (обязателен), resource_type_id (опциональный список для фильтрации по типу). Returns: str: JSON-ответ Кронос как есть. |
| kronos_list_servicesA | Получить список услуг/товаров филиала, GET /api/v1/services. Нужно, чтобы узнать реальные id услуг (в т.ч. group_service_id для группового события) перед вызовом kronos_create_event. Args: params (ListServicesInput): filial_id (обязателен). Returns: str: JSON-ответ Кронос как есть. |
| kronos_get_eventA | Получить данные одной записи (брони) по id, GET /api/v1/event/{id}. Args: params (GetEventInput): filial_id, event_id (обязательны). Returns: str: JSON-ответ Кронос как есть. Error Handling: - "Error: Not found (HTTP 404)..." если записи с таким id нет в этом филиале |
| kronos_list_eventsA | Получить список записей (броней) с фильтрами, GET /api/v1/events. Поддерживает пагинацию (page/limit) и фильтры по датам, ресурсам, услугам, id и родительскому групповому событию (parent_id — чтобы получить всех «доборных детей» конкретного группового слота). Args: params (ListEventsInput): filial_id (обязателен); page, limit, ids, parent_id, date_from, date_to, resources, products — все опциональны. Returns: str: JSON-ответ Кронос как есть (форма пагинации не задокументирована вендором — проверить на реальном аккаунте). |
| kronos_get_custom_fieldsA | Получить список пользовательских полей записи, настроенных в аккаунте, GET /api/v1/custom-fields/{accountId}. Нужно, чтобы узнать реальные id и типы кастомных полей перед тем как передавать custom_fields в kronos_create_event / kronos_update_event. Args: params (GetCustomFieldsInput): filial_id, account_id (обязательны). Returns: str: JSON-ответ Кронос как есть. |
| kronos_create_eventA | Создать запись (бронь) в Кронос, POST /api/v1/event. Поддерживает три сценария (по официальным примерам вендора):
ВАЖНО: max_count — это верхний предел вместимости, Кронос НЕ проверяет никакой нижний порог (минимальный размер группы) — эту валидацию должен делать вызывающий код, полагаться на API тут нельзя. Args: params (CreateEventInput): filial_id, date_from, date_to, time_from, time_to (обязательны); остальные поля см. описание модели — status_id, name, parent_id, count, is_group, max_count, group_service_id, resources, order, contact, custom_fields, analytics (все опциональны, зависят от сценария). Returns: str: JSON-ответ Кронос (201) как есть — форма не задокументирована вендором, но по аналогии с {id} в bind-lead ожидается id созданной записи. Error Handling: - "Error: Kronos rejected the request (HTTP 401/403)..." при неверном ключе/филиале - "Error: Kronos API request failed with HTTP 400..." при неверной комбинации полей (например is_group=True вместе с contact) — проверьте тело ошибки в сообщении |
| kronos_update_eventA | Изменить запись — перенос времени, отмена или правка кастомных полей, PATCH /api/v1/event. Три типовых сценария:
Args: params (UpdateEventInput): filial_id, id (обязательны); date_from, date_to, time_from, time_to, status_id, loss_reason_id, custom_fields (опциональны, передайте только то, что действительно меняете). Returns: str: JSON-ответ Кронос как есть. |
| kronos_delete_eventA | Безвозвратно удалить запись, DELETE /api/v1/event/{id}. Предпочитайте kronos_update_event со status_id=0 для обычной отмены брони — она сохраняет историю. Используйте это только когда запись должна исчезнуть полностью (например, была создана ошибочно). Args: params (DeleteEventInput): filial_id, event_id (обязательны). Returns: str: JSON-ответ Кронос как есть. |
| kronos_bind_leadA | Привязать сделку amoCRM к записи Кронос, POST /api/v1/event/bind-lead. Это единственный официальный мост между amoCRM и Кронос в Public API v1 — вызывайте его сразу после kronos_create_event, передав id только что созданной сделки в amoCRM и id только что созданной записи в Кронос. Args: params (BindLeadInput): filial_id, lead_id (id сделки amoCRM), event_id (id записи Кронос) — все обязательны. Returns: str: JSON-ответ Кронос как есть. |
| kronos_subscribe_webhookA | Подписаться на пуш-вебхуки по событиям записи, POST /api/v1/webhooks/subscribe. Кронос будет отправлять POST-запросы на указанный url при create_event/update_event/ delete_event — это единственный push-механизм (в остальном API — pull/polling). Идемпотентность повторных вызовов с теми же параметрами не задокументирована вендором (может создавать дублирующиеся подписки) — проверить на реальном аккаунте. Args: params (SubscribeWebhookInput): filial_id, url, actions (список из create_event/ update_event/delete_event, обязательны); filial_ids — опциональный список для ограничения вебхуков конкретными филиалами (по умолчанию — все филиалы аккаунта). Returns: str: JSON-ответ Кронос как есть. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
The three slot-related tools have overlapping surface, but each is explicitly documented for a distinct scenario: full schedule, client-facing free slots, and resource-type-agnostic slots. All other tools target clearly separate resources/actions, so an agent can reliably differentiate with the descriptions.
All tools share the kronos_ prefix and use snake_case, but retrieval verbs are inconsistent: list_resources/list_services/list_events vs get_event/get_time_slots/get_available_slots/get_custom_fields. This is a minor deviation; the pattern is still mostly predictable.
13 tools is well-scoped for a booking/event management API: lookup, availability, CRUD, webhooks, custom fields, and CRM integration are each represented. No tool feels redundant, and the count is reasonable for the domain.
Event lifecycle is well covered with create, get, list, update, and delete, plus availability, services, resources, webhooks, and lead binding. A minor gap is the lack of an explicit resource-type listing tool and limited webhook management, but these are workable with existing tools.