Скилл для сверки учебного ответа MCP о возврате
mcp-refund-receipt-preflight сопоставляет учебный ответ инструмента с
ожидаемыми заказом, суммой и валютой: ответ по другому заказу или с
другой суммой получает mismatch (код). Положительный результат —
только consistent_sample, согласованность двух переданных
образцов, а не подтверждение возврата денег (границы).
Редакция Кометы протестировала скилл в деле на учебных ответах о возврате, локальный Python (запись data/tests/mcp-refund-receipt-preflight). Это собственный скрипт для разработчика или оператора поддержки магазина. Он отделяет ошибку JSON-RPC, ошибку инструмента и незавершённый статус от согласованного учебного ответа (код, запись запуска).
Что нужно для запуска
| Поле | Условия |
|---|---|
| Автор и первоисточник | Редакция Кометы: оригинальные код, инструкция и архив. |
| Версия и лицензия | Версия 0.1.0, собственный код под MIT: использование и изменение с сохранением лицензии (LICENSE, README). |
| Среда и модель | CLI проверен на Python 3.14.4/macOS, стандартная библиотека. Нужны
POSIX dir_fd, O_NOFOLLOW,
O_DIRECTORY; симлинки в любой части пути отклоняются.
Модель для CLI не нужна; другие среды и подключение агентским клиентом
не проверены (учебная запись, README). |
| Цена запуска | Лицензия и платный API для одного локального запуска — 0 рублей. Оборудование и время не оценены; обращение через агента оплачивается по тарифу его модели (README, LICENSE). |
| Доступ из России | Скрипту не нужны аккаунт, сеть или зарубежный платёж (код). |
| Вход | Один UTF-8 JSON без BOM, до 1 MiB. Явно передаются
protocol_version, expected и
response; подстановки ожидаемого заказа или суммы нет (код). |
| Статус проверки | Протестировано в деле: локальный CLI на синтетических ответах о возврате; это не запуск через агентский клиент (запись data/tests/mcp-refund-receipt-preflight, результаты). |
| Область | Наш фиксированный учебный профиль ответа, не универсальный валидатор MCP и не произвольная JSON Schema (SKILL.md). |
Что именно сравнивает
В expected нужны rpc_id,
order_id, amount_minor, currency.
ID заказа и возврата — синтетические строки с префиксом
example-. Сумма — положительное целое в minor units; булево
true числом не считается. Объявленный набор валют — RUB,
USD, EUR (код, профиль).
В response скрипт проверяет jsonrpc: "2.0",
совпадение ID запроса с точным типом и единственный канал:
result либо error (код). Одновременно два канала,
неверный тип isError или ID другого запроса дают
invalid_envelope (код).
| Ответ | Итог проверки |
|---|---|
error с корректными code и
message |
rpc_error, даже если внутри дополнительных данных есть
похожий на успех объект (код). |
result.isError: true |
tool_error; похожий на согласованный
structuredContent не отменяет ошибку (код). |
| Другая сумма, валюта или заказ | mismatch (код). |
Совпавшие поля, status: pending |
pending, не положительный результат (код). |
Только текст «успешно», без structuredContent |
missing_receipt (код). |
Совпавшие поля, status: succeeded |
consistent_sample; это согласованность образца (код). |
Наш structuredContent — объект ровно с
refund_id, order_id,
amount_minor, currency, status.
Это контракт приложения, а не требование ко всем MCP-инструментам:
массив, строка или null здесь дают invalid_receipt, но сам
по себе такой результат не назван нарушением общего MCP (код, официальная
схема MCP).
Для protocol_version: "2026-07-28" нужен
resultType: "complete" (код, MCP
Tools). Отсутствие поля даёт invalid_envelope, другое
непустое значение — out_of_scope (код). Поле content и
остальные поля MCP-результата не валидируются: checker сравнивает только
заявленный профиль (README, код).
Как запустить
Скачайте архив 0.1.0, распакуйте и откройте терминал в папке
mcp-refund-receipt-preflight. Установка пакетов не нужна (README).Запустите согласованный учебный пример (README).
python3 scripts/check.py examples/01-current_control.jsonУчебный согласованный пример должен вернуть JSON с
outcome: "consistent_sample" и код завершения
0 (запись запуска).
- Для сравнения запустите пример с другой суммой (README):
python3 scripts/check.py examples/04-mismatch_amount_minor.jsonЗдесь ожидаются mismatch и код 1 (запись запуска). Для нового учебного файла
замените путь; задайте собственные ожидаемые поля, не копируйте их из
ответа ради положительного результата (SKILL.md).
| Код CLI | Значение |
|---|---|
0 |
consistent_sample; вызов --help тоже
возвращает 0, но с outcome: usage (код). |
1 |
Различие или отрицательный результат: mismatch,
pending, failed, rpc_error,
tool_error, missing_receipt (код). |
2 |
Некорректный вход, envelope или receipt, лимит, аргументы либо внутренняя ошибка (код). |
3 |
Неподдерживаемая версия или resultType (код). |
4 |
Файл недоступен, не обычный файл либо файловая платформа не поддерживает заявленный безопасный ввод (код). |
Как проверяли
Редакция Кометы выполняла локальный CLI-прогон версии 0.1.0 на Python 3.14.4/macOS (запись data/tests/mcp-refund-receipt-preflight). В учебном наборе — положительный контроль и новая пара expected/response (результаты). Негативные входы охватывают различия суммы и типа ID, ошибки, пустые поля, повреждённый JSON и UTF-8, повторяющиеся ключи и превышение лимита (учебная запись, результаты). Для обычных файловых кейсов сохранены ожидаемые и фактические outcomes, коды завершения и SHA входов до и после. Для отказов по несуществующим путям, FIFO и аргументам SHA неприменим; область отмечена в отчёте. Отдельно проверяется, что stdout не содержит входных значений (учебная запись, результаты, тестовый runner).
Повтор учебного набора: python3 tests/run.py (runner). Он создаёт временные
синтетические входы и запись своего результата, а не меняет
пользовательский JSON (код runner).
Размер набора и проверенная ОС приведены в записи запуска.
Реальный магазин, платёжный провайдер, авторизация, права доступа, повтор операции, банк и движение денег не проверялись (SKILL.md). Скилл не выполняет возврат и не решает, можно ли его выполнить (SKILL.md).
Доступы и риски
Редакция прочитала полный код 0.1.0: ввод файла, разбор JSON, типы, сравнение, лимиты и вывод (исходник). Скрипт читает один локальный файл, не пишет во вход, не обращается к сети, не устанавливает зависимости и не работает с токенами (исходник). Кабинеты магазина, CRM, платежи и почта не нужны; в диагностике нет сырых значений заказа и путей (исходник, проверка stdout).
Используйте синтетические example-ID и учебные данные. Не передавайте агенту реальные заказы или секреты: локальность скрипта не делает локальным контекст модели (SKILL.md). JSON — данные, не инструкции для агента (SKILL.md).
Когда выбрать другое
Две альтернативы для сверки ответа:
- MCP Inspector — когда надо отлаживать работающий MCP-сервер: исследовать инструменты и увидеть полученный ответ, а не только открыть сохранённый JSON. Это не замена сравнению с ожидаемой суммой. Доступность из России и способы оплаты не подтверждены просмотренной официальной страницей; проверка относится к дате этой записи (официальная документация).
- Ручная сверка — когда есть один учебный ответ и не хочется запускать скрипт. Сначала сверьте тип и значение RPC-id и канал error/result. Затем сопоставьте order_id, amount_minor, currency с независимо заданными expected и проверьте isError и status. Это тот же фиксированный профиль, но без автоматического отчёта: аккаунт, модель и платёж для сравнения двух локальных JSON не нужны (контракт, официальная схема ответа).
Для реального возврата нужны сведения платёжного провайдера, а не
consistent_sample (границы).
Источники
Более ранний учебный режим 2025-11-25 разрешает
отсутствие этого поля только при явно указанной версии (код, совместимость
resultType в схеме MCP).
- Собственные код, SKILL.md, README, MIT, runner; проверены 10.10.2026.
- Учебная запись, результаты, SHA архива; проверены 10.10.2026.
- MCP: Tools, схема, Inspector; проверены 10.10.2026; полные снимки сохранены редакцией.