MCP tool считает деньги через float: как задать точный контракт

Для денежного инструмента согласуйте единицу, масштаб и правило округления до вызова. Число в JSON без валюты и семантики не объясняет, переданы рубли, копейки или промежуточное значение расчёта.

Разберём рабочий случай

Инструмент вычисляет скидку и передаёт результат следующему сервису. Разработчик складывает двоичные float и округляет на каждом этапе. Два пути вычисления могут расходиться на копейку. Агент видит правдоподобные числа и не замечает, что система по-разному округляет отдельные позиции и весь заказ. Строгая схема типа number проверит тип, но не исправит денежное правило.

Что изменить

Для выбранной валюты можно использовать целые минимальные единицы либо десятичную строку с явным масштабом; вариант зависит от внешнего API. Определите место округления и обработку отрицательных сумм. В Python создавайте Decimal из согласованной десятичной строки, если нужен именно её точный смысл, и задавайте режим округления явно. Не объявляйте ROUND_HALF_UP универсальным стандартом: ниже это только учебное правило. Между сервисами сохраняйте валюту и единицу вместе со значением.

from decimal import Decimal, ROUND_HALF_UP
value = Decimal("1.005").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
assert value == Decimal("1.01")

Как проверить результат

ПроверкаОжидаемое поведение
Учебное число 1.005 с округлением HALF_UP до сотыхПолучается десятичное значение 1.01; ожидаемый результат связан с явно выбранным правилом, а не случайной формулой float.
Пользователь передал сумму в рублях вместо копеекКонтракт обнаруживает несоответствие единицы или требует явного выбора; модель не умножает значение на сто по догадке.
Возврат и сумма из нескольких позицийПроверены знак, валюта и порядок округления; итог сопоставлен с независимым контрольным расчётом.

Пример не задаёт бухгалтерские правила и не охватывает все валюты. Масштаб, налоги и распределение скидок определяет предметный контракт. Сам переход на Decimal не исправляет неверно выбранное правило или неточный исходный факт модели.

MCP-интеграция с бизнес-системами требует проверять смысл чисел и совместимость контрактов, особенно когда результаты используются для реальных денежных действий. В платном курсе AI Agent Integrations PRO: MCP можно продолжить изучение соответствующего инженерного направления. Перед покупкой сравните программу и открытые материалы со своей задачей.

Документация для проверки технических деталей: Документация Python decimal.

Следующий шаг: MCP-интеграции: контракты инструментов, ошибки и доступ. По смежным вопросам: Структурированный ответ MCP tool: как не потерять типы данных, Пагинация MCP tool: как не потерять данные между страницами.