04 - Инструменты, API и MCP

Что это

Как оформлять инструменты как безопасные рабочие интерфейсы: паспорт инструмента, границы доступа, dry-run, проверка и audit trail.

Связанные материалы

00 - Карта чтения PDF-серии · 01 - Из чего состоит AI-агент · 02 - Как ставить задачу AI-агенту · 03 - Память и знания агента · 05 - Задачи по расписанию: crons и scheduled agents

Источник

  • PDF extracted from /root/.hermes/cache/documents/
  • TXT extract: /root/.hermes/cache/pdf_series_extract/doc_d545c2873178_04 - Инструменты, API и MCP.txt
  • Imported into vault: 2026-05-24

Содержимое

Tools, API и MCP Материал 4 - внутренняя операционка агента: слой действий

Чем агент действует руками, почему без доступа он может только объяснять, и где начинаются permissions, approval и риск внешних действий.

Для кого Что поймёте

Для тех, кто уже понял, где живут знания Почему модель сама ничего не нажимает агента, и хочет разобраться, как агент и не меняет: она просит вызвать tool, а переходит от ответа к действию. runtime выполняет или блокирует действие.

Что внутри Главный результат

Tool, API, MCP, режимы draft/dry-run/ Вы сможете не только понять tools/API/ execute, паспорт инструмента, MCP, но и описать безопасный паспорт permissions, approval, allowed paths, audit инструмента перед подключением к log и безопасная постановка задач. рабочему процессу.


Содержание Связка с предыдущим материалом

В Материале 3 мы разобрали, где живут знания: context, session, memory, wiki/docs, vector store, graph memory, skill и report. Теперь разбираем следующий слой - действия: как агент не только думает и пишет, но и делает работу через инструменты.

  1. Главная идея 2. Простая схема

Модель думает. Tools действуют. Задача tool call runtime проверка.

  1. Словарь 4. Типы инструментов

Tool, toolset, API, MCP, resource, prompt, approval. Поиск, браузер, файлы, терминал, память, cron, сообщения.

  1. API и MCP 6. Безопасность

Чем отличается прямой API, tool и MCP server. Permissions, allowed paths, approval, logs, секреты.

  1. Операторские шаблоны 8. Практика

Паспорт инструмента, режимы draft/dry-run/ Определить tool/API/MCP, риск, approval и отчёт. execute.


  1. Главная идея После материала про память легко подумать: если у агента есть знания, он уже может работать. Но знания - это только половина системы. Чтобы агент реально сделал действие, ему нужны инструменты.

Коротко

Модель думает и выбирает следующий шаг. Tool - инструмент - выполняет действие. Если tool не подключён, запрещён или требует подтверждения, агент может объяснить, что надо сделать, но не сможет сделать это сам.

Знания отвечают на вопрос: что агент знает? Tools отвечают на вопрос: что агент может сделать? Approval отвечает на вопрос: можно ли это делать прямо сейчас?

Главный риск

Tool превращает текст в действие. Поэтому инструменты - это не “ещё одна фича”, а граница безопасности: файлы можно перезаписать, сообщение можно отправить, команду можно запустить, деньги можно потратить.


  1. Простая схема действия Когда агент работает с инструментом, он обычно проходит цепочку.

Человек ставит задачу агент понимает цель и ограничения агент выбирает tool агент формирует tool call runtime проверяет доступы и approval tool выполняет действие агент получает результат tool агент проверяет результат человек получает отчёт

Хороший сценарий Плохой сценарий

Агент знает цель, выбирает правильный Агент не понимает границы, зовёт не тот tool, действует в разрешённой зоне, tool, просит доступ к лишнему или показывает результат и проверку. делает действие без проверки.

Не путать Главная проверка

Tool call - это не магия. Это Перед задачей спросите: у этого агента структурированная просьба к системе вообще есть нужный инструмент и выполнить конкретную операцию. право им пользоваться?


  1. Мини-словарь Tool / инструмент Toolset / набор инструментов

То, чем агент может действовать: искать в web, Группа tools одной зоны: web, browser, file, terminal, читать файл, открыть браузер, запустить команду, memory, cronjob, vision. Образ: ящик с создать cron, отправить сообщение. инструментами.

API MCP

Интерфейс сервиса. Образ: служебное окно, куда Model Context Protocol - стандарт подключения можно подать строго оформленный запрос и внешних tools, resources и prompts к AI- получить ответ/действие. приложениям. Образ: адаптер/порт для инструментов.

Resource / ресурс Prompt / шаблон

Данные, которые можно читать как контекст: файл, Готовая заготовка рабочего запроса или процедуры, схема базы, документ, список задач. Не обязательно которую можно переиспользовать. действие.

Permission / доступ Approval / подтверждение

Что агенту разрешено: какие tools, какие папки, Остановка перед рискованным действием: человек какие сервисы, какие операции. должен разрешить или запретить.


  1. Tool, API и MCP - чем отличаются Эти слова часто смешивают. Для новичка достаточно такой карты.

Tool API

Конкретная кнопка действия для агента: Правила общения с внешним сервисом: read_file, web_search, send_message, CRM, Telegram, Google Sheets, Notion, terminal, browser_click. платежный сервис, база данных.

MCP server Runtime

Сервер-адаптер, который показывает Среда, которая реально выполняет tool агенту доступные tools/resources/prompts call, проверяет доступы, обрабатывает по стандартному протоколу. ошибки и возвращает результат агенту.

API = у сервиса есть дверь и правила входа. Tool = конкретная ручка, за которую агент может потянуть. MCP = стандартный адаптер, который помогает подключить такие ручки к AI-приложению. Runtime = охрана и исполнитель: проверяет, можно ли, и делает.


  1. Какие инструменты бывают Инструменты отличаются не красотой названия, а типом действия и риском.

Поиск Браузер

Найти информацию в интернете или внутренних Открыть страницу, нажать кнопку, заполнить источниках. Риск: устаревшие/неверные форму. Риск: случайное действие в реальном источники. сервисе.

Файлы Терминал

Прочитать, записать, найти, изменить документ. Запустить команду, тесты, сборку, скрипт. Риск: Риск: стереть/испортить рабочий файл. сломать окружение или удалить данные.

Память Cron

Сохранить устойчивый факт или прочитать Запланировать повторяющуюся задачу. Риск: тихо профиль. Риск: сохранить мусор или приватные запускать лишнюю работу или спамить. данные.

Сообщения Внешний сервис

Отправить Telegram/Discord/Email. Риск: отправить CRM, таблица, GitHub, Notion, база данных. Риск: не туда или раньше проверки. изменить чужие данные.

Правило

Чем ближе tool к внешнему миру, деньгам, данным клиента или публичной отправке, тем строже нужны границы и approval.


  1. Enabled, unavailable и missing access Агент может знать, что нужно сделать, но не иметь права сделать это руками.

Enabled Unavailable

Tool подключён и доступен в этой Tool не включён, не установлен, не сессии/профиле. Агент может попросить доступен в этом канале или не загружен его вызвать. в текущей сессии.

Missing access Needs approval

Tool есть, но нет ключа, OAuth, прав на Tool есть и доступ есть, но действие папку, доступа к сервису или нужной рискованное: нужна остановка и роли. подтверждение человека.

Диагностика

Если агент говорит “я не могу”, это не всегда слабая модель. Часто это правильная остановка: нет tool, нет доступа, нет разрешения, нет контекста или действие требует approval.


  1. API простыми словами API - это способ общаться с внешней системой по правилам этой системы.

Образ

API похож на служебное окно. Нельзя просто кричать “сделай красиво”. Нужно подать запрос в нужном формате: что прочитать, что создать, что обновить, по какому ID, с каким токеном доступа.

Человек: обнови карточку клиента. Агент: понял, нужен CRM API. Tool/API: update_customer(customer_id, fields) Runtime: проверяет доступы и отправляет запрос. Сервис: возвращает результат или ошибку. Агент: сообщает, что изменено и чем проверено.

Важно

API не делает агента умным и безопасным автоматически. API просто открывает дверь в сервис. Без правил, прав и проверки агент может вызвать не ту операцию.


  1. MCP простыми словами MCP - Model Context Protocol - это стандарт, который помогает AI-приложению подключаться к внешним tools, resources и prompts.

Образ

Если API - это отдельное служебное окно каждого сервиса, то MCP - попытка сделать общий адаптер: AI-приложение спрашивает у сервера, какие tools/resources/prompts доступны, и получает их в понятном формате.

Tools Resources

Действия: запросить базу, создать issue, прочитать Данные для контекста: файлы, схемы, документы, файл, вызвать расчёт. записи, справочники.

Prompts Server

Переиспользуемые шаблоны задач и рабочих Процесс или endpoint, который показывает AI- сценариев. приложению эти возможности.

Без лишних обещаний

MCP стандартизирует подключение, но не делает интеграцию безопасной сам по себе. Без permissions - прав доступа, approval - подтверждения человека, логов и владельца MCP-сервер может стать опасной розеткой.


  1. Как MCP выглядит в агентной системе В Hermes-подобной системе MCP-сервер подключается к runtime, а его tools появляются рядом с обычными инструментами агента.

Агент runtime / Hermes profile MCP client MCP server: github / filesystem / crm / database / custom api tools/resources/prompts результат возвращается агенту

Что удобно Что важно

Можно подключать внешние сервисы Tools обычно получают префикс по стандартнее, чем писать отдельный tool имени сервера, чтобы не путаться и не на каждый случай. конфликтовать.

Что проверять Типичная ошибка

Какие tools сервер реально отдаёт, какие Подключить MCP-сервер “потому что данные видит, какие секреты ему модно”, не понимая, какие действия он переданы, кто владелец сервера. разрешает агенту.


  1. Граница безопасности: permissions Permissions - это не бюрократия. Это ответ на вопрос: где агенту можно работать, а где нельзя.

Allowed tools Allowed paths

Какие инструменты вообще включены: Какие папки можно читать/изменять. web, browser, file, terminal, memory, cron, Например: только папка проекта, а не сообщения. весь компьютер.

Allowed services Allowed actions

К каким внешним сервисам есть доступ: Что можно делать: читать, создавать GitHub, CRM, Notion, Google Sheets, черновик, обновлять запись, отправлять Telegram. сообщение, удалять.

Forbidden zones Owner

Секреты, системные папки, чужие Кто отвечает за доступ и может сказать: проекты, платежи, production без “это действие разрешено”. отдельного разрешения.

Простая формула

Не давайте агенту “доступ ко всему”. Дайте минимальные права, достаточные для конкретной задачи.


  1. Approval: где нужен человек Approval - это предохранитель перед рискованным действием.

Можно без approval Лучше с approval

Прочитать публичную страницу, сделать Записать файл, изменить таблицу, черновик, проанализировать текст, создать карточку, отправить внутреннее предложить план. сообщение.

Только с явным approval Нельзя

Удалить файл, запустить опасную Печатать токены, просить пароли, команду, отправить клиенту, изменить обходить права, сохранять private keys, production, потратить деньги. действовать в чужой зоне.

Перед risky action агент должен сказать:

  1. Что он собирается сделать.
  2. Где именно.
  3. Какие данные изменит.
  4. Как проверить результат.
  5. Как откатить, если возможно.

  1. Три режима работы инструмента Инструмент не обязательно сразу пускать в реальные действия. Для безопасного внедрения полезно думать тремя режимами.

Черновик / draft mode Пробный прогон / dry-run

Агент только готовит текст, план, Агент показывает, что он сделал бы: таблицу, предложение или команду. какие записи нашёл, какой запрос Ничего не меняет во внешнем мире. Это отправил бы, какие поля поменял бы. лучший старт для нового процесса. Данные пока не меняются.

Выполнение / execute mode Правило внедрения

Агент реально меняет файл, отправляет Сначала черновик, потом пробный сообщение, обновляет CRM - систему прогон, только потом выполнение. Чем работы с клиентами - или запускает выше риск, тем дольше держим агента в команду. Нужны scope - границы, draft/dry-run. approval - подтверждение, проверка и отчёт.

Новая интеграция не должна начинаться со слов: “Дай агенту доступ, пусть сам разберётся”. Нормальный путь: черновик пробный прогон approval выполнение отчёт.


  1. Паспорт инструмента Перед подключением tool/API/MCP опишите его как рабочий объект. Это короткий регламент: что инструмент может, где границы и кто отвечает за риск.

  2. Название 2. Зачем нужен

Как называется tool/API/MCP server и где он Какую бизнес-задачу он помогает делать быстрее подключён. или точнее.

  1. Что читает 4. Что меняет

Файлы, таблицы, заявки, CRM, сообщения, базу Файлы, статусы, карточки, сообщения, задачи, данных, публичные страницы. деньги, production-данные.

  1. Где разрешён 6. Что запрещено

Папка, проект, таблица, канал, workspace, Удаление, массовые изменения, клиентская конкретный сервис. отправка, секреты, платежи, чужие проекты.

  1. Approval / подтверждение 8. Проверка и откат

Кто подтверждает рискованное действие и в каком Как понять, что всё прошло правильно, и что формате. делать при ошибке.

Главная польза

Паспорт инструмента нужен не для красоты. Он помогает не дать агенту лишние права и быстро понять, почему действие нельзя запускать в рабочий контур с реальными данными.

Мини-пример

Инструмент: таблица лидов. Читает одну таблицу. Меняет только поле статус. Не удаляет строки, не выгружает базу, не отправляет клиентам. Перед массовым изменением просит approval и оставляет report.


  1. API напрямую или через MCP? MCP не нужен “просто потому что модно”. Иногда достаточно обычного tool/API, иногда удобнее MCP server.

Достаточно обычного tool/API Может подойти MCP

Нужно одно понятное действие: Нужно подключить целый набор прочитать таблицу, создать карточку, возможностей сервиса: tools, resources, отправить запрос в CRM, получить статус prompts, схемы, файлы или несколько заказа. типов действий.

Сначала аудит Красный флаг

Если непонятно, какие tools сервер MCP server требует широкий доступ к отдаёт, какие данные видит и какие диску, токенам, базе или production без секреты получает, MCP не подключаем в ясного владельца и логов. рабочую зону.

Простая развилка: одно узкое действие tool/API набор возможностей сервиса возможно MCP непонятны права и данные сначала паспорт и аудит


  1. Мини-кейс: таблица лидов Задача: агент должен помогать с таблицей лидов. Не “дать доступ к Google Sheets вообще”, а описать конкретный безопасный контур.

Цель Tool/API

Добавлять нового лида и предлагать следующий Google Sheets API или готовый Sheets tool. MCP статус по правилам отдела продаж. имеет смысл, если нужен набор операций с таблицами и схемами.

Разрешено Запрещено

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

Approval Report

Нужен перед массовым изменением, экспортом, Агент показывает ID строки, старое значение, новое изменением суммы или отправкой клиенту. значение, время действия и способ проверки.

Как должен звучать итог

Не “агент получил доступ к таблице”, а “агент получил ограниченный доступ к одной таблице, с запретом удаления, approval для рискованных действий и отчётом по каждой записи”.


  1. Сквозной пример: агент-маркетолог Задача: подготовить и опубликовать пост про AI-агента в продажах.

Без tools Web tool

Агент может написать текст и чеклист проверки. Найти публичные источники и свежие примеры. Но он не найдёт свежие источники и не опубликует пост.

File tool Wiki/docs

Сохранить черновик в рабочую папку. Взять tone of voice, запреты claims и прошлые примеры.

Telegram/API Approval

Отправить черновик редактору или опубликовать, Перед публикацией человек подтверждает текст и если разрешено. канал отправки.

Разница

Написать пост - низкий риск. Опубликовать пост - внешний side effect. Тут нужен другой уровень проверки.


  1. Сквозной пример: агент-оператор клиента Задача: проверить заявку клиента и обновить статус в CRM.

  2. Прочитать заявку.

  3. Найти клиента в CRM.

  4. Проверить правила обработки.

  5. Предложить статус.

  6. Получить approval человека.

  7. Обновить CRM через API/tool.

  8. Сохранить report: что изменено, по какой заявке, чем проверено.

Что можно автоматизировать Где нужен человек

Поиск карточки, сверку правил, Если статус влияет на деньги, договор, подготовку решения, заполнение клиента, блокировку или юридический черновика. риск.

Где ломается система Правильный итог

Агент получил широкий API-доступ и Не “агент сам всё сделал”, а “агент обновляет CRM без владельца и отчёта. подготовил, проверил, получил approval, выполнил и оставил след”.


  1. Матрица риска инструментов Низкий риск Средний риск

Чтение публичной информации, анализ Запись в файл проекта, изменение текста, создание черновика, локальная внутренней таблицы, создание карточки заметка. задачи.

Высокий риск Красная зона

Отправка наружу, изменение CRM, Секреты, платежи, юридические запуск shell-команд, удаление данных, документы, персональные данные, NDA- production-действия. клиенты, доступы администратора.

Как принимать решение

Если действие обратимое, локальное и проверяемое - риск ниже. Если действие внешнее, публичное, денежное или затрагивает клиента - нужен approval и отчёт.


  1. Как ставить задачу с tools Плохой запрос:

Слишком расплывчато

“Найди всё, обнови где надо и отправь клиенту.”

Хороший запрос:

Нормальный мини-регламент

Ты агент-оператор. Работай в draft/dry-run режиме. Используй только папку проекта и CRM-read tool. Сначала найди заявку и подготовь решение. Ничего не отправляй и не меняй без approval. В результате дай: найденные данные, предлагаемое действие, риск, что нужно подтвердить человеку.

Задача нужные tools границы доступа запреты approval формат отчёта


  1. Диагностика: почему агент не сделал действие Нет tool Tool не в этой сессии

Агент умеет рассуждать, но инструмент Инструмент включили позже, но сессия не подключён. не обновлена или канал его не видит.

Нет credentials Нет разрешения

Нет OAuth, API key, токена, прав Действие требует approval, а человек его пользователя или доступа к сервису. не дал.

Неправильная зона Tool вернул ошибку

Агент работает не в той папке, профиле, Сервис недоступен, лимит, неверный ID, topic, workspace или проекте. неправильный формат запроса.

Правильная реакция

Не ругайте модель. Спросите: какой tool нужен, включён ли он, есть ли доступ, какие границы, нужен ли approval, как проверить результат?


  1. Алгоритм диагностики: если то Когда агент не сделал действие, не начинайте с вывода “модель тупит”. Сначала проверьте контур выполнения.

Если агент говорит: нет инструмента Если tool есть, но ошибка доступа

Проверьте, какой tool нужен и включён ли он в Проверьте OAuth, API key, роль пользователя, права этом профиле/сессии. Возможно, агент может на папку, таблицу, сервис или workspace. только объяснить шаги.

Если действие рискованное Если tool сделал не то

Нужен approval: что меняем, где меняем, как Проверьте scope, ID объекта, формат запроса, проверить, как откатить. Без этого действие не выбранный профиль, topic, проект и возвращённый запускаем. tool output.

Если результат непонятен Если дело касается клиента

Попросите отчёт: что было входом, какой tool Останавливаемся на черновике или dry-run, пока вызван, что вернул сервис, что изменилось и где владелец процесса не подтвердил действие. это проверить.

Мини-формула

Tool доступ границы approval выполнение проверка report. Если выпал один элемент, агент не должен “героически продолжать”.


  1. Что нельзя делать с tools/API/MCP Не давать ключи в чат Не подключать неизвестный MCP

API keys, токены, cookies, private keys, MCP-сервер может видеть данные и OAuth session files нельзя вставлять в выполнять действия. Нужен владелец, запрос агенту. источник и scope.

Не давать доступ ко всему диску Не публиковать без проверки

Файловый tool должен работать в нужной Сообщения клиентам, посты, письма и папке, а не во всей домашней публичные ответы требуют review. директории.

Не путать черновик и действие Не верить tool output слепо

“Подготовь текст” и “отправь текст” - Инструмент может вернуть ошибку, разные уровни риска. неполные данные или устаревший ответ.


  1. Практика: какой доступ нужен? Разложите задачи по схеме:

нужный tool / API / MCP / approval / риск / отчёт

1 2

Найти свежие источники для статьи. Прочитать PDF клиента и сделать выжимку.

3 4

Создать черновик поста в файле проекта. Отправить готовый пост в Telegram-канал.

5 6

Обновить статус клиента в CRM. Удалить старые файлы из папки проекта.

7 8

Подключить GitHub MCP server. Запустить команду установки пакета.

9 10

Сохранить устойчивое правило в memory. Создать cron на ежедневную проверку сайта.


  1. Разбор практики 1 web 2 file/ocr/docs

Низкий/средний риск. Проверить источники и Нужен доступ к файлу и правило приватности дату. клиента.

3 file 4 send/API

Можно в рабочей папке. Нужен отчёт, где лежит Внешняя публикация. Нужен approval и проверка черновик. канала.

5 CRM API 6 file

Изменение клиентских данных. Нужны права, Удаление - высокий риск. Нужен backup/approval approval, лог и report. или запрет.

7 MCP 8 terminal

Проверить источник сервера, tools, env, права и Риск окружения. Нужны причина, команда, откат, секреты. approval.

9 memory 10 cron

Сохранять только короткое устойчивое правило без Это уже слой времени. Нужны расписание, owner, секретов. logs, delivery и stop rule.


  1. Чеклист готовности Перед тем как дать агенту задачу с действием, проверьте:

Tool / Инструмент Access / Доступ

Какой инструмент нужен и включён ли Есть ли доступ к файлу, сервису, API, он? workspace или каналу?

Scope / Границы Risk / Риск

Где агенту можно работать, а где нельзя? Может ли действие повлиять на реальные данные, клиентов, деньги или процесс?

Approval / Подтверждение Secrets / Секреты

Какие действия требуют подтверждения Не попали ли ключи, токены, cookies или человека? private данные в запрос?

Verification / Проверка Report / Отчёт

Как агент проверит, что действие Где будет результат: файл, карточка, выполнено правильно? сообщение, отчёт?

Главный вывод

Tools делают агента полезным, но именно tools делают его опасным при плохих границах. Хорошая постановка задачи всегда говорит: чем действовать, где действовать, что нельзя делать, где нужен approval и как проверить результат.


  1. Что дальше Мы разобрали слой действий. Следующий слой внутренней операционки - время.

Материал 5

Дальше разберём crons и scheduled agents: как агент запускает повторяющиеся проверки, отчёты и watchdog-задачи без постоянного ручного пинка, но с логами, владельцем и правилами остановки.

Слой 1 Слой 2

Знания: memory, wiki, vector store, graph memory, Действия: tools, API, MCP, permissions, approval. skill, report.

Слой 3 Слой 4

Время: crons и scheduled agents. Команда: Kanban, handoff и multi-agent.


Источники для дальнейшего чтения Эти источники помогают углубиться. Они объясняют паттерны и протоколы, но не являются гарантией безопасного production-внедрения без настройки прав, логов и проверки.

OpenAI - Function calling Tool/function calling как способ подключать модели к внешним системам и данным.

https://developers.openai.com/api/docs/guides/function-calling

Anthropic - Building effective agents Хорошая инженерная рамка: когда нужны workflows, когда agents, и почему надо начинать с простого.

https://www.anthropic.com/research/building-effective-agents

Model Context Protocol - Introduction Официальное введение в MCP как открытый стандарт подключения tools/resources/prompts.

https://modelcontextprotocol.io/docs/getting-started/intro

MCP - Tools Описание того, как MCP-серверы открывают tools для вызова моделями.

https://modelcontextprotocol.io/specification/2025-06-18/server/tools

OWASP MCP Security Cheat Sheet Security anchor для MCP: malicious servers, tool poisoning, consent, least privilege, token handling и audit.

https://cheatsheetseries.owasp.org/cheatsheets/MCP_Security_Cheat_Sheet.html

OWASP LLM06 - Excessive Agency Почему агенту нельзя давать лишнюю agency без permissions, approval, scope и human oversight.

https://genai.owasp.org/llmrisk/llm062025-excessive-agency/

OWASP LLM01 - Prompt Injection Почему внешняя страница, файл или tool output не должны автоматически становиться командой для агента.

https://genai.owasp.org/llmrisk/llm01-prompt-injection/

OpenAI Agents SDK - Guardrails Guardrails и tripwires: как останавливать рискованные или неподходящие действия агента.


https://openai.github.io/openai-agents-python/guardrails/

Hermes Agent docs Официальная документация Hermes по tools, MCP, profiles, memory, cron и gateway.

https://hermes-agent.nousresearch.com/docs/


Полезные ссылки YouTube Видео и разборы Алексея Ульянова

https://youtube.com/@alekseiulianov

Telegram-канал Sprut AI Публичные материалы, новости и разборы

https://t.me/Sprut_AI

Чат Telegram-канала Sprut AI Обсуждения и вопросы сообщества

https://t.me/+eH-qNIDmud8zNDZi

AI Операционка Закрытый продуктовый контур и материалы

https://t.me/tribute/app?startapp=sJyg