# Sanatory.ru — руководство для ИИ-агентов > Санаторий.ру — сервис подбора и бронирования санаториев и спа-отелей России и зарубежья. Поиск по направлению, датам, составу гостей и профилю лечения. Язык сайта — русский, валюта — RUB. Краткая карта: https://sanatory.ru/llms.txt. Этот файл: https://sanatory.ru/llms-full.txt. Оба доступны через `get_site_docs` с `doc: llms` или `doc: llms-full`. Это руководство по доступу к данным и их интерпретации. Оно не заменяет текущий тариф, правила бронирования или условия акции. Изменяемые коммерческие условия и тексты FAQ не дублируются здесь: читайте соответствующую публичную страницу в Markdown. ## Подключение и возможности удалённого MCP - Endpoint: `https://mcp.sanatory.ru/api/mcp`. - Транспорт: Streamable HTTP. - Каталог, поиск, цены и ссылки — без ключа и регистрации. - Заказы, бронирование и ссылки на оплату — по OAuth 2.1 с PKCE (динамическая регистрация клиента, вход пользователя на сайте). Бронь на почту без аккаунта сервер может оформить без входа; такой заказ открывается парой `order_code` и `order_key`. Метаданные: https://sanatory.ru/.well-known/oauth-protected-resource, порядок и ограничения — https://sanatory.ru/auth.md. - Описание подключения: https://mcp.sanatory.ru/. - Сервер ищет, считает цены и бронирует: `prepare_booking` — итог для подтверждения, `create_booking` — бронь после явного согласия пользователя. Деньги сервер не списывает: оплата — по `payment_link` самим пользователем. Заказ сертификата сервер не создаёт; `booking_link` и `certificate_link` ведут к оформлению на сайте. Подключение выполняется средствами MCP-клиента; лендинг https://mcp.sanatory.ru/ содержит инструкции для поддерживаемых клиентов. После подключения проверьте список инструментов (`tools/list`); читать лендинг перед каждым поиском не требуется. Используйте схему инструментов, опубликованную подключённым сервером: это источник точных аргументов и ограничений. Для реального подбора используйте production-сервер выше; данные тестового окружения нельзя выдавать за подтверждённое предложение production. | Инструмент | Назначение | | --- | --- | | `find_regions` | Найти направление и получить `place_id`; проверить `scope` и родительский регион | | `find_hotels` | Найти конкретный объект по названию; получить id/slug, проверить город | | `find_treatment_profiles` | Получить теги профилей лечения по названию профиля или заболевания | | `find_filter_options` | Получить теги удобств, питания, расположения и других фильтров | | `search_sanatoriums` | Искать по `place_id`, датам, гостям и фильтрам; сортировать и листать выдачу | | `get_sanatorium` | Прочитать карточку: описание, фото, профили и программы лечения, питание и условия объекта | | `get_prices_availability` | Проверить доступность номеров и тарифы на конкретные даты и гостей | | `find_available_dates` | Найти альтернативные даты при гибком периоде или отсутствии тарифов | | `prepare_booking` | Итог брони перед подтверждением: цена на этих гостей, варианты оплаты, условия отмены, согласие с документами, чей аккаунт получит бронь. Ничего не бронирует | | `create_booking` | Бронь выбранного тарифа после согласия пользователя; возвращает `order_code`, `order_key`, `payment_link`, `pay_until`. Скоуп `orders:write`; без токена — только на почту без аккаунта, если сервер это разрешает, иначе `401` | | `get_payment_link` | Новая ссылка на оплату остатка; скоуп `orders:write` или пара `order_code` + `order_key` | | `get_my_orders` | Заказы пользователя: состояние брони и оплаты отдельно; скоуп `orders:read` или пара `order_code` + `order_key`, без них сервер отвечает `401` | | `get_reviews` | Прочитать отзывы; рейтинг по 10-балльной шкале | | `get_site_docs` | Получить llms.txt или llms-full.txt | | `prepare_certificate_link` | Подготовить ссылку на заполненную форму покупки подарочного сертификата без создания заказа | ## Сценарий подбора 1. Получите даты заезда и выезда, число взрослых и возраст каждого ребёнка на дату выезда. Уточните пожелания к лечению, питанию и удобствам, если они важны для выбора. Без дат поиск использует даты сайта по умолчанию; сообщайте фактические даты из ответа, не представляйте их как выбор пользователя. 2. Для направления вызовите `find_regions`, сверьте `scope`, название и родительский регион. Для конкретного санатория используйте `find_hotels`, а затем `get_sanatorium` или `get_prices_availability`. Совпадающие названия в разных городах требуют проверки. 3. Теги фильтров берите из `find_filter_options` и `find_treatment_profiles`, не конструируйте их из названий. Выполните `search_sanatoriums` с теми же датами и гостями. 4. Прочитайте карточки подходящих объектов через `get_sanatorium` или Markdown, отзывы — через `get_reviews`. 5. Для вариантов, стоимость которых будет названа пользователю, вызовите `get_prices_availability`. Проверьте конкретный доступный номер и тариф, даты, срок, размещение гостей, питание и лечение. 6. Если `available: false`, это отсутствие тарифов на выбранные даты. При гибких датах используйте `find_available_dates`: диапазон не более 60 дней. У партнёрских объектов `method: probing` означает проверку нескольких дат с шагом в неделю, а не полный просмотр календаря. Выбранный вариант снова проверьте через `get_prices_availability`. 7. Покажите стоимость за весь срок вместе с датами, составом гостей, номером и включёнными услугами. Передайте `deep_link` объекта или `booking_link` тарифа из ответа без пересборки URL — или забронируйте через MCP (сценарий 11). ## Практические сценарии работы с MCP Все примеры ниже относятся к удалённому MCP по адресу `https://mcp.sanatory.ru/api/mcp`, описание подключения — https://mcp.sanatory.ru/. Это последовательности вызовов инструментов, а не команды браузера и не готовые результаты поиска. В JSON `name` — имя инструмента, `arguments` — его аргументы. Массив показывает порядок действий; это не единый пакет для отправки в endpoint. Клиент вызывает каждый инструмент отдельно через MCP. Значения `` и `` заменяйте данными предыдущего ответа. Даты в примерах иллюстративные: всегда подставляйте даты пользователя. Не вызывайте зависимый шаг, пока не выбран правильный объект или регион. ### 1. Подобрать санаторий в Сочи на неделю с ребёнком Запрос: «Сочи, 1–8 октября, один взрослый и ребёнок 6 лет». Уточните год и возраст ребёнка на выезд; если они уже известны из разговора, используйте их повторно. ```json [ {"name":"find_regions","arguments":{"query":"Сочи","limit":5}}, {"name":"search_sanatoriums","arguments":{"place_id":"","check_in":"2026-10-01","check_out":"2026-10-08","adults":1,"children_ages":[6],"hotel_types":["sanatorium"],"sort_by":"rating","limit":6}}, {"name":"get_prices_availability","arguments":{"id_or_slug":"","check_in":"2026-10-01","check_out":"2026-10-08","adults":1,"children_ages":[6]}} ] ``` После `find_regions` выберите город по `scope`, названию и родительскому региону. Последний вызов повторите для каждого варианта, цену которого планируете показать. Итог: несколько доступных номеров, сумма за весь заезд для взрослого и ребёнка, питание, лечение и ссылки. Не обещайте ребёнку взрослую лечебную программу только по отметке `treatment`. ### 2. Найти конкретный санаторий по названию Запрос: «Посмотри “Русь” в Ессентуках». ```json [ {"name":"find_hotels","arguments":{"query":"Русь","limit":10}}, {"name":"get_sanatorium","arguments":{"id_or_slug":""}} ] ``` Сверьте город найденных объектов до второго шага: одно название может встречаться на разных курортах. Не добавляйте `city` к вызову, если такого аргумента нет в опубликованной схеме удалённого инструмента. Если пользователю нужно описание, достаточно карточки или её Markdown-версии. Если нужна стоимость — получите даты и гостей и вызовите `get_prices_availability` для выбранного объекта. Итог: карточка именно нужного санатория; при неразрешимой неоднозначности — короткое уточнение города или объекта. ### 3. Подобрать по профилю лечения Запрос: «Нужен санаторий в Кисловодске с лечением органов дыхания». ```json [ {"name":"find_regions","arguments":{"query":"Кисловодск"}}, {"name":"find_treatment_profiles","arguments":{"query":"органы дыхания","limit":10}} ] ``` Эти два поиска независимы. Затем передайте выбранный `place_id`, полученный тег в `treatment_profiles`, даты и гостей в `search_sanatoriums`. У подходящих объектов прочитайте программы через `get_sanatorium` и проверьте тарифы через `get_prices_availability`. Итог: объекты с нужным профилем и тарифы, где лечение действительно включено. Поиск по заболеванию помогает найти профиль каталога; он не определяет противопоказания и не назначает лечение. ### 4. Найти бассейн, трёхразовое питание и детские удобства Запрос: «С ребёнком, нужен бассейн, детская комната и трёхразовое питание». ```json [ {"name":"find_filter_options","arguments":{"query":"бассейн","categories":["amenities"],"limit":20}}, {"name":"find_filter_options","arguments":{"query":"детская комната","categories":["amenities"],"limit":10}}, {"name":"find_filter_options","arguments":{"categories":["meal_options"],"limit":20}} ] ``` Из результатов выберите точные значения: обычный бассейн, крытый, подогреваемый и с морской водой — разные требования. Передайте теги удобств в `amenities`, питания — в `meal_options`, вместе с направлением, датами и гостями в `search_sanatoriums`. В карточке уточните режим работы бассейна и детской комнаты, возрастные ограничения; в тарифе — включены ли посещения и питание в стоимость. Отсутствие сведений не означает бесплатное или круглогодичное пользование. Итог: варианты, соответствующие пожеланиям, с явно отмеченными условиями, которые ещё нужно уточнить. ### 5. Сравнить несколько вариантов в пределах бюджета Запрос: «До 100 000 ₽ за двоих на неделю, желательно с лечением». Уточните направление, даты и что входит в бюджет: проживание, питание, лечение, дорога. Для первичной выдачи используйте `search_sanatoriums` с `sort_by: "price"`, `sort_direction: 1`, теми же датами и гостями; просматривайте следующие страницы через `page`, пока `has_more: true`. Для выбранных объектов выполните `get_prices_availability` с одинаковыми параметрами. Сравнивайте итоговую цену конкретного доступного тарифа за весь срок с бюджетом, а не `price_from` и не цену за сутки. Параметры `price_min` / `price_max` поиска не заменяют эту проверку: не считайте их универсальным ограничением общей стоимости поездки без подтверждения единицы расчёта. Итог — таблица: объект, номер, даты, сумма за всех гостей, питание, лечение, условия отмены и `booking_link`. Выбирайте сравнимые тарифы; если подходящих вариантов в проверенной части выдачи нет, скажите об этом, не утверждая, что весь каталог исчерпан. Отдельного инструмента сравнения не требуется: таблицу составляет агент из проверенных ответов. ### 6. Проверить отзывы о питании, лечении или отдыхе с детьми Запрос: «В этом санатории хорошо кормят? Есть ли жалобы на номера?». ```json [ {"name":"get_reviews","arguments":{"id_or_slug":"","sort":"recent","limit":5}}, {"name":"get_reviews","arguments":{"id_or_slug":"","sort":"negative","limit":5}} ] ``` Сначала получите id/slug из поиска или уже выбранной карточки. Для дополнительного контекста можно посмотреть `sort: "positive"`; при необходимости листайте `page`. Сопоставьте повторяющиеся замечания, даты отзывов и конкретные темы. Негативная выборка намеренно смещена: не представляйте её как долю недовольных гостей и не считайте несколько прочитанных отзывов репрезентативной статистикой. Итог: кратко описанные сильные стороны и жалобы с указанием, что это мнения гостей, а не гарантии сервиса. Рейтинг показывается по 10-балльной шкале. ### 7. Найти другие даты, если мест нет или пользователь гибок Запрос: «В начале октября мест нет. А когда можно на семь ночей в октябре?». ```json [ {"name":"find_available_dates","arguments":{"id_or_slug":"","from":"2026-10-01","to":"2026-10-31","nights":7,"adults":1,"children_ages":[6],"max_options":3}}, {"name":"get_prices_availability","arguments":{"id_or_slug":"","check_in":"","check_out":"","adults":1,"children_ages":[6]}} ] ``` Во второй вызов подставьте даты выбранного окна из ответа. `to` — крайняя дата выезда, а не последнего заезда; диапазон поиска не больше 60 дней. Состав гостей сохраняйте. У партнёрских объектов `method: probing` означает выборочную проверку дат с шагом в неделю, поэтому результат нельзя называть полным календарём свободных мест. Итог: проверенные альтернативы с датами и стоимостью. Если нужно сравнить, когда дешевле, сравните найденные окна, явно указав пределы проверенного диапазона; не обещайте абсолютный минимум за сезон. ### 8. Разобраться с неполной выдачей или тарифом на другой срок Запрос: «Почему показан курс на 15 дней, если я искал неделю?». Проверьте `stay`, даты, длительность и минимальный срок конкретного тарифа. При `matches_requested_dates: false` объясните, на какой срок он рассчитан. Если поля противоречат друг другу, не пересчитывайте цену пропорционально и не подменяйте даты: выберите другой однозначный тариф или сообщите о расхождении. Если поиск вернул меньше объектов, чем `limit`, но `has_more: true`, продолжайте следующей страницей с теми же фильтрами. `total_catalog` не является числом доступных предложений. Если регион не дал результатов, следуйте подсказке поиска и проверьте город внутри региона через `find_regions`. Не меняйте обязательные условия пользователя без явного обозначения. Итог: объяснение ограничения и подходящие варианты, если они найдены; отсутствие одного тарифа не означает отсутствие всех вариантов поездки. ### 9. Подобрать акцию или новогодний отдых через Markdown и MCP Запрос: «Есть акции?» или «Что можно на Новый год с банкетом?». Прочитайте https://sanatory.ru/promo.md или https://sanatory.ru/new_year.md. Markdown помогает найти объекты и понять тематику подборки; он не подтверждает стоимость и наличие для пользователя. Не подменяйте даты пользователя фиксированными датами новогодней страницы. Возьмите объект из подборки, разрешите его название через `find_hotels` и прочитайте `get_sanatorium`. Затем проверьте `get_prices_availability` на реальные даты и гостей. Банкет, детская программа и лечение требуют проверки состава тарифа и условий объекта; период тарифа не обязательно совпадает со сроком покупки по акции. Итог: актуальные для заданного заезда тарифы и объяснение, какие праздничные услуги включены. Не придумывайте аргументы `promo`, `new_year` или инструменты поиска акций, если их нет в `tools/list` удалённого сервера. ### 10. Ответить об условиях, сертификатах или отмене Запрос: «Можно подарить сертификат?» или «Какие условия отмены?». ```json [ {"name":"get_site_docs","arguments":{"doc":"llms-full"}} ] ``` Найдите в справочнике ссылку на нужный источник и прочитайте страницу в Markdown: https://sanatory.ru/certificates.md для подарочных сертификатов, https://sanatory.ru/mosgortour.md для сертификата «Мосгортура», FAQ — для общих правил. Для отмены выбранного тарифа также проверьте его `cancellation_policy` через `get_prices_availability`. Итог: ответ по соответствующему продукту и конкретным условиям. Получение справки не покупает сертификат и не отменяет заказ; существующее бронирование изменяется через предусмотренный сайтом сценарий или поддержку. Архивный кэшбэк нельзя предлагать как действующую скидку. ### 11. Забронировать выбранный тариф Запрос: «Подходит, бронируй». Если даты, гости или номер изменились с момента расчёта, повторите `get_prices_availability`. Соберите данные каждого гостя, включая детей: фамилию, имя, отчество (если есть), пол и дату рождения — как в документе; возраст детей сервер посчитает на дату выезда. Первый гость — взрослый, на него оформляется бронь; добавьте его почту и телефон. Ничего не придумывайте за пользователя. ```json [ {"name":"prepare_booking","arguments":{"id_or_slug":"","check_in":"2026-10-01","check_out":"2026-10-08","tariff_id":"","email":"","phone":"","guests":[{"last_name":"Иванова","first_name":"Анна","middle_name":"Петровна","gender":"female","date_of_birth":"1988-04-12"},{"last_name":"Иванов","first_name":"Миша","gender":"male","date_of_birth":"2020-05-03"}]}}, {"name":"create_booking","arguments":{"…":"те же аргументы","payment":"","expected_total":"<его total>","terms_accepted":true}} ] ``` Между вызовами покажите итог `prepare_booking` целиком: санаторий, даты и время заезда и выезда, номер, тариф и что в него входит, гостей, контакты, варианты оплаты с суммами (сейчас, позже, всего), условия отмены дословно и `terms` со ссылками. Спросите способ оплаты и получите явное согласие с `terms`. `account.status: connect` — на почту уже есть аккаунт: предложите подключить его или указать другую почту. Итог: бронь с `order_code` и `payment_link`; пользователь оплачивает по ссылке до `pay_until`, иначе бронь отменится. Если цена изменилась, `create_booking` ничего не бронирует и называет новую сумму. Статус брони и оплаты — `get_my_orders`, новая ссылка — `get_payment_link`; для брони без аккаунта передавайте `order_code` и `order_key`. Вместо брони через MCP можно отдать `booking_link` тарифа — пользователь оформит поездку на сайте. ### 12. Подготовить подарочный сертификат для покупки Запрос: «Хочу подарить сертификат на 20 000 рублей, электронный, Анне Ивановой. Поздравление: “С днём рождения!”». Прочитайте https://sanatory.ru/certificates.md для актуальных условий. Вызовите инструмент с данными, которые пользователь сообщил для этого подарка; недостающие поля он сможет дописать в форме. ```json {"name":"prepare_certificate_link","arguments":{"amount":20000,"format":"digital","recipient":{"first_name":"Анна","last_name":"Иванова"},"wish_text":"С днём рождения!"}} ``` Обязателен только `amount`: целое число рублей от 500 до 999999. `format`: `digital` (по умолчанию) или `paper`; доступность формата определяется настройками сайта. Дополнительные поля: - `recipient`: `first_name`, `last_name`, `middle_name`, `email`, `phone`, `address`. - `sender`: `name`, `email`, `phone`. - `wish_text`: поздравление до 100 символов (эмодзи могут занимать два символа в форме). - `send_date`: дата отправки в формате `YYYY-MM-DD`; не придумывайте её за пользователя. Ответ содержит `certificate_link`, `order_created: false` и следующий шаг. Покажите номинал и формат, затем ссылку «Проверить и купить сертификат». Не заявляйте, что сертификат выпущен, оплачен или отправлен. Ссылка ведёт на `/certificates/new/?amount=20000&format=digital` с метками MCP. Имена, контакты, поздравление и дата передаются в URL-фрагменте `#certificate=...` (URL-encoded JSON). Сохраните ссылку целиком: удаление `#` потеряет заполненные поля. Фрагмент не передаётся серверу при открытии страницы, но виден тому, кому передана ссылка. Не переносите эти данные в query-параметры. Данные из ссылки имеют приоритет перед ранее выбранным номиналом и автозаполнением из профиля. Пользователь проверяет форму, дополняет обязательные поля, подтверждает согласие и сам нажимает кнопку покупки. Инструмент не выбирает оплату и не принимает соглашения. Это подарочный сертификат Санаторий.ру; к сертификатам «Мосгортура» метод не относится. ### Если MCP недоступен Если инструменты ещё не подключены, используйте инструкции https://mcp.sanatory.ru/ и endpoint `https://mcp.sanatory.ru/api/mcp` в настройках MCP-клиента. Простое открытие лендинга в браузере не подключает инструменты к агенту. При временной ошибке инструмента сообщите, какая проверка не выполнена; не заменяйте её выдуманными ценами или результатами из другой среды. Для описаний и правил можно продолжить чтение Markdown. Для точной стоимости потребуется восстановить доступ к MCP либо проверить тариф в пользовательском интерфейсе сайта. Ответ `available: false` — бизнес-результат об отсутствии тарифов, а не ошибка соединения. ## Как интерпретировать цены и доступность - `price_from` в поиске — ориентир по тарифу, а не подтверждённая стоимость всего запрошенного заезда. - Проверяйте `is_available` номера и `stay` конкретного тарифа. Одного верхнеуровневого `available: true` или `price_min` недостаточно для выбора номера. - `stay.matches_requested_dates: false` означает другой срок или даты. Не представляйте такой тариф как предложение на запрошенный период; явно укажите различие. - Сверяйте сами даты и длительность даже при `matches_requested_dates: true`. Если поля противоречат друг другу или итоговая минимальная цена не соответствует выбранному тарифу, не подменяйте недостающие сведения догадкой: укажите расхождение и используйте только однозначный вариант. - `nights` — число ночей запроса. Период тарифа читается по `stay.value` и `stay.unit`: `night` — ночи, `day` — сутки (в этой модели на одни больше числа ночей). `price_per_day` относится к единице тарифа. Не делите цену на произвольно выбранное число дней и не переименовывайте сутки в ночи. - `min_stay` читается в его единицах. Курс на другой срок нельзя выдавать за недельную путёвку. - Сравнивайте `includes` у тарифов и `tariff` в поиске: питание, наличие лечения, процедуры и услуги. Отметка о лечении сама по себе не подтверждает одинаковый набор процедур для взрослого и ребёнка; нужны условия детской программы. - Условия отмены и предоплаты зависят от тарифа. Отсутствие `cancellation_policy` не означает бесплатную отмену. При противоречии между полями и текстом условий направьте вопрос в поддержку до оформления. - `total_catalog` — размер каталога до фильтрации по доступности. Это не количество свободных вариантов. `limit` — верхняя граница выдачи; продолжайте через `page`, пока `has_more: true`. ## Markdown публичных страниц Для чтения содержимого используйте один из способов: ```sh curl -L -H 'Accept: text/markdown' 'https://sanatory.ru/' curl -L -H 'Accept: text/markdown' 'https://sanatory.ru/hotel/sanatorii-rus-4-zviezda/' curl -L 'https://sanatory.ru/hotel/sanatorii-rus-4-zviezda.md' ``` Суффикс `.md` добавляется к пути без завершающего `/`, перед `?` с параметрами запроса. Проверяйте HTTP-статус и `Content-Type: text/markdown; charset=utf-8`. Для согласованного через `Accept` представления используется `Vary: Accept`. Внутренний путь `/md/` не является публичным адресом Markdown: используйте заголовок или суффикс. Markdown предусмотрен для публичных страниц сайта: главной, санаториев, курортов, профилей лечения, каталога, рейтингов, блога, статей, FAQ и информационных страниц. Для части страниц работают специализированные сериализаторы; остальные публичные страницы преобразуются из HTML. Несуществующая или недоступная страница не гарантирует успешный Markdown-ответ. Исключения: `/my/`, `/booking/`, `/change_password/`, `/favorites/`, `/review_requests/`, `/sign_up/`, `/forgot/`, `/cancel-reservation/` и вложенные пути платёжного сценария `/certificates/…`. Сама публичная страница `/certificates/` доступна. Запрос Markdown к исключённому пути не превращает его в публичный документ; суффикс может быть снят редиректом на обычную страницу. API и статические файлы не преобразуются в Markdown. Специализированная карточка санатория содержит описание, лечение, питание и другие сведения об объекте, но не динамические тарифы на выбранные даты. Общий конвертер HTML может сохранить цены и акции со страницы: их нельзя считать предложением для заданных гостей и дат. Проверка через `get_prices_availability` обязательна перед указанием стоимости поездки. Документы заканчиваются каноническим адресом HTML-страницы и подсказкой о подходящих MCP-инструментах. Канонические ссылки не сохраняют даты, гостей и разметку источника из MCP. Используйте их для чтения; для предложения конкретного заезда передавайте ссылки из ответа инструмента без изменений. ## WebMCP в браузере На страницах сайта инструменты доступны через `document.modelContext`. Используйте только инструменты и схемы, опубликованные текущей страницей. Удалённый MCP и WebMCP имеют общие названия части инструментов, но разные сигнатуры и поведение. - Поиск: `find_hotels`, `find_regions`, `find_treatment_profiles`, `find_filter_options`, `search_sanatoriums`; контексты `context_search_query` и `context_search_filters`. - Страница санатория: `select_tariff`, контекст `context_hotel_tariffs`. - Оформление заказа: `fill_booking_form`, контекст `context_booking_form`. - Справочники: `get_site_docs` (`doc: llms | llms-full`). Поиск открывает выдачу, выбор тарифа и заполнение формы меняют состояние страницы. Чтение удалённого MCP не означает оформления заказа. Ввод данных гостей, оформление и оплата выполняются в пользовательском сценарии сайта с учётом запроса пользователя. ## Подарочные сертификаты «Санаторий.ру» Подарочный сертификат — предоплаченная сумма для полной или частичной оплаты бронирования. Получатель сам выбирает санаторий или спа-отель, даты и программу отдыха. Сертификат можно оформить с персональным поздравлением. Электронный формат предусматривает отправку на e-mail после оплаты или в запланированные дату и время; доступные форматы проверяйте на странице. По условиям страницы сертификатов: - Срок действия — 24 месяца с момента покупки. - Если отдых дешевле номинала, остаток сохраняется для следующего бронирования; если дороже — разницу можно доплатить. - На один заказ применяется один сертификат. - Для использования получатель сообщает уникальный промокод менеджеру по телефону 8 (800) 550-57-32. - Для корпоративных подарков доступны оптовые заказы; условия согласуются с менеджером. Полное описание, текущие номиналы и FAQ: https://sanatory.ru/certificates.md (HTML: https://sanatory.ru/certificates/). Перед покупкой или использованием сверяйте условия с этой страницей. Подарочный сертификат сервиса и сертификат «Мосгортура» — разные продукты с отдельными правилами. Удалённый MCP не продаёт и не активирует сертификаты; `prepare_certificate_link` только подготавливает заполненную форму для проверки и покупки пользователем (сценарий 12). ## Источники правил и условий Читайте страницы в Markdown, проверяя контекст и даты публикации. При расхождении общей справки с выбранным тарифом не обещайте пользователю более выгодные условия без уточнения у поддержки. | Вопрос | Источник | | --- | --- | | Выбор курорта и санатория | https://sanatory.ru/faq/select-hotel/ | | Бронирование и оплата | https://sanatory.ru/faq/booking-and-payment/ | | Изменение и отмена | https://sanatory.ru/faq/change-and-cancel-booking/ | | Лечение и документы | https://sanatory.ru/faq/treatment-program/ | | Информация на сайте | https://sanatory.ru/faq/additional-info/ | | Все разделы FAQ | https://sanatory.ru/faq/ | | Оплата | https://sanatory.ru/info/payment/ | | Подарочные сертификаты | https://sanatory.ru/certificates/ | | Мосгортур: оплата поездки сертификатом | https://sanatory.ru/mosgortour/ | | Акции | https://sanatory.ru/promo/ | | Корпоративные поездки | https://sanatory.ru/corporate-clients/ | | Сотрудничество с агентствами | https://sanatory.ru/for-agents/ | | Контакты | https://sanatory.ru/info/contacts/ | Не используйте этот файл для обещаний фиксированного кэшбэка, номиналов сертификатов, комиссии агентствам, универсального срока удержания неоплаченной брони или возврата денег. На странице https://sanatory.ru/cashback/ при проверке 8 сентября 2026 года указана акция с оплатой 25 августа — 10 сентября 2022 года и поездками до 25 декабря 2022 года. Эти условия архивные и не подтверждают кэшбэк для новой поездки. Санаторий.ру предлагает оплату поездки сертификатом «Мосгортура»: https://sanatory.ru/mosgortour/. Категории получателей, пределы суммы, сроки договора и поездки, порядок оплаты и ограничения проверяйте непосредственно на странице программы. Не переносите условия одного года на следующий; наличие страницы не подтверждает применимость сертификата к любой поездке. Лечебный профиль объекта не заменяет индивидуальное назначение процедур. Возраст приёма детей, доступность лечения ребёнку, документы и минимальная длительность программы проверяются по конкретному объекту. Не обещайте медицинский эффект за универсальное число дней. ## Навигация и контакты - Главная: https://sanatory.ru/. - Каталог: https://sanatory.ru/catalog/. - Курорты России: https://sanatory.ru/region/liechieniie-i-otdykh-v-rossii/. - Профили лечения: https://sanatory.ru/catalog/ozdorovlenie/. - Блог: https://sanatory.ru/blog/. - Карта сайта: https://sanatory.ru/sitemap.xml. Направления, профили лечения и факты о санаториях получайте из текущего каталога и карточек; этот файл не содержит статического рейтинга курортов. Поддержка и бронирование через Санаторий.ру: 8 (800) 550-57-32, hello@sanatory.ru. Для агентств: 8 (800) 775-35-72. `contacts` в MCP содержит контакты сервиса, а не прямые контакты санатория. Реквизиты и способы связи проверяйте на странице контактов.