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

Что сделано
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. И есть обратная сторона: агенты сравнивают цены мгновенно. Когда выбирает алгоритм, а не человек с привычками — лояльность к бренду работает иначе. Бизнесу придётся конкурировать продуктом и ценой.
Итого
AI-агенты уже взаимодействуют с реальными коммерческими сервисами. Несколько месяцев оплаченных заказов — не слайд в PowerPoint.
Открытый API — конкурентное преимущество в мире агентов. Компании, которые откроют agent-ready API, получат канал продаж без комиссий маркетплейсов.
Будущее — за мастер-агентами, которые оптимизируют покупки между сервисами. Бизнес, который даст агентам выделенный канал, окажется в этой экосистеме первым.
Главное: я больше не открываю приложение Додо. Это не гик-эксперимент — это реально удобнее.
Про автоматизацию и ToS. Технически это автоматизация собственных действий в собственном аккаунте — один пользователь, свои заказы, свои деньги. Но я понимаю, что для масштабирования подхода обход антибота — не стратегия. Нужно, чтобы бизнес явно разрешил агентный доступ: через открытый API или партнёрскую программу. Именно поэтому эта статья — приглашение к разговору, а не инструкция по обходу защиты.
