медиа про еком + ии
Скилл

Скилл для сверки учебного ответа MCP о возврате

протестировано в деле на учебном JSON, локальный Python

Проверено 10 октября 2026: код и учебный запуск · Опубликовано 12 октября 2026

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, код).

Как запустить

  1. Скачайте архив 0.1.0, распакуйте и откройте терминал в папке mcp-refund-receipt-preflight. Установка пакетов не нужна (README).

  2. Запустите согласованный учебный пример (README).

python3 scripts/check.py examples/01-current_control.json

Учебный согласованный пример должен вернуть JSON с outcome: "consistent_sample" и код завершения 0 (запись запуска).

  1. Для сравнения запустите пример с другой суммой (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).

Когда выбрать другое

Две альтернативы для сверки ответа:

Для реального возврата нужны сведения платёжного провайдера, а не consistent_sample (границы).

Источники

Более ранний учебный режим 2025-11-25 разрешает отсутствие этого поля только при явно указанной версии (код, совместимость resultType в схеме MCP).

Редакция Кометы.