Привет, меня зовут Лев. Вдохновившись постом коллеги, который через MCP-ВкусВилл собирает себе корзину покупок, решил пойти дальше — собрать агента, который не просто ищет информацию, а совершает действия: выбирает пиццу, собирает корзину, оплачивает и оформляет заказ. Так как готовить категорически не люблю, а дэнвич обожаю — целью стала любимая Додо Пицца.

Результат: говорю агенту «закажи самую сытную пиццу и колу» — и получаю заказ #177 за 534 рубля. Оплата с привязанной карты, самовывоз из ближайшей пиццерии. Пицца готовится, пора идти забирать.

Рассказываю, как это устроено и почему компании, которые первыми откроют API для AI-агентов, получат канал продаж с околонулевой стоимостью привлечения.
Рассказываю, как это устроено и почему компании, которые первыми откроют API для AI-агентов, получат канал продаж с околонулевой стоимостью привлечения.

Что сделано

Skill — универсальное расширение для AI-агентов. Не привязан к конкретному клиенту: работает в Claude Code, Kimiclaw, Openclaw и любом другом агентском интерфейсе, который поддерживает вызов внешних инструментов. Скилл подключается к Додо Пицце и умеет всё, что умеет приложение: меню, корзина, оплата, профиль, история заказов — только через естественный язык.

Это не proof of concept. Я пользуюсь этим с декабря как основным способом заказа и реально перестал открывать приложение Додо.

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

Принципиальное отличие от Алисы или Siri: те ищут информацию, а мой агент совершает действия — добавляет товар в корзину, проверяет бонусный баланс, выбирает пиццерию для самовывоза, оплачивает заказ.

Попросил подобрать самую сытную пиццу — агент сам вытащил калорийность из меню, посчитал ккал/рубль и сравнил варианты:
Попросил подобрать самую сытную пиццу — агент сам вытащил калорийность из меню, посчитал ккал/рубль и сравнил варианты:

Тот же skill, тот же сервер — но на скриншоте выше это уже мобильный терминал, а не VS Code. Скиллу всё равно, через какой интерфейс его вызвали.

Как устроено

Закрытый API за антиботом

У Додо отличный API: RESTful, хорошо структурированный, 30+ эндпоинтов — меню, корзина, профиль, бонусы, оплата. Но публичного доступа нет. Стоит ServicePipe (WAF/антибот) — любой curl получает 403. API хорошо спроектирован, просто пока не предназначен для внешних интеграций.

Решение: все запросы идут через headless Chromium (Puppeteer). Не парсинг HTML — а вызовы внутреннего API из контекста настоящего браузера, который уже прошёл все проверки.

«хочу пепперони»

      ↓

Агент → запускает node dodo.mjs menu пепперони

      ↓

Puppeteer поднимает headless Chrome

      ↓

Загружает dodopizza.ru, проходит антибот (~5 сек)

      ↓

Выполняет fetch('/api/v5/menu') из контекста страницы

      ↓

Агент получает JSON, показывает меню с ценами

Для сервера запрос неотличим от запроса обычного пользователя — потому что это и есть настоящий браузер.

Реверс-инжиниринг: как узнать эндпоинты закрытого API

Написал сниффер — скрипт, который через Chrome DevTools Protocol перехватывает все сетевые запросы при обычном использовании сайта:

const client = await page.createCDPSession();

await client.send('Network.enable');

client.on('Network.requestWillBeSent', (params) => {

if (params.request.url.includes('/api/'))

console.log(→ ${params.request.method} ${params.request.url});
});

Прошёлся по всему пользовательскому flow — от просмотра меню до оформления заказа — и записал каждый вызов. Результат — документация на 30+ эндпоинтов.

Борьба с антиботом

Несколько граблей, на которые наступил:

Webdriver detection. ServicePipe проверяет navigator.webdriver. Puppeteer по умолчанию выставляет true. Решается одной строкой, но это гонка вооружений — завтра могут начать проверять Canvas fingerprint или WebGL.

Ожидание JS-challenge. После page.goto() сайт не сразу доступен — ServicePipe показывает challenge. Жду, пока в <title> появится «доставка».

reCAPTCHA при логине не обходится программно. Авторизация — один раз на машине с экраном, cookies сохраняются и переносятся на сервер.

Из скрипта в «способность» агента

Скрипт — это node dodo.mjs menu пепперони. Скилл — это когда говоришь «хочу пиццу» и агент сам понимает, что делать.

Разница — в файле SKILL.md:

## Как работать

1. Если пользователь просит показать меню — запусти menu с ключевым словом

2. Если спрашивает про корзину — запусти cart

3. Если хочет добавить товар — найди через menu, потом используй API с productId из результата

Один markdown-файл превращает CLI-утилиту в навык AI-агента. Весь скилл — 380 строк JS, одна зависимость (puppeteer-core), установка одной командой.

Полный цикл: от корзины до оплаты

После сборки корзины агент ведёт через весь checkout. Показывает привязанные карты и способы оплаты — выбираю картой МИР. Затем выводит финальный итог и ждёт подтверждения: состав, сумму, способ оплаты, точку самовывоза. Ничего не списывается, пока явно не скажешь «да».

Код пока не в опенсорсе — он содержит обход антибота конкретного сервиса, и публиковать это без позиции Додо было бы некорректно. Если тема зайдёт и Додо выразит интерес — выложу в открытый доступ.

Куда это ведёт: от одного скилла к агентской экономике

Техника простая. Но интересна модель взаимодействия, которую она открывает.

Сегодня мы заказываем через приложения и сайты. Появляется третий вариант: AI-агент, который действует от имени пользователя. Пользователь не скачивает приложение, не переходит по рекламе — он говорит агенту «закажи как обычно». Для Додо, которая принципиально не работает с агрегаторами типа Яндекс Еды, агентный канал мог бы быть особенно интересен: клиент приходит напрямую, без комиссии маркетплейса, стоимость привле��ения стремится к нулю.

Мой скилл — этап 1. Один агент, один сервис, ручная авторизация. Но уже видно, куда это движется.

Агентская идентификация через телеком

Сейчас авторизация — костыль: прошёл капчу руками, сохранил cookies, работаешь пока не протухнут. Это не масштабируется.

Телеком как identity provider — естественное решение. У них уже есть верификация личности (SIM привязан к паспорту), и уже существуют МТС ID, Tinkoff ID, Сбер ID. Схема:

  • Пользователь авторизуется один раз через телеком

  • Телеком выдаёт агентский токен с явными scope'ами: «может заказывать еду до 2000₽/день», «не может менять платёжные данные»

  • Сервис (Додо) проверяет токен: «агент пользователя Лев, верифицирован через МТС, scope = orders»

  • Отзыв доступа — мгновенный, из приложения телекома

По сути это OAuth для агентов. Аналог — PSD2 в Европе: третья сторона получает доступ к банковскому счёту через API, с явного согласия клиента и ограниченными правами.

Выделенный канал для агентов

У бизнеса два варианта. Игнорировать — и агенты всё равно приходят (как мой скилл), ходят через антибот, создают нагрузку, не отличимы от скрейперов в метриках. Никакой аналитики, никакого контроля. Дать выделенный интерфейс — и получить:

  • Оптимизированные payload'ы (компактное меню вместо 10 МБ JSON)

  • Rate limits под агентский паттерн

  • Аналитику: какие агенты приводят заказы, конверсия, средний чек

  • Возможность давать агентам промо (как дают промокоды блогерам)

  • Агентский трафик уже идёт. Вопрос только — вы его видите или нет.

Мастер-агент и межсервисная оптимизация

Самое интересное. Пример: я заказываю пиццу и колу. Кола в Додо — 155₽ за 0.5л. В Магните — 89₽ за 1.5л. Мастер-агент, который знает оба сервиса, предложит:

Master Agent:

├── Dodo Skill → Пикантные колбаски 25 см — 369₽ (самовывоз 15 мин)

├── Magnit Skill → Добрый Кола 1.5л — 89₽ (доставка 30 мин)

└── Вывод: «Пиццу забери из Додо, колу закажи из Магнита.

     Экономия 66₽, объём колы в 3 раза больше. Ок?»

Это уже не один скилл — это оркестратор, который параллельно опрашивает несколько сервисов и оптимизирует по цене, времени и удобству. Google уже двигает протокол A2A (Agent-to-Agent) — каждый сервис публикует машиночитаемое описание возможностей, и агенты обнаруживают друг друга без ручной интеграции.

Персонализация при этом живёт на стороне клиента, а не бизнеса. Агент знает историю заказов, предпочтения, бюджет — бизнесу достаточно хорошего API. И есть обратная сторона: агенты сравнивают цены мгновенно. Когда выбирает алгоритм, а не человек с привычками — лояльность к бренду работает иначе. Бизнесу придётся конкурировать продуктом и ценой.

Итого

  1. AI-агенты уже взаимодействуют с реальными коммерческими сервисами. Несколько месяцев оплаченных заказов — не слайд в PowerPoint.

  2. Открытый API — конкурентное преимущество в мире агентов. Компании, которые откроют agent-ready API, получат канал продаж без комиссий маркетплейсов.

  3. Будущее — за мастер-агентами, которые оптимизируют покупки между сервисами. Бизнес, который даст агентам выделенный канал, окажется в этой экосистеме первым.

  4. Главное: я больше не открываю приложение Додо. Это не гик-эксперимент — это реально удобнее.

Про автоматизацию и ToS. Технически это автоматизация собственных действий в собственном аккаунте — один пользователь, свои заказы, свои деньги. Но я понимаю, что для масштабирования подхода обход антибота — не стратегия. Нужно, чтобы бизнес явно разрешил агентный доступ: через открытый API или партнёрскую программу. Именно поэтому эта статья — приглашение к разговору, а не инструкция по обходу защиты.