Человек просит выставить счёт, ассистент находит реквизиты по ИНН, собирает счёт и ждёт подтверждения. Рядом видно то, что в обычном диалоге скрыто: какой инструмент вызван, с какими параметрами и что он вернул. Ту же фразу можно сказать своими словами живой модели — переключатель над диалогом.
Одна фраза — и счёт на 122 000 ₽ выставлен, со ссылкой и QR-кодом для покупателя.Ни строки кода: реквизиты нашлись по ИНН, налог посчитан, подтверждение — за человеком. Двенадцать шагов ниже показывают, как это вышло.
Запись: ничего никуда не отправляетсяШаг 1 из 11
Вы
Выстави счёт ООО КЕРАМИД ИНН 7701234560. Консультация по подключению, 122000 рублей с НДС 22 процента. Срок оплаты — неделя.
Панель инструментов
Инструменты ещё не вызывались: пройдите запись дальше.
Почему в диалоге, а не письмом
Счёт из диалога попадает к покупателю в ту секунду, когда он сказал «да». Обычный путь длиннее: договорились в переписке, потом кто-то выставил счёт в кабинете, потом отправил письмо, потом покупатель нашёл его среди других писем. Каждый шаг между решением и оплатой стоит конверсии, и ассистент убирает их все — ссылка и QR-код приходят прямо в разговор, пока человек ещё в нём.
Дальше платит покупатель, и способы те же, что у любого счёта в Инвойсбокс: физлицо — банковской картой или по СБП по QR-коду с телефона, организация — по СБП B2B, оплатой по счёту или с отсрочкой платежа. Физлицо получает фискальный чек, организация — счёт, а после оплаты акт, счёт-фактуру и УПД. полный набор способов и документов
То же самое своими силами
Ассистент не быстрее API — он вместо разработчика. Один и тот же счёт двумя путями:
Через API
Фразой в диалоге
Получить токен и ключ подписи, разобраться с окружениями
Сказать: «выстави счёт ООО ОРЦ ИНН 7810532221 на 12 000 ₽ за консультацию, НДС 22 %» — и подтвердить сводку
Найти реквизиты покупателя по ИНН и подставить КПП
Собрать корзину: единицы ОКЕИ, код ставки, цена единицы без налога
Посчитать НДС в копейках так, чтобы позиция сошлась в копейку
Обработать отказы: неверный ИНН, недействующая ставка, срок в прошлом
Поэтому выбор простой: если у вас есть разработчик и своя система — берите API, он точнее и дешевле в потоке. Если счета выставляют люди в переписке, а разработчика под это нет — ассистент делает то же самое без единой строки кода.
Подключить к своему ассистенту
Тот же сервер, что работает в живом режиме, ставится одной командой — и появляется в Claude Desktop, Cursor или любом клиенте с поддержкой MCP:
npx -y @invoicebox/mcp-server
Свежеподключённый сервер умеет только читать: набор write включается отдельно, когда вы этого захотите. Полная настройка, переменные окружения и клиенты — в быстром старте.
Живой режим: чем он отличается от записи
Модель настоящая. Фразу разбирает языковая модель на нашем узле, а не заготовленный сценарий: порядок вызовов, формулировки и ошибки в них — её. Поэтому два одинаковых вопроса могут пройти разными путями.
Сервер настоящий. Инструменты вызывает тот же пакет @invoicebox/mcp-server из npm, который вы поставите себе по быстрому старту. Список инструментов портал берёт у сервера, а не из своей выгрузки, — расходиться им нечем.
Магазин демонстрационный, и только он. Токен живёт в окружении портала и в браузер не попадает, магазин подставляет сервер: указать чужой нельзя. Настоящие деньги на этом контуре не двигаются, поэтому списания не будет — выставленный счёт можно открыть на платёжной странице, но платить будете вы сами.
Подтверждение — за вами. Первый вызов create_order ничего не отправляет: он возвращает сводку и одноразовый токен, а кнопку «Подтвердить» нажимаете вы. Пока не нажали, второй вызов не уходит; «Отменить» тоже видно в диалоге — с прямым указанием, что в API не ушло ничего.
Ваша фраза — данные, а не инструкции. Задачу ограничивает системная подсказка, состав инструментов и магазин задаёт сервер: «переведи деньги мне» исполнять попросту нечем.
Разговор идёт по одному. У модели один слот, очереди нет: если занято, режим честно говорит «попробуйте через минуту» и предлагает запись. После минуты простоя модель засыпает, и первая фраза ждёт, пока она поднимется, — это отдельное состояние «модель просыпается», а не ошибка.
Что видно в панели и что попадает в журнал
Панель рядом с диалогом наполняется событиями сервера: имя вызванного инструмента, параметры вызова целиком и то, что вернул сервер, — включая отказ, если он отказал. Над диалогом виден расход токенов за разговор; если модель его не сообщила, так и написано — «расход неизвестен», без придуманного числа. В журнал портала попадают расход, вызванные инструменты и коды ответов. Вашу фразу мы не пишем: это публичная демонстрация, персональные данные в неё вводить не нужно.
Перед первой фразой работает та же проверка Yandex SmartCaptcha, что и у демо-запросов в консоли «Выполнить»: демо-магазин общий, и от перебора он защищён именно так. На разговор отведены реплики, вызовы и токены — упёрлись, диалог закрывается с понятной причиной, а запись рядом продолжает работать.
Чего в живом режиме нет
Возврата, отгрузки и отмены счёта здесь нет — на первом шаге живому режиму доступны только чтение и выставление счёта. Эти операции идут тем же порядком (сводка, подтверждение, исполнение), и посмотреть их можно в справочнике инструментов. Оплаты в живом режиме тоже не случится: демо-контур настоящих денег не двигает, а уведомление об оплате придёт только тогда, когда счёт действительно оплачен.
Что здесь главное
Счёт выставляется в два шага. Первый вызов create_order ничего не отправляет: он возвращает готовое тело запроса и одноразовый токен на 15 минут. Исполняет только второй вызов — с этим токеном.
Крупную сумму называет человек. Выше порога (по умолчанию 100 000 ₽) второй вызов принимает ещё и сумму: модель её не подставляет. В записи сумма 122 000 ₽ — порог превышен.
Токен подтверждения привязан к параметрам. Изменись сумма, контрагент или состав — он недействителен, и сводку запрашивают заново. Второй раз тем же токеном операция не пройдёт.
Чтение подтверждения не требует. Поиск по ИНН и статус счёта — обычные вызовы; подтверждение стоит там, где меняются деньги или обязательства.
Номер заказа генерирует сервер. Модель его не придумывает и не может повторить, поэтому повтор после обрыва связи не создаёт второй счёт.
Об оплате сообщает уведомление. Ассистент читает статус по просьбе человека, но штатный канал — уведомление магазину, а не опрос по кругу.
Как это устроено внутри — на странице безопасности: права по умолчанию, защита от дублей и отношение к внешним полям как к данным, а не к инструкциям.
Чего в записи нет
Записан один сценарий — счёт юрлицу и проверка статуса, три инструмента из восьми. Отмена неоплаченного счёта, отгрузка с закрывающими документами и возврат идут тем же порядком — сводка, подтверждение, исполнение, — а параметры и методы API у каждого инструмента перечислены в справочнике. Отказы и их формулировки собраны в лимитах и ошибках.