ЮKassa через API и MCP: 34 метода, один конверт отказа и ключ идемпотентности не на всех POST
Разбираем API ЮKassa изнутри: платежи, возвраты, чеки, выплаты и сделки чужого магазина — не биллинг самой Миры, — где спецификация расходится с интуицией про Idempotence-Key, почему создание платежа не считается расходом и как всё это доступно через MCP-сервер Mira без единой строки кода.
Обзор
Важная оговорка сразу: это не про то, как Mira принимает вашу оплату подписки — свой биллинг у неё есть и живёт отдельно. Это про ВАШ магазин: если вы принимаете платежи через ЮKassa, у вас есть личный кабинет со своей парой shop_id и secret_key, и именно этими ключами агент читает и меняет данные ВАШЕЙ кассы — платежи, возвраты, чеки, выплаты, сделки.
Mira подключает этот API целиком — 34 действия в десяти разделах — и отдаёт его в Claude через MCP. Ниже — что там есть на самом деле и что расходится с интуицией.
Что доступно
| Раздел | Действий | Что даёт |
|---|---|---|
| Платежи | 5 | создание, список, информация, подтверждение, отмена |
| Возвраты | 3 | создание, список, информация |
| Чеки (54-ФЗ) | 3 | создание, список, информация |
| Выплаты | 4 | создание, список, поиск, информация |
| Сделки | 3 | распределение платежей между магазином и продавцами (для платформ) |
| Персональные данные | 2 | данные получателя выплаты — самозанятые, физлица |
| Счета | 2 | страница оплаты со своей ссылкой |
| Способы оплаты | 2 | сохранённый способ для рекуррентных списаний |
| Вебхуки | 3 | подписка на уведомления о событиях |
| Кассовые ссылки | 5 | офлайн-точки: активация, смена точки, деактивация, реактивация |
| Справочники | 2 | список банков СБП, настройки магазина |
Идемпотентность — не на всех POST
Правило «на каждый создающий запрос — заголовок Idempotence-Key (UUID), чтобы повтор после сетевого сбоя не создал платёж дважды» звучит абсолютным. Спецификация говорит иначе: у деактивации и реактивации кассовой ссылки — тоже POST, но заголовок не заявлен вовсе. Отправить его туда, где поставщик не ждёт, не смертельно, но и не гарантированно безопасно — мы сверили это по каждому пути спецификации, а не по общему правилу «раз POST — значит нужен», и таблица вызовов несёт это знание полем идемпотентно, а не единым флагом на весь HTTP-метод.
Создание платежа не тратит деньги
Барьер записи в Mira делит пишущие действия на «просто меняет» и «ещё и тратит деньги». Возврат и выплата — очевидный расход: деньги уходят со счёта магазина. А вот создание платежа, хоть и стоит под тем же барьером как видимое снаружи действие (счёт, выставленный живому покупателю), деньгами магазина не считается — они, наоборот, ПРИХОДЯТ. Подтверждение платежа (capture) — по той же логике: оно завершает списание с покупателя в пользу магазина. А вот отмена платежа деньги ОСТАНАВЛИВАЕТ, а не тратит — снимает удержание с карты, не потратив ничего.
Один конверт отказа на весь API
В отличие от площадок с семью формами ошибки по разделам (например, у Авито), ЮKassa отвечает одной формой всегда:
{"type": "error", "code": "invalid_request",
"description": "Invalid amount value", "parameter": "amount"}
Разбор — одна функция, а не таблица форм: description — человеческий текст, code и parameter уточняют его, и оба необязательны.
Постраничный обход одним действием
Списки платежей, возвратов, чеков, сделок и выплат ходят курсором (cursor/next_cursor), лимит — 100 записей за страницу. Инструмент добавляет составное действие list_all, которое пролистывает курсор само, до разумного потолка страниц — агенту нужна сводка за период, а не выгрузка истории магазина целиком за один вызов.
Живая проверка
Ключей для боевой пары shop_id/secret_key нет — раздел появится, когда владелец магазина их даст. Разбор запроса, подстановка пути, барьер записи и заголовки проверены против собственного HTTP-сервера в тестах (перехват на транспорте — тот же приём, что у Авито и Ozon Performance), а не против api.yookassa.ru.
Новости в Telegram
Подпишитесь на каналы — новые статьи и обзоры каждый день.
Источники
Ещё по теме «MCP-серверы»
1С через OData: как достать данные учётной базы без единой строки кода на встроенном языке
Разбираем стандартный OData-интерфейс 1С:Предприятие: чем он отличается от API конкретного сервиса, как узнать, что вообще опубликовано на конкретной базе, как проводить и отменять проведение документов и как всё это работает через MCP-сервер Mira без единой строки кода на встроенном языке.
3 сентября 2026 г.CloudPayments через API и MCP: 32 метода, конверт отказа, который не отличает 400 от отклонённой карты, и Public ID, который просят дважды
Разбираем API CloudPayments изнутри: платежи, выплаты, подписки и счета чужого магазина — не биллинг самой Миры, — почему списание по сохранённому токену считается расходом, а обычная оплата картой нет, зачем платёжной ссылке СБП собственный Public ID в теле запроса поверх Basic Auth, и как всё это доступно через MCP-сервер Mira без единой строки кода.
3 сентября 2026 г.Финтабло через API и MCP: 112 методов финучёта, семь путей без объявленных параметров и почему тут нет отчётов
Разбираем API Финтабло изнутри: 112 методов финансового учёта — ДДС, счета, контрагенты, сделки, зарплата, имущество, ОПиУ, — где спецификация поставщика сама не дописывает параметры пути, почему у четырёх PUT-запросов id дублируется в теле и куда делись отчёты. Всё доступно через MCP-сервер Mira без единой строки кода.
3 сентября 2026 г.