kronos-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kronos-mcpfind available slots for Saturday at branch 2"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kronos-mcp
MCP-сервер для Кронос 2.0 — российской системы онлайн-записи и управления расписанием (вендор ООО «Генезис», crns.io), которая работает как приложение внутри amoCRM.
Даёт языковой модели прямой доступ к бронированиям: свободные слоты, ресурсы, услуги, создание и перенос записей, привязка сделки amoCRM к брони, подписка на вебхуки.
In short: an MCP server for Kronos 2.0, a Russian booking/scheduling SaaS used by quest rooms, kids' entertainment venues and similar businesses. 13 tools over its Public API v1.
Зачем
Кронос закрывает расписание и брони, но его API не самый очевидный: документации в публичном поиске нет, ключ выдают по запросу, а половина важных деталей не описана в спецификации вовсе. Этот сервер убирает эту возню — модель просто вызывает инструменты с понятными именами и получает данные, а все заголовки, обязательные параметры и обработка ошибок уже внутри.
Подойдёт, если вы делаете бота-администратора, ассистента для менеджеров или любую автоматизацию поверх записи клиентов.
Related MCP server: Zenoti MCP Server
Установка
git clone https://github.com/RealSatanyan/kronos-mcp.git
cd kronos-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .Нужен Python 3.10+.
Настройка
Ключ API запрашивается у вендора — он не выдаётся самообслуживанием: t.me/gnzs_bot, hello@gnzs.ru.
cp .env.example .env # для локального запускаПеременная | Обязательна | Что это |
| да | Ключ от вендора, уходит в заголовке |
| нет | По умолчанию |
| нет | Филиал по умолчанию. В сети из нескольких площадок лучше не задавать — см. ниже |
Подключение к MCP-клиенту (Claude Code, Claude Desktop, Cursor):
{
"mcpServers": {
"kronos": {
"command": "/путь/до/kronos-mcp/.venv/bin/kronos-mcp",
"env": { "KRONOS_API_KEY": "ваш-ключ" }
}
}
}Инструменты
Все требуют filial_id — Кронос привязывает каждый запрос к конкретному филиалу.
Чтение
Инструмент | Что делает |
| Свободные слоты — то, что показывают клиенту |
| Все слоты, включая занятые |
| Слоты по типу ресурса, а не по конкретному |
| Ресурсы филиала (залы, аниматоры и т.п.) |
| Услуги и товары филиала |
| Одна запись по id |
| Список записей с фильтрами и пагинацией |
| Кастомные поля, заведённые в аккаунте |
Изменение
Инструмент | Что делает |
| Создать запись: обычную, групповое событие или дочернюю запись в группу |
| Перенести, отменить ( |
| Удалить безвозвратно — обычно лучше отмена через |
| Связать сделку amoCRM с бронью |
| Подписаться на |
Что стоит знать про API Кроноса
Это то, что выяснилось на практике и чего нет в спецификации — ради этих абзацев репозиторий и стоит читать:
filial_idобязателен везде. Поэтому он сделан обязательным параметром, а не берётся из настроек молча: перепутанный филиал — это чужие цены и чужой адрес в ответе клиенту.Платёжных методов в API нет вообще. Встроенный модуль «Платежи» живёт в интерфейсе Кроноса внутри amoCRM и здесь недоступен. Приём денег придётся делать отдельным слоем, а результат записывать в бронь через
kronos_update_event.Минимальный размер группы Кронос не знает. У группового события есть только
max_count— верхняя граница. Правило «не меньше N человек» проверяет ваш код, не API.Форматы ответов не описаны. В спецификации вендора у всех эндпоинтов пустые схемы ответов, поэтому инструменты возвращают JSON как есть.
Отмена лучше удаления.
kronos_update_eventсоstatus_id=0сохраняет историю, аkronos_delete_eventстирает запись совсем. Есть и причины отказа:loss_reason_id1 — нет оплаты, 2 — не пришёл.Групповые события трёхуровневые. Родительское событие (
is_group=true) — это сам сеанс, дочерние записи цепляются к нему черезparent_idи несут своих клиентов и свой заказ.
Статус
Написан по реальной OpenAPI-спецификации вендора (зеркало — reference/openapi.json),
покрывает все 13 операций Public API v1. Структурно проверен: сервер поднимается, инструменты
регистрируются, ошибки долетают читаемым текстом.
Против живого аккаунта не тестировался — на момент публикации у автора не было выданного ключа. Если протестируете, issue и PR приветствуются: особенно интересны реальные формы ответов и поведение групповых событий.
Лицензия
MIT
Available Tools
13 toolskronos_bind_leadAIdempotent
Привязать сделку 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-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=false, idempotentHint=true, and destructiveHint=false, lowering the bar. The description adds meaningful behavioral context beyond those hints: the exact HTTP endpoint, the fact that this is the sole integration path between the two systems, and the critical sequencing dependency (it consumes IDs produced by a prior kronos_create_event call). It doesn't cover error/failure modes or auth, but with annotations present, this is solid added value with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose in sentence one, usage context in sentence two, then conventional Args/Returns blocks. No filler or redundancy — the workflow sentence earns its place by capturing the sequencing constraint, and the Args block compensates for the schema coverage gap.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter binding operation with a rich output schema, the description covers all essentials: purpose, endpoint, workflow prerequisite, parameter list, and return format ('JSON-ответ Кронос как есть'). Minor gaps are failure behavior and auth requirements, and the Russian-language description vs. English annotations is a small friction point, but nothing an agent needs to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, so the description must compensate — and it does by enumerating all three parameters (filial_id, lead_id, event_id), mapping lead_id to the amoCRM deal and event_id to the Kronos record, and stating all are required. The underlying schema properties do carry their own descriptions, so the description plus schema jointly define semantics well, though the description itself stays at label-level without adding constraints like the filial_id nuance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Привязать сделку amoCRM к записи Кронос' (bind an amoCRM deal to a Kronos record), plus the exact endpoint POST /api/v1/event/bind-lead. It further distinguishes the tool by declaring it 'единственный официальный мост' (the only official bridge) between amoCRM and Kronos — none of the sibling tools mention amoCRM binding, so an agent can disambiguate instantly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit, prescriptive usage guidance: 'вызывайте его сразу после kronos_create_event' (call it immediately after kronos_create_event), naming the exact sibling and the required sequencing. It also states the exclusivity ('единственный официальный мост'), telling the agent not to seek alternatives. This is clear when-to-use guidance with a named prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_create_eventA
Создать запись (бронь) в Кронос, POST /api/v1/event.
Поддерживает три сценария (по официальным примерам вендора):
Обычная индивидуальная запись — заполните order/contact, оставьте is_group пустым.
Групповое событие (сам сеанс/слот) — is_group=True, max_count, group_service_id, без order/contact.
Дочерняя запись на групповое событие (например, доборные дети/доплата) — parent_id указывает на id уже созданного группового события, count — сколько мест занимает эта дочерняя запись, свои order/contact.
ВАЖНО: 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) — проверьте тело ошибки в сообщении
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses critical runtime behavior: the max_count field has no lower-bound validation and callers must enforce minimum group size, the success response is an undocumented JSON string with an expected id, and error handling details exact HTTP failure patterns. This goes well beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, every section earns its place: purpose, numbered scenarios, required args, return format, and error handling. It is front-loaded with the main purpose and uses clear structure (Args, Returns, Error Handling) plus a prominent ВАЖНО warning, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a complex creation tool: it covers three concrete scenarios, required versus optional fields, the undocumented response shape, and the two main error modes. It effectively closes the gaps left by annotations and the input schema, giving an agent everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents each field in detail, so the description does not need to repeat them. It adds meaningful scenario-to-parameter mappings (which fields belong to which booking type) and reiterates the max_count caveat. This is above the baseline because it explains how to combine parameters, not just what each parameter means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Создать запись (бронь) в Кронос, POST /api/v1/event.' It clearly states the tool creates a Kronos booking and differentiates the three supported creation scenarios, which separates it from sibling tools that list, get, update, or delete events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit scenario-based usage: individual booking, group event, and child booking, with required and forbidden field combinations for each (e.g., is_group=True without order/contact). It also warns that is_group=True with contact yields HTTP 400. It does not explicitly name alternative sibling tools, so it falls just short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_delete_eventADestructiveIdempotent
Безвозвратно удалить запись, DELETE /api/v1/event/{id}.
Предпочитайте kronos_update_event со status_id=0 для обычной отмены брони — она сохраняет историю. Используйте это только когда запись должна исчезнуть полностью (например, была создана ошибочно).
Args: params (DeleteEventInput): filial_id, event_id (обязательны).
Returns: str: JSON-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true and idempotentHint=true, so the description's statement 'Безвозвратно' (irreversibly) adds the permanence nuance beyond the annotation. It also clarifies the hard-delete vs. soft-cancel distinction, which is valuable behavioral context not captured by the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two clear functional sentences plus compact Args/Returns sections. The purpose is front-loaded, and the alternative is mentioned early. The Args/Returns repetition is minor and does not bloat the text, so it remains effectively structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (the return is just a raw JSON string) and the explicit usage guidance, the description covers the essential operational context. It explains when to use this vs. the alternative and notes the destructive nature, leaving no critical gap for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description merely lists the parameter names (filial_id, event_id) and marks them required, which duplicates the schema's required list. However, the schema already provides richer descriptions for each field (e.g., event_id explains hard vs. soft delete and filial_id explains scope), so the description adds little beyond the schema. Baseline 3 is appropriate for high effective schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Безвозвратно удалить запись', permanent deletion) and the resource (event via DELETE /api/v1/event/{id}). It distinguishes itself from the sibling kronos_update_event by explicitly contrasting the hard delete with the soft-cancel alternative, so an agent can tell them apart at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit when-to-use rule: prefer kronos_update_event with status_id=0 for ordinary cancellations to preserve history, and use this only when the record must disappear entirely (e.g., erroneous creation). This clear guidance leaves no ambiguity about selecting among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_get_available_slotsARead-onlyIdempotent
Получить только СВОБОДНЫЕ слоты времени, 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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior. The description adds worthwhile behavioral context: it returns only free slots filtered by the API, and it returns the vendor JSON raw with an undocumented response format. That goes beyond the structured hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured: purpose and differentiation first, followed by a compact Args block, a Returns caveat, and concrete Usage examples. Every section earns its place and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only availability lookup, the description covers the endpoint, main use case, sibling distinction, parameter summary, raw return behavior, and example requests. With annotations already covering safety and idempotency, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the signal reports 0% schema description coverage, the nested schema actually documents each parameter, and the description enumerates all five parameters with requiredness, defaults, and ranges. It also adds the context that resource_id is the list used for showing client availability, which helps the agent select values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Получить только СВОБОДНЫЕ слоты времени') and the API endpoint. It explicitly contrasts with sibling kronos_get_time_slots by noting occupied slots are already filtered out, so the tool's purpose is unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains explicit 'Use when' / 'Don't use when' guidance with a concrete example and names the exact alternative tool (kronos_get_time_slots) for the opposite need. This leaves no doubt about when to select this tool versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_get_custom_fieldsARead-onlyIdempotent
Получить список пользовательских полей записи, настроенных в аккаунте, 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-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the endpoint and purpose but doesn't add significant behavioral context beyond that, such as pagination or response format details. Given the annotations carry most of the burden, a 3 is appropriate for the additional context about usage dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose and endpoint, then immediately gives usage guidance. The Args and Returns sections are minimal but clear. It avoids unnecessary verbosity, though the Args section could be redundant with the schema, but it's still compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read operation with only two parameters, and the description covers its purpose, endpoint, and usage dependency. The output schema exists (though not shown in detail), so return value explanation isn't needed. The description omits potential edge cases like error handling or authentication, but for a straightforward read tool with clear annotations, it's sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description mentions 'filial_id, account_id (обязательны)' but provides no further explanation beyond what the schema already has, which itself has detailed property descriptions. The description doesn't add additional meaning or context beyond listing the parameters, so it's baseline adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Получить список пользовательских полей записи' (get list of custom fields) with a specific resource and endpoint (GET /api/v1/custom-fields/{accountId}). It also differentiates from siblings by explicitly mentioning it's needed to learn real ids and types before passing custom_fields to kronos_create_event/kronos_update_event, which sets it apart from other read tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: 'Нужно, чтобы узнать реальные id и типы кастомных полей перед тем как передавать custom_fields в kronos_create_event / kronos_update_event' (Need to know real ids and types before passing custom_fields to create/update event). It also names the specific sibling tools that depend on this information, providing clear context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_get_eventARead-onlyIdempotent
Получить данные одной записи (брони) по id, GET /api/v1/event/{id}.
Args: params (GetEventInput): filial_id, event_id (обязательны).
Returns: str: JSON-ответ Кронос как есть.
Error Handling: - "Error: Not found (HTTP 404)..." если записи с таким id нет в этом филиале
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds valuable context: the exact HTTP method (GET), the endpoint pattern, that the raw JSON response is returned as-is, and the specific 404 error when the record is not found in the given branch. This goes beyond the annotation defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, args, returns, error handling) and is free of fluff. It conveys all necessary operational details in a compact format, though it could be slightly more informative without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id operation, the description covers the purpose, required parameters, return type, and error handling. The annotation covers safety (read-only, idempotent). The only minor omission is an explicit note that the event is scoped to the specified filial, but that is already captured in the schema's filial_id description and the 404 error message.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides thorough descriptions for both parameters (event_id and filial_id), including clarification that filial_id refers to a specific branch, not a city or network. The tool description only repeats the parameter names and lists them as required, adding no new meaning beyond what the schema already gives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Получить = get), the resource (one record/booking by id), and the HTTP endpoint. It is immediately distinguishable from siblings like kronos_list_events or kronos_get_time_slots, which deal with collections or different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus the alternates. While the purpose implies 'get a single event by id', there is no explicit mention of use cases, alternatives, or conditions where another tool would be more appropriate. This leaves the agent to infer intent without any routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_get_time_slotsARead-onlyIdempotent
Получить все слоты времени по ресурсам (включая занятые), 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-ключе или недоступном филиале
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the readOnly/idempotent/destructive annotations: it states the response is a raw JSON string as returned by the vendor, warns that the response format is not documented, and documents concrete error cases including missing filial_id and HTTP 401/403 rejection. This gives the agent practical expectations about failure modes and output reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and sibling distinction, then uses clear labeled sections for Args, Returns, and Error Handling. Each section provides necessary invocation detail without fluff or redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations already establish read-only/idempotent/non-destructive behavior, the description covers the remaining needed context: when to use it, what parameters matter, what the return looks like, and what errors to expect. The mention that response format is vendor-undocumented is especially important for agents relying on the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description enumerates all parameters and their constraints: resource_id as required list, date as optional YYYY-MM-DD, day_count 1-30 default 1, interval 5-720 default 60. It further adds the KRONOS_DEFAULT_FILIAL_ID fallback behavior, which is not explicit in schema. It slightly restates schema details but compensates for the 0% reported top-level schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Получить все слоты времени по ресурсам (включая занятые)' and names the exact endpoint GET /api/v1/time-slots. It explicitly contrasts this tool with kronos_get_available_slots, making the distinction between full schedule visibility and free-only slots unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: use kronos_get_available_slots when only free slots need to be shown to a client, and use this tool for administrative/diagnostic schedule viewing. It directly names the alternative and the condition that selects it, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_get_time_slots_by_resource_typeARead-onlyIdempotent
Получить слоты времени по типу ресурса (а не по конкретному 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-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the HTTP method GET and states the response is returned 'as is', which is mild extra context. It does not deepen behavioral disclosure significantly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a lead sentence, a usage rationale, and a structured Args/Returns section. No redundant filler beyond some overlap between the verb phrase and endpoint, but overall it is well-organized and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a single nested-parameter object, the description covers the primary purpose, usage context, and required parameters. With annotations and an output schema present, it does not need to explain return structures. It omits default values for optional params, but those are already in the nested schema, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists the parameter names and notes that resource_type_id is required and contrasts it with resource_id. However, the nested schema already provides detailed descriptions for filial_id, date, day_count, and interval. The description adds little beyond that, though it does clarify the key distinction for resource_type_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves time slots by resource type, explicitly contrasting with 'not by specific id', and names the endpoint. It also gives a concrete booking scenario ('any available hall of this type for 14:50'), which makes the tool's purpose unambiguous and distinguishes it from resource-specific siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit when-to-use statement: when a booking is indifferent to a specific hall/animator, with a practical example. It implies exclusion of resource-specific cases ('not by specific id') but does not explicitly name the alternative tool or spell out when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_list_eventsARead-onlyIdempotent
Получить список записей (броней) с фильтрами, 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-ответ Кронос как есть (форма пагинации не задокументирована вендором — проверить на реальном аккаунте).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only safety profile is established. The description adds valuable behavioral context beyond this: it returns Kronos JSON verbatim, and it honestly warns that the pagination shape is not documented by the vendor and should be verified against a real account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into purpose, args, and returns, with the endpoint and the pagination caveat earning their place. The Args section partly repeats schema information, but it is compact and helps an agent quickly see the full set of filters without inspecting nested schema definitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what is needed to invoke the tool: required branch/filial id, optional filters, pagination support, and the raw return format with a vendor caveat. Because an output schema exists and the annotations cover the safety profile, the missing details such as exact response fields are acceptable. The only real gap is explicit sibling-tool differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description consolidates the parameter contract by marking filial_id as required, listing all optional filters, and giving the specific parent_id use case of retrieving 'доборных детей' child records for a group slot. While the schema already provides per-property descriptions, the description adds useful semantic framing and makes the required/optional split explicit in one place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Получить список записей (броней) с фильтрами' and identifies the endpoint GET /api/v1/events. This clearly signals a list operation and distinguishes it from sibling singular/state-changing tools like kronos_get_event, kronos_create_event, and kronos_delete_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a filtered, paginated list of bookings/events is needed. However, it never explicitly says when not to use it or names alternatives such as kronos_get_event for a single event or kronos_get_available_slots for availability. The filtering context is clear but the alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_list_resourcesARead-onlyIdempotent
Получить список ресурсов филиала (залы, аниматоры и т.п.), 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-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. It adds useful behavioral context by identifying the HTTP method and stating that the response is the raw Kronos JSON as-is, which sets return-format expectations beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: purpose, endpoint, usage guidance, parameters, and return type are all covered with no filler. The most important operational instruction—fetch real IDs before dependent calls—is front-loaded and prominent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with rich annotations and a structured input schema, the description provides the essential workflow context and raw-return expectation. It does not cover pagination or error behavior, but those are not critical given the tool's simplicity and the openWorldHint annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section restates filial_id as required and resource_type_id as an optional filter, which is helpful but largely mirrors the nested schema's own descriptions. It does not add extra meaning such as accepted value formats, examples, or how the filter list interacts with the API, so parameter semantics remain adequate rather than enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and object: 'Получить список ресурсов филиала (залы, аниматоры и т.п.)' and gives the endpoint GET /api/v1/resources. This clearly conveys that the tool lists branch resources and is distinct enough from sibling list tools like kronos_list_services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to use this tool to discover real resource IDs before calling kronos_get_time_slots, kronos_get_available_slots, or kronos_create_event, and notes these IDs are not documented in advance. It does not mention when not to use it or name an alternative listing tool, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_list_servicesARead-onlyIdempotent
Получить список услуг/товаров филиала, GET /api/v1/services.
Нужно, чтобы узнать реальные id услуг (в т.ч. group_service_id для группового события) перед вызовом kronos_create_event.
Args: params (ListServicesInput): filial_id (обязателен).
Returns: str: JSON-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive. The description adds the GET endpoint and notes that the response is raw Kronos JSON ('JSON-ответ Кронос как есть'), which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: purpose, endpoint, use case, args, and return value. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter and an output schema, the description covers the essential context: what it returns, why it is needed, and how it fits into the create_event flow. It does not discuss pagination or filtering, but these are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only repeats that filial_id is required, which the schema already states. The schema itself provides a meaningful description of filial_id, so the description adds little semantic value beyond what is already structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Получить список услуг/товаров филиала' (get the list of branch services/products) and even names the HTTP endpoint. It clearly distinguishes this from sibling tools like kronos_list_resources and kronos_list_events by focusing on services/products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: before calling kronos_create_event, to discover real service ids including group_service_id. It does not spell out when not to use it or name alternatives, but the main use case is clearly communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds important behavioral context: the vendor does not document idempotency, repeated calls may create duplicate subscriptions, and the tool returns the raw JSON response. This goes beyond the annotations and helps the agent understand side effects and risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose and endpoint. It includes a warning and parameter summary without excessive verbosity. Slightly dense with Russian text, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and annotations, the description covers the key behavioral and parameter context. It explains the push mechanism, idempotency risk, and parameter semantics. Minor gap: it doesn't describe the exact shape of the webhook payloads, but that's not necessary for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it explains filial_id is required per call, actions must be a list of create_event/update_event/delete_event, and filial_ids is optional and defaults to all account branches. This adds meaning beyond the raw schema, though the schema itself already has decent property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Подписаться на пуш-вебхуки'), the resource (events in Kronos), and the exact endpoint (POST /api/v1/webhooks/subscribe). It also explicitly distinguishes this from the rest of the API by noting it is the only push mechanism, which differentiates it from sibling tools that are pull/polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is the only push mechanism and the rest of the API is pull/polling, which tells an agent when to use this tool versus alternatives. It also warns about undocumented idempotency and advises checking on a real account, which is valuable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kronos_update_eventADestructiveIdempotent
Изменить запись — перенос времени, отмена или правка кастомных полей, PATCH /api/v1/event.
Три типовых сценария:
Перенос: передайте date_from/date_to/time_from/time_to.
Отмена: передайте status_id=0 (это штатный способ отмены с сохранением истории — предпочтительнее, чем kronos_delete_event, которое удаляет запись безвозвратно). Можно дополнительно передать loss_reason_id (1 = Нет оплаты, 2 = Не пришёл).
Правка кастомных полей: передайте custom_fields — непереданные поля сохраняют текущее значение, пустая строка очищает значение поля.
Args: params (UpdateEventInput): filial_id, id (обязательны); date_from, date_to, time_from, time_to, status_id, loss_reason_id, custom_fields (опциональны, передайте только то, что действительно меняете).
Returns: str: JSON-ответ Кронос как есть.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds beyond that: cancel via status_id=0 preserves history, loss_reason_id enumerations, custom_fields merge semantics (unset means keep, empty string clears), and raw JSON return. No mention of auth/ratelimit, but annotations carry the safety burden and nothing contradicts them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact intro followed by scannable bullet-style scenarios; Args and Returns are cleanly separated. Every line earn hers place with no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-scenario mutation tool, the combination of description, annotations, and rich schema covers purpose, common use cases, parameter semantics, return format, and the key sibling alternative. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the context signal reports 0% schema coverage, the actual input schema contains full descriptions for every parameter. The description still adds the 'only send what changes' behavior and organizes parameters by scenario, going slightly beyond the schema's per-field documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb 'изменить' (update), resource 'event', and enumerates three concrete operation types (reschedule, cancel, custom-field edit). Explicitly contrasts with kronos_delete_event, so an agent can distinguish it from siblings at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three clearly marked scenarios with the exact parameters to pass for each, instructs to 'pass only what you actually change', and names kronos_delete_event as the inferior alternative for cancellation because it destroys history—explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
kronos_bind_lead - First observed
kronos_create_event - First observed
kronos_delete_event - First observed
kronos_get_available_slots - First observed
kronos_get_custom_fields - First observed
kronos_get_event - First observed
kronos_get_time_slots - First observed
kronos_get_time_slots_by_resource_type - First observed
kronos_list_events - First observed
kronos_list_resources - First observed
kronos_list_services - First observed
kronos_subscribe_webhook - First observed
kronos_update_event
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.
Maintenance
Related MCP Connectors
- FitnitoOAuthcom.fitnito
Schedule, members, and bookings in your AI tools
Manage an EasyWeek business from AI: bookings, availability, customers, services, orders, messaging.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Read appointments, types, calendars and availability; create, cancel or reschedule bookings.
Related MCP Servers
AlicenseBqualityDmaintenanceEnables interaction with the Kalendis scheduling API to manage users, availability, bookings, and generate TypeScript clients and API routes. Supports comprehensive scheduling operations including recurring availability, exceptions, and booking management through natural language.4176 npmMIT- AlicenseCqualityDmaintenanceEnables AI agents to manage spa/wellness operations via Zenoti API, including appointments, guests, services, and billing.2363 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables managing cron jobs, maintenance windows, and settings through natural language by exposing the Cronmanager REST API as MCP tools for LLM clients like Claude.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with amoCRM, providing access to deals, contacts, companies, notes, tasks, and custom fields via natural language.12 npmMIT