Юздеск через API и MCP: почему у поддержки нет спецификации, а токен ошибок не спорит с HTTP-статусом
Разбираем API Юздеска изнутри: тикеты, клиенты, агенты, чат и база знаний — почему у хелпдеска нет машиночитаемой спецификации, зачем разбирать HTTP-статус ДО тела ответа, и как всё это доступно через MCP-сервер Mira без единой строки кода.
Обзор
Юздеск — российский хелпдеск: тикеты, чат с клиентами, база знаний, отчётность по агентам. Подключиться к API можно самому — в настройках компании есть готовый api_token API-канала, без заявок и одобрений.
Mira подключает этот API — 27 действий из 47 статей документации — и отдаёт его в Claude через MCP. Ниже — что там есть на самом деле и что расходится с интуицией.
Что доступно
| Раздел | Действий | Что даёт |
|---|---|---|
| Тикеты | 6 | список, отдельный, создать, обновить, комментарий, теги |
| Клиенты | 4 | список, отдельный, создать, обновить |
| Агенты | 6 | список, создать/обновить/удалить, группы, история рабочих статусов |
| Чат | 3 | создать сообщение от клиента, ответить от агента, переназначить |
| Каналы | 1 | список каналов компании |
| База знаний | 6 | разделы, статьи, просмотры, рейтинг, AI-поля статьи |
| Доп. поля | 1 | дополнительные поля тикетов |
У хелпдеска нет спецификации
В отличие от банков волны финансовых коннекторов — у Модульбанка и Т-Банка есть боевой Swagger, у ЮKassa расписан каждый путь, — Юздеск не публикует ни OpenAPI, ни Swagger вовсе. Документация — обычные текстовые статьи, разложенные по 13 категориям и 47 страницам. Пришлось собрать снимок контракта руками: пройти каждую статью, выписать метод, путь и обязательные поля, сохранить как отдельный JSON-файл и сверять с ним таблицу вызовов тем же тестом, каким сверяются с настоящим Swagger остальные коннекторы. Разница не в строгости проверки — она осталась той же самой, — а в том, откуда взялись исходные данные.
HTTP 200 — это ещё не успех
Самое неочевидное место API. Юздеск не использует HTTP-статус для логических отказов: неверный токен, отсутствующий обязательный параметр, превышенный лимит запросов — всё это приходит с HTTP 200 и телом вида {"code": 112, "error": "invalid token"}. Запрос без единого параметра и запрос с заведомо неверным токеном отвечают ОДИНАКОВО по статусу — отличие видно только внутри тела.
Это переворачивает обычный порядок разбора. У большинства API сначала смотрят на статус (200 — читай тело как данные, 4xx/5xx — читай как отказ), а Юздеску нужен третий шаг: статус 200 у Юздеска ничего не гарантирует, пока не заглянешь в поле code. При этом настоящий отказ инфраструктуры — например, обратный прокси, ответивший 502 без единого байта JSON, — всё ещё остаётся настоящим HTTP-статусом, и его нужно ловить раньше попытки разобрать тело как конверт Юздеска. Разбор идёт в таком порядке: сначала честный HTTP 429/5xx (если он есть), и только потом — код внутри тела.
Комментарий и ответ в чате — разного рода «видно снаружи»
У большинства коннекторов барьер записи делит действия на «просто меняет свои данные» и «ещё и тратит деньги». У Юздеска денег нет вовсе — хелпдеск не банк, — но есть третье измерение: кому видно результат.
Комментарий к тикету можно оставить публичным (уходит клиенту письмом или в канал тикета) или приватным (виден только команде) — одним и тем же действием, разным значением поля type. А вот ответ в чате устроен иначе: у него нет приватного варианта вообще — chat_send_message всегда доставляет сообщение клиенту, единственный способ ответить в чате от лица агента. Барьер записи это не различает — оба действия одинаково требуют разрешения на запись у источника, — но при выборе действия имеет смысл понимать разницу.
Два хоста на 47 статей
Почти весь API живёт на одном адресе — api.usedesk.ru. Ровно один метод (обновление AI-описания статьи базы знаний, нужного для ИИ-поиска) ходит на другой хост, secure.usedesk.ru. Мелочь, которая легко потерялась бы при переносе кода по шаблону «один базовый адрес на всех» — и не потерялась, потому что таблица вызовов хранит хост как явное поле у каждого действия, а не константу модуля.
Что не вошло — и почему
20 из 47 статей документации не стали действиями коннектора, и у каждой группы — своя причина, не общее «не успели»:
- Общая информация (2 статьи) — введение в API и получение
api_token: вводные страницы, а не методы, которые можно вызвать. - Виджет (7 статей) — браузерный JavaScript SDK для установки чата на сайт клиента. Это код, который встраивают тегом
<script>, а не HTTP-эндпоинт, который можно вызвать с сервера. - Webhooks (4 статьи) — Юздеск сам присылает их НАМ при новом тикете или сообщении. Направление входящее: не то, что вызывает агент.
- Правила (4 статьи) — настройка внутри Юздеска, чтобы он сам слал запросы в другую систему по триггеру. Мы не вызываем этот API — максимум могли бы его принимать.
- Дополнительные блоки (1 статья) — тот же класс, что «Правила»: динамический блок — это Юздеск, который сам делает запрос на URL из своих настроек и ждёт HTML в ответ, а не вызов, который делает агент.
- Коды ошибок и справочник статусов (2 статьи) — статичные таблицы в документации, не методы.
Живая проверка
Живых ключей от боевой компании Юздеска нет — раздел появится, когда владелец кабинета их даст. Разбор адреса и тела, барьер записи, размещение api_token (в теле у POST-запросов, в query у GET) и разбор конверта отказа проверены против собственного HTTP-сервера в тестах (перехват на транспорте — тот же приём, что у Авито, Модульбанка и ЮKassa), а не против api.usedesk.ru.
Новости в Telegram
Подпишитесь на каналы — новые статьи и обзоры каждый день.
Источники
Ещё по теме «MCP-серверы»
1С через OData: как достать данные учётной базы без единой строки кода на встроенном языке
Разбираем стандартный OData-интерфейс 1С:Предприятие: чем он отличается от API конкретного сервиса, как узнать, что вообще опубликовано на конкретной базе, как проводить и отменять проведение документов и как всё это работает через MCP-сервер Mira без единой строки кода на встроенном языке.
3 сентября 2026 г.Boxberry через API и MCP: документация переехала в Яндекс, а API остался жив
Разбираем API Boxberry для интернет-магазинов: один эндпоинт на 34 действия, поле method вместо путей, отказ, который иногда приходит на HTTP 200, и документация, которая в 2026 году целиком переехала на хостинг Яндекс Доставки — а сам API остался работать. Как всё это доступно через MCP-сервер Mira без единой строки кода.
3 сентября 2026 г.СДЭК через API и MCP: 46 методов, «принято» ≠ «выполнено» и две формы отказа
Разбираем CDEK API v2 изнутри: 46 методов на заказы, курьера, калькулятор и печатные формы, асинхронную обработку, при которой «202 Accepted» не значит «готово», и две разные формы отказа — и как всё это работает через MCP-сервер Mira без единой строки кода.
3 сентября 2026 г.