Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

Разделы · 20
  1. 01Задача: один утренний отчёт о новых плохих отзывах на трёх сайтах
  2. 02Что такое claude managed agents: четыре объекта и расписание
  3. 03Развёртывания по расписанию: cron, часовой пояс, джиттер, бюджет и почему пропуски не наверстываются
  4. 04Где хранится ключ: два типа учётных данных vault
  5. 05Почему не стоит читать страницы отзывов через web_fetch
  6. 06Удалённый MCP или HTTP: два пути с разной стоимостью
  7. 07Примеры конфигурации: окружение, агент, хранилище учётных данных и деплоймент
  8. 08Один реальный цикл: что отправляет модель и что приходит в ответ
  9. 09Тест 1: сколько дней охватывают «N самых новых» отзывов на каждом сайте
  10. 10Тест 2: как распределяются негативные отзывы и о чём в них пишут
  11. 11Тест 3: как определить «новые» отзывы по двум снимкам
  12. 12Как выглядит утренний отчёт
  13. 13Сколько стоит Claude Managed Agents: плата за API и расходы на стороне Anthropic
  14. 14Claude Managed Agents, Agent SDK или расписания в Claude Code и Cowork: что выбрать
  15. 15Когда что-то сломалось: какой уровень проверять первым
  16. 16Ограничения и открытые вопросы
  17. 17Последние изменения
  18. 18FAQ
  19. 19С чего начать
  20. 20Источники

claude managed agents: ночная проверка новых отзывов о ресторанах с оценкой 1–2 звезды

Запускайте claude managed agents по расписанию cron, чтобы каждую ночь читать новые отзывы в Google, Yelp и Tripadvisor и отмечать отзывы с оценкой 1–2 звезды. Стоимость API: $0,0056 за заведение.

Иллюстрация. Облачная платформа ночью. Рука робота нажимает на таймер в виде будильника. Она забирает стопку карточек со звёздами у дверей трёх небольших магазинов разной формы и кладёт две карточки с низкой оценкой в бирюзовый лоток. Рядом с лотком стоит небольшой запертый сейф, от которого тянется одна тонкая линия только к одной двери с номером. Это показывает, что ключ уходит только на один адрес. В правом верхнем углу светлеет небо, и из лотка выходит утренний отчёт.

4 ноября 2026 года (по сингапурскому времени) мы с помощью API EveryInfra прочитали новые отзывы о Katz's Delicatessen в Нью-Йорке на Google Maps, Yelp и Tripadvisor. Главный вывод касается слова «новые»: N самых свежих отзывов охватывают на каждом сайте очень разные периоды. На Google это меньше 4 дней, а на Tripadvisor — почти 4 месяца. Страница 1 на Yelp не отсортирована по дате.

Через час повторное чтение нашло новый отзыв в Google. Время его публикации было раньше нашего первого вызова, но первый вызов его не вернул. Поэтому ночная задача должна определять «новые» отзывы по ID и запоминать, где остановилась. Нельзя просто брать N самых новых или доверять времени публикации.

Второй вывод касается стоимости. Плата за API небольшая: 4 вызова на заведение за ночь стоят меньше цента. Основная часть расходов приходится на токены модели на стороне Anthropic. По нашей оценке, с Sonnet 5.5 плата за модель более чем в десять раз превышает плату за API. Поэтому скрипт в песочнице должен отфильтровать сырые данные, оставив только отзывы с 1–2 звёздами, прежде чем их прочитает модель.

Эта статья отвечает на один конкретный вопрос. Операционный менеджер сети ресторанов в Нью-Йорке хочет каждый день получать отчёт до 7 утра. В отчёте должны быть все новые отзывы с 1–2 звёздами, появившиеся с прошлого вечера в Google Maps, Yelp и Tripadvisor. Для каждого отзыва нужно указать, в чём проблема (еда, обслуживание, очередь или цена) и ответил ли на него кто-нибудь.

Для этого мы используем развёртывания по расписанию (scheduled deployments) в Claude Managed Agents. Каждую ночь облако Anthropic запускает новую сессию по расписанию cron. Агент вызывает три эндпоинта отзывов EveryInfra по HTTP или через удалённый MCP, отбирает новые плохие отзывы, сортирует их по причинам и пишет отчёт. Затем вебхук сообщает вашему серверу, что запуск завершён.

Со стороны EveryInfra мы сделали 26 реальных вызовов, за 20 из них списали плату — всего $0,02778. Со стороны Anthropic мы ничего не развёртывали. Каждый факт о Managed Agents сопровождается ссылкой на документацию или примечания к релизам platform.claude.com, которые мы прочитали 4 ноября 2026 года.

Иллюстрация. В прозрачном кубе-песочнице находится небольшая роботизированная рука с пустой карточкой-заглушкой. Рядом с кубом стоит забор с воротами. За забором стоит небольшой сейф с тонкой трубкой. Трубка подменяет карточку настоящим ключом, только когда карточка проходит через эти единственные ворота к одному пронумерованному адресу. Все остальные ворота закрыты.
Учётные данные vault типа «переменная окружения». В песочнице хранится только заглушка. Настоящий ключ подставляется на границе сети и только для разрешённых хостов. Поясняющая иллюстрация, созданная для этой статьи, а не визуализация данных

Задача: один утренний отчёт о новых плохих отзывах на трёх сайтах

В качестве примера мы взяли два публичных заведения. Мы никак не связаны ни с одним из них, а пример отчёта только демонстрирует метод. Первое заведение — Katz's Delicatessen в Нижнем Ист-Сайде. У него рейтинг 4,5 и 56 460 отзывов в Google Maps и рейтинг 4,2 и 18 710 отзывов в Tripadvisor.

Сюда приходит много туристов, поэтому это хороший тест на вопрос «сколько новых отзывов появляется за ночь». Второе заведение — Haidilao Hot Pot во Флашинге (Куинс). У него рейтинг 4.8 и 8 792 отзыва на Google и рейтинг 4.8 и 2 643 отзыва на Yelp. Оно представляет заведения с высоким рейтингом и небольшим числом плохих отзывов.

Почему каждую ночь, а не раз в неделю? В реальном ответе Google для Katz's 100 самых новых отзывов охватывают 3,97 дня, то есть около 24,7 отзыва в день. 50 самых новых охватывают всего 1,80 дня, и 29 отзывов пришли за последние 24 часа. Плохой отзыв проще всего отработать в первые день-два.

Именно тогда ответ, предложение возврата средств или внутренняя проверка дают наибольший эффект. Еженедельной задаче нужно читать 4 страницы Google на заведение, и к приходу отчёта самому старому плохому отзыву уже шесть-семь дней. Ночная задача, которая читает 50 самых новых отзывов, охватывает всё с прошлой ночи и ещё одну ночь в запас.

СайтВозможностьОтзывов за вызовПорядокЦена за вызов
Google Mapsgoogle_maps_reviews/reviewsДо 100, мы используем 50sort=newest и необязательная дата since$0.001389
Yelpyelp/reviews10 на страницу, следующая страница через page_tokenПорядок Yelp по умолчанию, не по дате$0.001389
Tripadvisortripadvisor/reviewsДо 50Сортировки нет. В наших тестах сначала новые$0.001389
Поиск заведенияgoogle_maps_reviews/search, yelp/search, tripadvisor/searchОдин раз для каждого сайта при настройке—$0.001389

Цены взяты из бесплатного каталога https://api.everyinfra.com/api/v1/social/catalog, который мы прочитали 4 ноября в 00:13 по сингапурскому времени. Все три возможности для отзывов были в статусе available. Каждый вызов стоит 100 кредитов, то есть $0,001389. Три вызова поиска нужны только один раз на заведение. Они превращают название заведения в URL его страницы на каждом сайте, после чего ночная задача читает отзывы по URL.

Блок-схема слева направо. Развёртывание по расписанию срабатывает по cron 30 6 * * * в America/New_York с джиттером до 9 минут. Оно запускает новую сессию с агентом, окружением, vault, который работает только для api.everyinfra.com, и хранилищем памяти, где лежат последние ID отзывов. Агент делает 4 вызова на заведение, сравнивает ID отзывов с прошлым запуском, отбирает отзывы с 1–2 звёздами и размечает их, после чего срабатывает вебхук session.status_idled. Примечание внизу: $0,005556 на заведение за ночь.

Что такое claude managed agents: четыре объекта и расписание

Claude Managed Agents — это набор облачных API на Claude Platform. Вы задаёте модель, системный промпт и инструменты агента. Anthropic выполняет цикл агента в своём облаке: запускает контейнер-песочницу, выполняет вызовы инструментов и хранит запись сессии. Продукт запустили в режиме открытого бета-тестирования 8 апреля 2026 года. Каждый запрос должен содержать заголовок anthropic-beta: managed-agents-2026-04-01 (обзор, примечания к релизам).

В обзоре названы четыре основных понятия: агент (agent), окружение (environment), сессия (session) и vault. Развёртывание по расписанию — пятый объект. Оно появилось 9 июня 2026 года и само запускает сессии по расписанию (блог Anthropic). В таблице показано, как каждый объект используется в проверке отзывов.

ОбъектЧто он определяетНастройка для проверки отзывовДокументация
agentМодель, системный промпт, инструменты, MCP-серверы, политики разрешений, с версиямиSonnet 5.5. Оставьте bash и файловые инструменты. Отключите web_fetch и web_search. При работе через MCP разрешите только everyinfra_call_apiDefine your agent
environmentКак собирается песочница и к каким хостам она может обращатьсяСеть в режиме limited, в allowed_hosts только api.everyinfra.comCloud environment setup
vaultУчётные данные, которые сессия получает во время выполненияОдин набор учётных данных environment_variable — EVERYINFRA_API_KEY; он подставляется в заголовки только для api.everyinfra.comAuthenticate with vaults
sessionОдин запуск: новый контейнер и запись диалогаРазвёртывание создаёт одну сессию каждую ночьStart a session
deploymentЗапускает сессии по расписанию cron с бюджетом на каждый запуск30 6 * * * в America/New_York, 50 центов за запускScheduled deployments

Чаще всего упускают из виду, что окружение при каждом запуске новое. В документации о сессиях сказано, что каждая сессия получает свежий контейнер. Файлы, которые один запуск записал в песочницу, при следующем запуске исчезают (Start a session). Для проверки отзывов это очень важно.

Список «уже просмотренных отзывов» нельзя хранить в файле песочницы. Он должен храниться в хранилище памяти (memory store). Это отдельная бета-функция, которая монтируется в /mnt/memory/ (Using agent memory). Другой вариант: ваш сервер сохраняет список после каждого вебхука и передаёт его обратно в следующем начальном сообщении.

Развёртывания по расписанию: cron, часовой пояс, джиттер, бюджет и почему пропуски не наверстываются

Развёртывание по расписанию создаётся через POST /v1/deployments. Для него нужны агент, окружение, хотя бы одно начальное событие (обычно user.message) и schedule. В schedule указываются type: cron и expression в стандартном формате POSIX cron из 5 полей с точностью до минуты. Там же задаётся timezone с именем IANA, например America/New_York (Scheduled deployments).

Поля cron соответствуют POSIX crontab. Названия часовых поясов берутся из базы часовых поясов IANA; её последний релиз, 2026f, вышел 2026-10-27. Ответ на создание содержит время ближайших срабатываний в schedule.upcoming_runs_at, так что выражение можно проверить сразу.

Срок отчёта определяет одно предложение в документации. Время срабатывания точно соответствует расписанию, но к фактическому запуску добавляется джиттер до 15% интервала запуска. Минимум составляет 5 секунд, максимум — 9 минут. На графике ниже показано это правило.

Развёртывание, которое запускается каждые 5 минут, стартует с опозданием не более 45 секунд. Развёртывание, которое запускается каждый час или каждый день, стартует с опозданием не более 9 минут. Если отчёт должен прийти до 7:00, cron на 6:30 оставляет запас на 9 минут джиттера и 20-минутный запуск.

Линейный график. По оси X отложен интервал запуска: 5 минут, 10 минут, 30 минут, 1 час, 4 часа и 1 день. По оси Y отложен максимальный джиттер в минутах. Для 5 минут это 0,75 минуты, для 10 минут — 1,5 минуты, для 30 минут — 4,5 минуты, а начиная с 1 часа значение остаётся на предельном уровне 9 минут. Правило взято из документации Anthropic о развёртываниях по расписанию: джиттер составляет до 15% интервала, не менее 5 секунд и не более 9 минут.
Скриншот страницы документации Anthropic «Scheduled deployments». Бирюзовой рамкой выделен текст о том, что время предстоящих запусков точно соответствует расписанию, но при фактическом выполнении добавляется случайная задержка до 15 процентов интервала, минимум 5 секунд и максимум 9 минут. В следующем абзаце сказано, что у каждой организации может быть до 1 000 запланированных развёртываний.
Текст документации: у реальных запусков джиттер до 9 минут (прочитано 2026-11-04). Скриншот документации platform.claude.com

Вторая ловушка связана с переходом на летнее время. В документации сказано, что cron сопоставляет время буквально по настенным часам. Поэтому 0 20 * * * в America/New_York срабатывает в 8 вечера по местному времени и в EST, и в EDT. В день перевода часов вперёд несуществующее время, например 2 часа ночи, не срабатывает.

В день перевода часов назад запуск, назначенный на время, которое наступает дважды, тоже происходит дважды. Документация советует избегать интервала с 1 до 3 часов ночи по местному времени или использовать UTC. В 2026 году летнее время в США закончилось 1 ноября. Поэтому с этой недели 30 6 * * * в Нью-Йорке соответствует 11:30 UTC, а в период летнего времени — 10:30 UTC.

Третий момент касается бюджета. Развёртывание может содержать необязательный параметр budget той же структуры, что и бюджет сессии: {"type": "limit", "max_list_cost": {"amount": "50", "currency": "USD"}}. Сумма указывается целым числом центов США в виде строки, так что "50" означает 50 центов (Session budgets). Развёртывание копирует этот лимит в каждую новую сессию. Значит, лимит действует на каждый запуск, а не на сумму за месяц. Пример из документации показывает это наглядно: развёртывание с лимитом "2000" может тратить около $20 на каждом запуске.

Бюджет учитывает токены модели, веб-поиск ($10 за 1 000) и время работы сессии ($0.08 в час) по публичным прейскурантным ценам. Платформа проверяет его между запросами к модели и при достижении лимита приостанавливает сессию со статусом budget_reached. Плата за API EveryInfra в бюджет не входит. Она зависит только от числа вызовов, а оно фиксировано: 4 на заведение за ночь.

Четвёртый момент касается сбоев. Если поставить развёртывание на паузу, запуски по расписанию прекращаются, но уже запущенная сессия продолжает работу до завершения. После снятия с паузы расписание возобновляется со следующего запланированного времени. В документации сказано: «Missed triggers are not backfilled», то есть пропущенные срабатывания не наверстываются. Каждое срабатывание создаёт запись о запуске развёртывания. Неудачные запуски можно получить через GET /v1/deployment_runs?deployment_id=…&has_error=true.

Типичные ошибки: environment_archived_error, agent_archived_error и session_rate_limited_error. Последняя фиксируется, но повторная попытка для неё не выполняется. В каждой организации может быть до 1000 запланированных развёртываний. Поэтому задание, формирующее отчёт, должно само обрабатывать ситуацию «прошлой ночью запуск не состоялся». Следующий запуск не должен читать только последние 24 часа. Он должен читать данные вплоть до последнего ID отзыва, который сохранил последний успешный запуск.

Где хранится ключ: два типа учётных данных vault

Ключ EveryInfra используется либо MCP-подключением, либо curl в песочнице. Этим двум способам соответствуют два типа учётных данных vault (Authenticate with vaults). Учётные данные MCP бывают типов mcp_oauth и static_bearer, и они привязаны к mcp_server_url. Когда сессия подключается к MCP-серверу по этому URL, токен добавляется автоматически.

Учётные данные environment_variable привязаны к secret_name. В песочнице хранится только непрозрачная заглушка. Настоящее значение заменяет заглушку на границе сети только для хостов из networking.allowed_hosts, а injection_location позволяет ограничить подстановку только заголовками запросов.

Скриншот страницы документации Anthropic Authenticate with vaults. Бирюзовой рамкой выделен текст о том, что учётные данные типа «переменная окружения» привязаны к secret_name и хранятся в песочнице как непрозрачная заглушка, а при исходящем запросе агента заглушка заменяется настоящим секретом.
Текст документации: в песочнице хранится заглушка, а настоящее значение подставляется при исходящем запросе (прочитано 2026-11-04). Скриншот документации platform.claude.com

Для этой задачи мы рекомендуем учётные данные типа «переменная окружения», и тому есть три причины. Во-первых, ключ может попасть только в одно место. В allowed_hosts этих учётных данных указан только api.everyinfra.com. Если вредоносная строка в отзыве велит модели обратиться к другому URL, в такой запрос будет подставлена только заглушка.

Во-вторых, allowed_hosts учётных данных определяет, какие запросы получают ключ, но не то, какие запросы могут покинуть песочницу. За второе отвечает параметр networking окружения. Если в обоих указан только api.everyinfra.com, вы получаете два замка: один на сеть и один на ключ.

В-третьих, при работе через HTTP сырой ответ сначала попадает в файл в песочнице. Затем фильтр jq передаёт модели только нужные записи; сколько токенов это экономит, показано в разделе о стоимости. У учётных данных типа «переменная окружения» есть и ограничения. Они пока не работают с самостоятельно размещёнными песочницами. Vault может содержать до 20 наборов учётных данных. Платформа не проверяет учётные данные при создании, поэтому о неверном ключе вы узнаёте только во время выполнения.

Последний пункт мы проверили на стороне EveryInfra. В 00:22 по сингапурскому времени мы вызвали tools/call удалённого MCP-сервера без ключа. HTTP-статус был 200. В теле ответа isError было равно true, а текст сообщал, что вызов не авторизован и «Nothing was charged».

Поэтому неверный или просроченный ключ в vault не вызывает ошибки при подключении сессии к MCP. Ошибка возникает при первом вызове инструмента в виде результата с ошибкой. В промпте агента нужно указать: при ошибке авторизации остановиться и написать «ключ недействителен» в начале отчёта. Повторять попытку с другими параметрами агент не должен.

Почему не стоит читать страницы отзывов через web_fetch

В Managed Agents есть встроенный инструмент web_fetch, и он кажется самым простым путём: указать три URL заведений в промпте и поручить агенту читать страницы каждую ночь. Мы проверили документацию и файлы robots.txt трёх сайтов. Для ночной задачи без присмотра этот путь подходит плохо. Причины приведены в таблице.

ПутьМожно ли каждую ночь читать новые отзывы?Источник
web_fetch для страниц заведенийНенадёжно. С 2026-10-07 он загружает только URL, которые уже появлялись в сессии, причём URL из системного промпта или из вывода MCP не учитываются. Он не выполняет JavaScript и соблюдает robots.txtRelease notes 2026-10-07, Web fetch tool
Веб-страницы Yelprobots.txt Yelp разрешает Claude-User доступ только к /article, а для остального задано Disallow: / (прочитано 2026-11-04)yelp.com/robots.txt, статья Anthropic о краулере
Google Places APIДо 5 отзывов на место, в порядке релевантностиPlace Details
Google Business Profile APIТолько для точек, которыми вы управляете, через OAuthReview data
Yelp Fusion APIДо 3 фрагментов отзывов на компанию, в порядке Yelp по умолчаниюYelp Fusion reviews
Tripadvisor Content APIДо 5 самых новых отзывов на точкуLocation reviews
Эндпоинты отзывов EveryInfraGoogle: до 100 за вызов, сначала новые. Yelp: 10 на страницу с пагинацией. Tripadvisor: до 50 за вызовКаталог

Первое ограничение часто упускают из виду. В заметке о релизе от 7 октября 2026 года сказано, что web_fetch теперь загружает только те URL, которые уже встречались в сессии. Так снижается риск утечки данных. Засчитываются URL из сообщения пользователя или из результатов web_search. Не засчитываются URL, которые есть только в собственном выводе Claude, системном промпте, прикреплённом документе или выводе bash либо инструментов MCP. Для таких URL вызов возвращает url_not_in_prior_context.

В тот же день вышла вторая заметка о сетевом режиме limited. В этом режиме список allowed_hosts окружения распространяется и на web_fetch, и на web_search (Restrict web search and web fetch domains). С 20 октября администратор организации также может отключить web_fetch на странице Capabilities в консоли. В этом случае каждый вызов web_fetch в сессии Managed Agents возвращает ошибку. С учётом всех трёх правил ночная задача с фиксированными URL зависит от слишком многих условий.

Но главная проблема в самих страницах. Список отзывов в Google Maps загружается через JavaScript, а в документации web_fetch сказано, что сайты с отрисовкой на JavaScript не поддерживаются. Страницы заведений на Yelp закрыты для Claude-User. В robots.txt Tripadvisor для ClaudeBot прописано Disallow: /.

Claude-User там не упомянут, поэтому на него действуют общие правила. У всех официальных API небольшие лимиты: 5 отзывов в Google Places, 3 фрагмента отзывов в Yelp Fusion и 5 отзывов в Tripadvisor Content API. Katz's получает около 25 отзывов за ночь, так что этих лимитов явно недостаточно. Для такой задачи остаётся один вариант: вызывать API отзывов по HTTP или через удалённый MCP и получать структурированный JSON.

Удалённый MCP или HTTP: два пути с разной стоимостью

Первый путь — удалённый MCP. MCP-сервер EveryInfra доступен по адресу https://api.everyinfra.com/mcp и использует транспорт Streamable HTTP (MCP transports). Его tools/list возвращает 12 инструментов, из них платный только everyinfra_call_api (см. страницу MCP-сервера). В агенте вы объявляете MCP-сервер с type: url и добавляете mcp_toolset. Хранилище учётных данных предоставляет учётные данные static_bearer, привязанные к URL сервера (MCP connector). Этот путь требует меньше всего настройки, но в нём есть две ловушки.

Первая ловушка — подтверждение. В документации по политикам разрешений сказано, что набор инструментов агента по умолчанию работает с always_allow, а наборы инструментов MCP — с always_ask (Permission policies). Перед каждым вызовом MCP сессия приостанавливается и ждёт подтверждения. Ночью подтверждать некому, поэтому сессия продолжает ждать.

Задайте для набора инструментов default_config.enabled: false, чтобы отключить все его инструменты, а затем включите always_allow только для everyinfra_call_api. У этого инструмента есть аннотации readOnlyHint: false и destructiveHint: true, потому что каждый вызов платный. Поэтому даже политика auto может запросить подтверждение. Эти аннотации определены в спецификации инструментов MCP.

Вторая ловушка — размер ответа. В документации по коннектору MCP указан лимит в 100 000 символов (около 25 000 токенов). Если вывод инструмента превышает этот лимит, он записывается в файл в песочнице, а модель получает только короткий фрагмент. Наш реальный ответ Google со 100 самыми новыми отзывами о Katz's занял 105 266 символов, лишь немного превысив этот порог.

Во втором раунде реальный вызов MCP для 50 самых новых отзывов вернул 53 364 символа. Ответ Tripadvisor с 50 отзывами занял 54 739 символов, а одна страница Yelp с 10 отзывами — около 10 000 символов. На графике каждый реальный ответ показан рядом с этим порогом.

Горизонтальная столбчатая диаграмма размера ответа в символах для шести реальных вызовов. Katz's, Google, 100 отзывов: 105 266, за вертикальной линией на отметке 100 000. Katz's, Tripadvisor, 50 отзывов: 54 739. Contramar, Tripadvisor, 50 отзывов: 49 142. Haidilao, Google, 50 отзывов: 48 644. Katz's, Yelp, страница 1: 11 825. Katz's, Yelp, страница 2 через MCP: 9 675. Линия обозначает размер, начиная с которого Managed Agents записывает вывод инструмента в файл в песочнице. Данные реальных вызовов 4 ноября 2026 года, с 00:19 до 00:35 по сингапурскому времени.

Второй путь — HTTP с учётными данными в переменной окружения. Агент через встроенный инструмент bash запускает curl с заголовком Authorization: Bearer $EVERYINFRA_API_KEY. В песочнице эта переменная содержит только заглушку, а настоящий ключ подставляется при отправке запроса. JSON-ответ сразу сохраняется в файл в песочнице. Затем фильтр jq пропускает только отзывы с 1–2 звёздами, которых нет в последнем списке ID.

В итоге модель видит десяток отфильтрованных отзывов, а не 128 000 символов сырых данных на каждое заведение. За это приходится использовать более длинный промпт с чётко описанными шагами скрипта и добавить jq в окружение. Можно разрешить окружению использовать менеджеры пакетов или установить jq заранее. Для ночного запуска мы рекомендуем путь через HTTP. MCP оставьте для ручных проверок. В ручной сессии агент может вызвать everyinfra_list_requests, чтобы посмотреть статус и стоимость отдельного вызова. Этот инструмент бесплатный.

Примеры конфигурации: окружение, агент, хранилище учётных данных и деплоймент

Четыре файла ниже мы составили по полям из документации platform.claude.com. Это примеры конфигурации, в организации мы их не создавали. CLI ant умеет превращать файл Markdown с YAML-заголовком в объект командой ant apply. ID сохраняется в claude-lock.json (Define your agent). Начнём с окружения.

yaml
# Configuration example: environment (fields from the Cloud environment setup doc; not tested by us)
name: review-patrol-env
config:
  type: cloud
  networking:
    type: limited
    allowed_hosts:
      - api.everyinfra.com
    allow_package_managers: true   # to install jq; turn off after you preinstall it
    allow_mcp_servers: false

Следом идёт конфигурация агента. Системный промпт задаёт три правила: вызывать только четыре эндпоинта, определять «новые» отзывы по ID и останавливаться при ошибке авторизации.

markdown
---
# Configuration example: agent.md (fields from Define your agent, Tools and Permission policies; not tested by us)
name: Nightly review patrol
model: claude-sonnet-5-5
tools:
  - type: agent_toolset_20260401
    configs:
      - name: web_fetch
        enabled: false
      - name: web_search
        enabled: false
---
Each night, read new reviews for every store in the store list. Use only bash and curl to call
https://api.everyinfra.com/api/v1/social with the header "Authorization: Bearer $EVERYINFRA_API_KEY".
Make 4 calls per store: google_maps_reviews/reviews (sort=newest, limit=50), yelp/reviews pages 1 and 2,
and tripadvisor/reviews. Save each response to /tmp/<store>-<site>.json.
Use jq to drop review IDs that are already in /mnt/memory/review-patrol/seen.json. Read only 1-2 star reviews.
Give each bad review one or more labels: food, service, line and seating, price and hype, venue, online order.
Translate reviews that are not in English before you label them.
If a response says unauthorized, stop. Write "EveryInfra key not valid" as the first line of the report. Do not retry.
At the end, write all review IDs from this run back to /mnt/memory/review-patrol/seen.json,
and write the report to /mnt/session/outputs/report.md.

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

bash
# Configuration example: add an environment variable credential to a vault (fields from Authenticate with vaults; not tested by us)
curl --fail-with-body -sS "https://api.anthropic.com/v1/vaults/$VAULT_ID/credentials" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: managed-agents-2026-04-01" \
  -H "content-type: application/json" \
  -d "$(jq -n --arg v "$EVERYINFRA_API_KEY" '{
        auth: {
          type: "environment_variable",
          secret_name: "EVERYINFRA_API_KEY",
          secret_value: $v,
          networking: {type: "limited", allowed_hosts: ["api.everyinfra.com"]},
          injection_location: {header: true}
        },
        display_name: "EveryInfra key for nightly review patrol"
      }')"

Последним идёт запланированный деплоймент. В документации сказано, что деплоймент принимает те же настройки, что и новая сессия. Агент и окружение обязательны. Файлы, хранилища памяти и хранилища учётных данных необязательны. Список заведений передаётся в начальном сообщении, а бюджет составляет 50 центов на запуск. Поле amount задаётся в центах, поэтому "50" — это $0,50, а не $50. Хранилище памяти монтируется в /mnt/memory/ под своим отображаемым именем, так что хранилище с именем review-patrol находится в /mnt/memory/review-patrol/.

json
{
  "name": "Nightly review patrol (NYC)",
  "agent": "agent_01...",
  "environment_id": "env_01...",
  "vault_ids": ["vlt_01..."],
  "resources": [
    {"type": "memory_store", "memory_store_id": "memstore_01...", "access": "read_write",
     "instructions": "seen.json holds the review IDs from the last run, grouped by site."}
  ],
  "initial_events": [
    {
      "type": "user.message",
      "content": [{"type": "text", "text": "Store list: Katz's Delicatessen and Haidilao Hot Pot Flushing. URLs are in stores.json. Read all new reviews since the last run and write the morning report."}]
    }
  ],
  "schedule": {"type": "cron", "expression": "30 6 * * *", "timezone": "America/New_York"},
  "budget": {"type": "limit", "max_list_cost": {"amount": "50", "currency": "USD"}}
}

Как получить результат? Вебхуки отправляют сокращённый набор данных: только тип события, ID и метку времени, без полного объекта. Сам объект нужно получить GET-запросом (Subscribe to webhooks). Достаточно двух типов событий. Учтите, что session.status_idled означает «агент остановился и ждёт ввода».

Это событие приходит и после завершения запуска, и когда запуск ждёт подтверждения. Поэтому ваш сервер должен получить сессию через GET и прочитать stop_reason.type в последнем событии session.status_idle (Session event stream). deployment_run.failed означает, что запуск в эту ночь не создал сессию. Ручные запуски через эндпоинт run не отправляют события deployment_run, поэтому не ждите их в тесте.

Для каждого события делается до 3 попыток доставки с экспоненциальной задержкой со случайным разбросом от 5 до 120 секунд. После последней неудачной попытки событие отбрасывается и в очередь не попадает. Поэтому ваш сервер должен убирать дубликаты по event.id и каждое утро проверять список запусков деплоймента. Секрет подписи начинается с whsec_. Заголовки называются webhook-id, webhook-timestamp и webhook-signature, формат тот же, что у Standard Webhooks.

`stop_reason.type`Что это означаетЧто делает ваш сервер после вебхука
end_turnАгент завершил свой ходПолучите /mnt/session/outputs/report.md через Files API и отправьте дежурному менеджеру
requires_actionВызов инструмента ждёт подтверждения, например если для MCP-инструмента всё ещё задано always_askОтправьте оповещение и исправьте политику разрешений агента. Не подтверждайте вызовы ночью скриптом
budget_reachedСтоимость запуска по прейскуранту достигла лимита бюджетаОтправьте оповещение и проверьте, не зациклился ли агент на повторных попытках. На следующий день скорректируйте бюджет

Один реальный цикл: что отправляет модель и что приходит в ответ

Мы не разворачивали деплоймент на стороне Anthropic. Но запрос, который агент отправляет в EveryInfra через MCP, на нашей стороне выглядит так же, как запрос через curl. Ниже приведён реальный запрос, который мы отправили в 00:21:42 по сингапурскому времени через tools/call удалённого MCP. Он получает страницу 2 отзывов о Katz's на Yelp. page_token взят из next_page_token в ответе для страницы 1, здесь мы его сократили.

json
{"jsonrpc": "2.0", "id": 7, "method": "tools/call",
 "params": {"name": "everyinfra_call_api",
  "arguments": {"platform": "yelp", "action": "reviews",
   "params": {"url": "https://www.yelp.com/biz/katzs-delicatessen-new-york",
              "page_token": "pt1.4EnA2jhN8mJn…"}}}}

Ответ пришёл с кодом HTTP 200 через 24,9 секунды. В content[0].text было 9 675 символов JSON с 10 отзывами, за вызов списано $0,001389. У каждого отзыва есть поля id, rating, posted_at, text и другие. Важнее всего поле id, потому что от него зависит проверка на «новизну». В таблице перечислены все вызовы первого раунда (T1) для Katz's.

Сингапурское времяВозможностьПутьЗаписиВремяСимволыСписание
00:18:04google_maps_reviews/searchREST372.5 s3,915$0.001389
00:19:21google_maps_reviews/reviews, самые новые, 100REST1009.2 s105,266$0.001389
00:19:46yelp/reviews, страница 1REST1024.6 s11,825$0.001389
00:20:22tripadvisor/searchREST115.2 s1,741$0.001389
00:20:43tripadvisor/reviewsREST5011.1 s54,739$0.001389
00:21:02yelp/reviews, URL с sort_by=date_descREST1027.4 s11,825$0.001389
00:21:42yelp/reviews, страница 2MCP1024.9 s9,675$0.001389

Первый вызов в 00:17:32 получил ответ 429. Для нашего тестового ключа действует лимит запросов: 10 вызовов в минуту. Плата за этот вызов не списывалась, а повторная попытка через 30 секунд прошла успешно. Затем мы сделали ещё 13 вызовов для Haidilao и Contramar в Мехико.

Четыре из них были поисковыми запросами без результата, и API оформил возврат средств за каждый из них со статусом empty_result_refunded. В первом раунде плата была списана за 15 вызовов на общую сумму $0,020835. Вместе с 5 вызовами второго раунда в 01:20 плата была списана за 20 вызовов на общую сумму $0,02778. Поиск мест в Google ничего не нашёл для двух заведений за пределами США (Botín в Мадриде и Contramar в Мехико). Тогда мы вызвали google_maps_reviews/reviews с URL поиска Google Maps и получили 50 отзывов о Contramar.

Скриншот двух реальных ответов EveryInfra в одной карточке. Вверху — REST-вызов google_maps_reviews/reviews в 00:19:21. У первого отзыва posted_at 2026-11-03T15:52, вызов вернул 100 отзывов, has_more равно true. Внизу — MCP-вызов yelp/reviews, страница 2, в 00:21:42, где у одного отзыва с 1 звездой posted_at 2026-09-04. Бирюзовыми рамками отмечены id и posted_at отзыва. За каждый вызов списано 0,001389 USD.
Проверка на «новизну» опирается на ID отзыва. posted_at лишь помогает. Скриншот реальных ответов API EveryInfra, 2026-11-04, сингапурское время

Тест 1: сколько дней охватывают «N самых новых» отзывов на каждом сайте

Сколько отзывов нужно читать каждую ночь, зависит от того, какой период охватывает одна страница. Мы взяли posted_at первого и последнего отзыва в каждом ответе и вычислили разницу. Результат показан на графике. В середине списка Google оказались два старых отредактированных отзыва (от 23 октября и 10 августа). В справке Google сказано, что у отредактированного отзыва показывается дата редактирования (справка Google Business Profile), поэтому эти два отзыва мы не учитывали при расчёте периода.

СайтПрочитано записейПериод, охваченный списком1–2 звездыОтветы владельцаВ хронологическом порядке?
Google1003,97 дня1010Да, кроме 2 отредактированных отзывов
Yelp, страницы 1 и 22068,84 дня10Нет
Tripadvisor50119 дней100Да
Горизонтальная столбчатая диаграмма в логарифмическом масштабе: сколько дней охватывает один ответ. Katz's, Google, 100 самых новых: 3,97 дня. Haidilao, Google, 50 самых новых: 11,24 дня. Contramar, Google, 50 самых новых: 22,86 дня. Katz's, Tripadvisor, 50: 119 дней. Contramar, Tripadvisor, 50: 414 дней. Страница 1 Yelp не упорядочена по дате, поэтому на диаграмме её нет. Данные реальных вызовов 4 ноября 2026 года, с 00:17 до 00:35 по сингапурскому времени.

«50 самых новых» отзывов охватывают меньше двух дней для Katz's в Google и больше года для Contramar на Tripadvisor. Такой разрыв объясняется двумя факторами: числом отзывов о заведении и языком отзывов. Оба ответа Tripadvisor были полностью на английском. Все 50 отзывов о Katz's были на английском. Для Contramar мы использовали URL мексиканского сайта tripadvisor.com.mx, и все 50 отзывов всё равно оказались на английском, с 2025-09-02 по 2026-10-21.

Значит, этот эндпоинт читает англоязычные отзывы на Tripadvisor, а испанских отзывов в ответе нет. У заведения, куда ходят в основном местные гости, новый отзыв на Tripadvisor в конкретную ночь будет появляться редко. Одно чтение стоит всего $0,001389, так что его всё равно стоит оставить в задаче.

Yelp ведёт себя иначе. На странице 1 для Katz's было 10 отзывов с 20 сентября по 2 ноября вперемешку. На странице поддержки Yelp сказано, что порядок по умолчанию учитывает свежесть, голоса и качество отзыва, поэтому старые отзывы могут стоять выше новых. Выбрать «Newest First» могут только авторизованные пользователи (справка Yelp).

Мы добавили sort_by=date_desc в URL и повторили вызов. Все 10 ID отзывов совпали, то есть этот параметр URL ни на что не повлиял. На странице 2 был отзыв от 1 ноября, и 5 из 10 её отзывов оказались новее самого старого отзыва на странице 1. Поэтому ночная задача должна читать как минимум две страницы Yelp и определять «новые» отзывы по ID. Верхний отзыв на странице 1 не годится в качестве надёжной метки.

Тест 2: как распределяются негативные отзывы и о чём в них пишут

На графике показана доля оценок каждого уровня в каждом ответе. Из 100 самых новых отзывов о Katz's в Google у 10 было 1–2 звезды, то есть 10%. На Tripadvisor 1–2 звезды было у 10 из 50 отзывов, то есть 20%. На Yelp только у 1 из 20 отзывов на двух страницах была оценка в 1 звезду.

У Haidilao 49 из 50 отзывов в Google были на 5 звёзд и 1 на 3 звезды, негативных отзывов не нашлось. Все 10 отзывов на странице 1 Haidilao в Yelp были на 4 или 5 звёзд. Среди 50 отзывов о Contramar в Google был один отзыв на 1 звезду и один на 2 звезды.

Нормированная столбчатая диаграмма с накоплением из шести столбцов. Katz's, Google, 100 отзывов: 6 на одну звезду, 4 на две, 10 на три, 13 на четыре, 67 на пять. Katz's, Tripadvisor, 50: 7, 3, 7, 7, 26. Katz's, Yelp, две страницы, 20 отзывов: 1, 0, 3, 5, 11. Haidilao, Google, 50: 0, 0, 1, 0, 49. Contramar, Google, 50: 1, 1, 4, 4, 40. Contramar, Tripadvisor, 50: 3, 2, 4, 5, 36. Оценки от 1 до 2 звёзд выделены бирюзовым. Данные реальных вызовов 4 ноября 2026 года, сингапурское время.

Мы прочитали полный текст 10 негативных отзывов о Katz's в Google и 10 негативных отзывов на Tripadvisor. Каждый отзыв мы разметили вручную, причём у одного отзыва может быть несколько меток. Из 10 отзывов в Google 6 касались еды (сухое мясо, разваливающийся хлеб), а в 7 говорилось, что заведение переоценено или слишком дорогое. Ещё 3 касались персонала, 2 — тесноты или зала и 1 — очереди.

Из 10 отзывов на Tripadvisor 7 касались еды, 6 — цены и ажиотажа, 5 — обслуживания и 3 — очереди и рассадки. Ещё два были об онлайн-заказах и доставке, а не о посещении ресторана. Такое разделение полезно для отчёта. Жалобы на онлайн-заказы нужно передавать команде e-commerce, и их не следует записывать на счёт персонала заведения.

Сгруппированная столбчатая диаграмма причин в отзывах о Katz's с 1–2 звёздами. Бирюзовый — 10 отзывов в Google, серый — 10 отзывов на Tripadvisor. Еда: 6 и 7. Цена и ажиотаж: 7 и 6. Обслуживание: 3 и 5. Очередь и рассадка: 1 и 3. Помещение: 2 и 0. Онлайн-заказ: 0 и 2. У одного отзыва может быть несколько причин. Данные реальных вызовов 4 ноября 2026 года, сингапурское время. Каждый отзыв мы разметили вручную после прочтения.

Ещё два наблюдения меняют промпт. Во-первых, 6 из 10 негативных отзывов в Google были не на английском: 2 на итальянском, 2 на немецком, 1 на турецком и 1 на испанском. Параметр lang задаёт язык интерфейса и не переводит отзывы, поэтому агент должен сначала перевести отзыв, а затем присвоить ему метки. Во-вторых, у 10 из 100 самых новых отзывов в Google был ответ владельца. Все 10 ответов были отправлены 2 ноября с 21:10 до 21:32 UTC, в пределах 22 минут.

Девять из 10 ответов были на отзывы с 5 звёздами. Только один ответ был на отзыв с 1 звездой, в котором рассказывалось о человеке, пролезшем без очереди. Этот ответ появился примерно через 35 часов после отзыва. Значит, это заведение отвечает пачками и в первую очередь на хорошие отзывы. Столбец «Ответ» в отчёте выводит наверх негативные отзывы, которыми никто не занялся.

Тест 3: как определить «новые» отзывы по двум снимкам

Первый раунд (T1) прошёл с 00:19 до 00:21 по сингапурскому времени, второй (T2) — в 01:20. Промежуток примерно в час имитирует интервал между «прошлой ночью» и «сегодняшней ночью». В T2 мы прочитали 50 самых новых отзывов о Katz's в Google через удалённый MCP. Ещё раз прочитали Google через REST с since=2026-11-03, а также по одному разу страницу 1 Yelp и Tripadvisor.

Это 4 вызова на $0,005556. Ещё один вызов yelp/search нашёл страницу Contramar на Yelp для испанской версии. Правило «новизны» умещается в одну строку: отзыв новый, если его ID нет в наборе из прошлого запуска.

СайтЗаписи в T1Записи в T2ID, которых не было в T1Из них с 1–2 звёздами
Google, 50 самых новых (MCP)10050, 53 364 символа3, все на 5 звёзд0
Google since=2026-11-03 (REST)—17, 21 588 символов, следующей страницы нет3 (остальные 14 были в T1)0
Yelp, страница 11010, те же ID в том же порядке, что и в T100
Tripadvisor505000
Точечная временная шкала. Ось X охватывает время с 00:00 до 18:00 UTC 3 ноября 2026 года, ось Y — оценку в звёздах. Серые точки — 14 отзывов, которые уже были получены при первом вызове в 16:19 UTC. Бирюзовые точки — 3 отзыва, которые впервые появились при втором вызове в 17:20 UTC: все на 5 звёзд, опубликованы в 14:54, 16:49 и 17:15. Две пунктирные вертикальные линии отмечают два вызова. Отзыв от 14:54 был опубликован более чем за час до первого вызова, но в первом ответе его не было.

Самая полезная деталь — время публикации 3 новых отзывов в Google: 17:15, 16:49 и 14:54 UTC. Первые два опубликованы позже вызова T1 в 16:19 UTC, так что это обычные новые отзывы. Третий, опубликованный в 14:54, появился за 1 час 25 минут до вызова T1. Он был опубликован даже раньше самого нового отзыва в T1 (15:52), но в списке из 100 отзывов T1 его не было.

Значит, отзыв может появиться в Google позже указанного у него времени публикации. Правило вроде «читать только отзывы с posted_at позже последнего самого нового» пропустит такой отзыв навсегда. Поймать его можно только сравнением ID. У отзывов, которые есть и в T1, и в T2, не изменились ни posted_at, ни оценка, ни ответ владельца.

Параметр since тоже стоит описать в промпте. Он задаёт дату, а не время. since=2026-11-03 вернул все 17 отзывов за 3 ноября по UTC, и 14 из них уже были в T1. Поэтому проверку по ID он не заменяет. Но он сократил ответ с 53 364 до 21 588 символов, примерно на 60%, и сильнее всего это помогает на пути через MCP.

Наш совет: задавайте since на день раньше даты последнего успешного запуска, оставляйте sort=newest и убирайте дубликаты по ID. Оставьте limit равным 50 как страховку на случай, если since указан неверно. На Yelp и Tripadvisor за этот час новых отзывов не было, и 10 ID на странице 1 Yelp сохранили прежний порядок. То, что страница 1 не изменилась, ещё не доказывает, что не изменилась страница 2, поэтому читайте обе. Отчёт за эту ночь умещается в одну строку: «За последний час на трёх сайтах появилось 3 новых отзыва, все на 5 звёзд. Новых негативных отзывов нет».

От этого сравнения зависит и то, что хранить в хранилище памяти. Достаточно набора недавних ID отзывов для каждого сайта. Для Google храните последние 400 ID, потому что эндпоинт возвращает с пагинацией до 400 записей. Для Yelp и Tripadvisor храните последние 100 ID. Также сохраняйте дату последнего успешного запуска. Не ограничивайтесь «временем самого нового отзыва»: вспомните отзыв от 14:54, описанный выше.

Как выглядит утренний отчёт

Пропишите правила разметки в промпте: для каждой метки одну строку определения и несколько подсказок. Иначе один и тот же отзыв сегодня попадёт в «Обслуживание», а завтра в «Очередь», и итоги на конец месяца нельзя будет сравнить. Шесть меток ниже мы составили по полному тексту 28 негативных отзывов: 21 о Katz's и 7 о Contramar. Каждая подсказка взята из слов, которые раз за разом встречались в этих отзывах. У отзыва может быть несколько меток. Если агент не уверен, пусть добавит ещё одну метку, а не пытается выбрать только одну.

МеткаОпределениеПодсказки в отзывахКому передать
ЕдаПроблема с самой едойСухо, солёно, жирно, безвкусно, несвежее, хлеб разваливаетсяРуководитель кухни
ОбслуживаниеОтношение или действия персоналаГрубили, нас игнорировали, швырнули пакет, добавили чаевые без спросаУправляющий заведением
Очередь и рассадкаОжидание, схема рассадки, выбор местаДлинная очередь, кто-то пролез без очереди, только места у стойки, столы слишком близкоМенеджер зала
Цена и ажиотажНе стоит своих денег, или известность заведения не соответствует качеству едыСлишком дорого, переоценено, популярное в соцсетях место, не стоит поездкиМаркетинг и ценообразование
ПомещениеЗал и оснащениеТесно, столы близко, за соседним столом курят вейпУправляющий заведением
Онлайн-заказЗаказы на сайте, отправка, доставкаЗаказ пришёл через неделю, проблема с приправами, купленными онлайнКоманда e-commerce

В примере ниже использованы 10 негативных отзывов о Katz's в Google из ответа T1. Каждый отзыв мы перевели и сократили. Даты указаны в UTC. В настоящем отчёте у каждого отзыва должна быть ещё и ссылка, чтобы дежурный менеджер мог открыть его и ответить.

Опубликован (UTC)ЗвёздыЯзыкКраткоМеткиОтвет
11-03 02:401ИтальянскийСотрудники у стойки с напитками и гарнирами грубили и швырнули пакет гостюОбслуживаниеНет
11-01 17:591АнглийскийЕда годами становится хуже. Сегодняшний пастрами был жирным и безвкуснымЕда, цена и ажиотажНет
11-01 10:081АнглийскийКто-то пролез без очереди, а повар велел автору отзыва ждать дальшеОчередь и рассадкаДа
10-31 15:071ТурецкийПереоценено, не стоит поездки на таксиЦена и ажиотажНет
10-31 12:552ИспанскийМужчина, который резал мясо, был неприветливОбслуживаниеНет
10-31 08:342ИтальянскийМясо на вкус варёное и сухое, плохой хлеб, очень высокие ценыЕда, цена и ажиотаж, помещениеНет
10-31 02:532НемецкийЕда сильно разочаровала. Только зал напоминал классическую американскую дели; ажиотаж и цена не соответствуют качеству едыЕда, цена и ажиотажНет
10-31 02:511НемецкийСухое мясо без приправ, не стоит ни ажиотажа, ни денегЕда, цена и ажиотажНет
10-30 23:331АнглийскийСэндвич с пастрами за $31, очень сухой и слишком жёсткий, чтобы его разрезатьЕда, цена и ажиотажНет
10-30 16:332АнглийскийГлавная проблема — грубый официант, который их не обслуживал, но отчитал за то, что они передвинули стол; к тому же заведение переоценено, еда так себе, а столы стоят слишком близкоОбслуживание, еда, помещение, цена и ажиотажНет

Отчёт должен начинаться с краткой сводки, а не с длинного списка. По таблице выше сводка может быть такой: «За последние 4 дня в Google появилось 10 новых отзывов с 1–2 звёздами. В 7 говорится, что заведение переоценено или не стоит своих денег, 6 касаются еды. 6 отзывов написаны не на английском. На 9 нет ответа, и 3 из них касаются персонала. Сегодня в первую очередь ответьте на эти 3».

Не указывайте в тексте отчёта имена авторов отзывов и сотрудников. Оставляйте только ссылки. Кроме того, в тексте отзывов о Contramar в Google встречаются теги переноса строки <br> (в 6 из 30 отзывов с текстом), поэтому агент должен удалить их перед составлением отчёта.

Сколько стоит Claude Managed Agents: плата за API и расходы на стороне Anthropic

Расходы складываются из двух частей. Со стороной EveryInfra всё просто. Каждому заведению нужно 4 вызова за ночь по $0,001389, то есть $0,005556 за ночь и $0,1667 за 30 ночей. Для 10 заведений это $1,6668 в месяц, для 50 заведений — $8,334.

Абонентской платы нет. За пустые результаты средства возвращаются. Три вызова для поиска заведений выполняются только при настройке (см. страницу тарифов).

Что касается Anthropic, на странице цен, которую мы прочитали 4 ноября 2026 года, сказано, что Managed Agents тарифицируется по двум статьям. Токены оплачиваются по прейскурантной цене модели. Время работы сессии стоит $0,08 в час, учитывается с точностью до миллисекунды и только пока сессия находится в статусе running. Время простоя бесплатно.

Веб-поиск в рамках сессии стоит $10 за 1 000 запросов, и скидка Batch API на него не распространяется (Pricing). На той же странице указаны цены Opus 5.5: $4 за миллион входных токенов и $20 за миллион выходных. У Sonnet 5.5 — $2 и $10. У Haiku 5.5 для промптов до 100 000 токенов — $0.10 и $0.50.

Расход токенов мы не измеряли, поэтому дальнейшие цифры являются оценками. Мы приводим допущения, чтобы вы могли подставить свои. Одно заведение за одну ночь даёт 129 603 символа сырых ответов (реальный ответ Google на 50 отзывов из второго раунда, две страницы Yelp и 50 отзывов Tripadvisor). В глоссарии сказано, что у старых моделей на один токен приходится около 3,5 символа английского текста. Модели 4.7 и новее расходуют на тот же текст примерно на 30% больше токенов (Glossary). Мы взяли 2,69 символа на токен, так что сырые ответы составляют около 48 138 токенов.

Цикл агента может читать контекст несколько раз. Измерить, сколько именно, мы не можем, поэтому приводим два уровня. 1x (каждый ответ попадает в контекст один раз) — нижняя граница, 3x — верхняя. Для обоих уровней мы добавили 15 000 токенов на системный промпт и описание инструментов, а также 3 000 выходных токенов. Скидку за кэширование промптов мы не учитывали. При работе через MCP, когда все сырые данные находятся в контексте, на одну ночь требуется примерно от 63 138 до 159 414 входных токенов.

На пути через HTTP, где jq пропускает только записи с 1–2 звёздами, на одну ночь нужно примерно от 17 854 до 23 564 входных токенов. На уровне 3x это примерно на 85% меньше. Число символов на токен тоже оценочное. Чтобы получить более точную цифру, прогоните свои ответы через эндпоинт подсчёта токенов Anthropic. Для времени работы мы взяли измеренные 69,8 секунды на 4 вызова инструментов плюс 60 секунд работы модели, что даёт $0,00288 за ночь.

Одно заведениеЗа ночь (от 1x до 3x)За месяц (30 ночей, 3x)
Плата за API EveryInfra (4 вызова, цена по каталогу)$0.005556$0.1667
Время работы сессии (оценка: 129,8 с)$0.00288$0.0864
Haiku 5.5, HTTP с фильтромот $0,0033 до $0,0039$0.117
Haiku 5.5, MCP с полными даннымиот $0,0078 до $0,0174$0.522
Sonnet 5.5, HTTP с фильтромот $0,0657 до $0,0771$2.313
Sonnet 5.5, MCP с полными даннымиот $0,1563 до $0,3488$10.464
Opus 5.5, HTTP с фильтромот $0,1314 до $0,1543$4.629
Горизонтальная столбчатая диаграмма оценок стоимости для одного заведения за 30 ночей. Плата за API EveryInfra: 0,1667 USD, бирюзовым, по реальной цене. Время работы сессии: 0,0864 USD. Haiku 5.5 на HTTP с фильтром: 0,117 USD. Haiku 5.5 на MCP с полными данными: 0,522 USD. Sonnet 5.5 на HTTP с фильтром: 2,313 USD. Sonnet 5.5 на MCP с полными данными: 10,464 USD. Стоимость моделей оценена по верхней границе при трёхкратном чтении (3x), по прейскуранту и без скидки за кэширование.

Плата за API — небольшая фиксированная сумма. Итоговая стоимость зависит от модели и от того, сколько сырых данных попадает в контекст. С Sonnet 5.5 на пути через HTTP одно заведение обходится в сумме примерно от $0,074 до $0,086 за ночь. На плату за API из этого приходится лишь от 6,5% до 7,5%. Та же модель на пути через MCP с полными данными стоит примерно от $0,165 до $0,357 за ночь, то есть в 2,2–4,2 раза больше. Для разметки и перевода отзывов, скорее всего, хватит Haiku 5.5, и тогда одно заведение обойдётся меньше чем в $0,40 в месяц.

Чтобы задать бюджет деплоймента, используйте формулу «число заведений × оценка на заведение × 3». Для 10 заведений на Sonnet с HTTP оценка составляет около $0,86 за ночь. Бюджет "300" ($3) остановит зациклившийся запуск и при этом даст обычному запуску завершиться. Один пользователь Reddit писал, что за три попытки запуска Managed Agents он потратил на API около $6 (ветка на Reddit). Поэтому задайте бюджет с первого дня. В таблице итоги пересчитаны на большее число заведений на уровне 3x. Предполагается, что стоимость на одно заведение не меняется и что одна сессия читает все заведения.

ЗаведенияAPI EveryInfra в месяцИтого с Haiku 5.5, HTTP (оценка)Итого с Sonnet 5.5, HTTP (оценка)Бюджет на запуск, Sonnet
1$0.1667$0.369$2.565"30"
10$1.667$3.69$25.65"300"
50$8.334$18.45$128.25"1300"

Claude Managed Agents, Agent SDK или расписания в Claude Code и Cowork: что выбрать

Сейчас у Anthropic есть как минимум четыре способа запускать Claude по расписанию. Выбор зависит от того, кто выполняет цикл, кто платит и где хранится ключ. Agent SDK — это библиотека. Она встраивает цикл агента Claude Code в ваш собственный процесс.

Машину и планировщик предоставляете вы (Agent SDK overview, руководство по хостингу). Managed Agents предоставляет размещённый в облаке цикл агента и песочницу. Routines в Claude Code и scheduled tasks в Cowork — функции приложений по подписке, они расходуют лимиты вашего плана.

Деплоймент Managed AgentsAgent SDKRoutines в Claude CodeScheduled tasks в Cowork
Кто выполняет циклОблако AnthropicВаш сервер или контейнерОблако AnthropicОблако Anthropic
РасписаниеCron + часовой пояс IANA, разброс до 9 минВаш собственный cron или очередь задачCron, интервал не меньше 1 часаЧастота выбирается в приложении
ОплатаТокены API + $0,08 в часТокены APIЛимиты тарифаЛимиты тарифа
Подходит дляПродакшен-задачи для многих заведений с бюджетами и вебхукамиКоманды, у которых уже есть свои серверы и которым нужен полный контрольЛичный дайджест разработчикаЛичный еженедельный отчёт
ИсточникScheduled deployments, PricingAgent SDK overview, руководство по хостингуRoutinesСправка Cowork

Ранее мы опубликовали две статьи на близкие темы. В первой используются Routines в Claude Code: они каждую ночь читают Reddit и составляют сводку болевых точек пользователей. В том тесте одна страница со 100 постами охватила всего 18,7 часа (запланированные задачи Claude Code для Reddit). Во второй запланированные задачи Cowork каждый понедельник собирают таблицу цен и отзывов конкурентов (таблица цен конкурентов в Cowork).

Если сравнить все три статьи, получается так. Для еженедельного отчёта, который вы читаете сами, проще всего Cowork. Для задачи разработчика рядом с репозиторием кода подойдёт Claude Code. Для десятков магазинов каждую ночь, с лимитом бюджета, оповещениями о сбоях и отправкой результатов в вашу собственную систему используйте развёртывание Managed Agents по расписанию.

В документации Claude Code сказано, что Routines запускаются не чаще раза в час и расходуют лимиты тарифного плана (Routines). Задачи Cowork выполняются в облаке, даже когда ваш компьютер в спящем режиме (справка Cowork). Если вам нужны только отзывы Google Maps в таблице, без агента, читайте статью как парсить отзывы Google Maps.

Когда что-то сломалось: какой уровень проверять первым

Когда ночная задача падает, в отчёте часто написано только «нет данных». Таблица собирает в одном месте вероятные сбои трёх уровней: развёртывание и сессия Anthropic, vault и сеть, API EveryInfra. В левой колонке указан симптом, который вы видите. Правые колонки подсказывают, куда смотреть в первую очередь. Ситуации из всех строк EveryInfra мы воспроизвели при реальных вызовах 4 ноября. Строки об Anthropic основаны на тексте документации об ошибках и состояниях.

СимптомВероятный уровеньЧто проверить сначалаКак исправить
Утром нет ни отчёта, ни вебхукаРазвёртывание не создало сессию, или все 3 попытки доставки вебхука завершились ошибкойGET /v1/deployment_runs?has_error=trueОдин раз вызовите POST /v1/deployments/{id}/run вручную
Сессия ждёт, а файл отчёта не появляетсяДля набора MCP-инструментов всё ещё стоит always_askstop_reason последнего события idleУстановите always_allow для everyinfra_call_api
Результат инструмента сообщает unauthorized и «Nothing was charged»Неверный ключ в vault или неверный allowed_hosts у учётных данныхsecret_name и networking учётных данныхИсправьте учётные данные. Не давайте агенту делать повторные попытки
curl получает 403 с именем хостаВ allowed_hosts окружения нет этого хостаnetworking окруженияДобавьте api.everyinfra.com
Модель видит только короткое превьюВывод MCP-инструмента длиннее 100 000 символовlimit этого вызоваЗапрашивайте 50 отзывов или перейдите на HTTP с jq
API возвращает 429Исчерпан поминутный лимит запросов ключаretry_after в ответеПодождите указанное число секунд. За 429 плата не списывается
Поиск не дал результата, средства возвращеныПоиск места не дал результатов для этого магазинаreason в ответеЧитайте отзывы по URL поиска Google Maps

За этой таблицей стоит одно правило. Каждая ошибка должна попасть в отчёт, и агент не должен сам её обходить. Агенты хорошо умеют «попробовать ещё раз с другими параметрами». Эта задача стоит денег и работает ночью, когда никто за ней не следит.

Здесь обходной путь часто означает выбор не того магазина, повторное чтение или ошибку конфигурации, которая не устраняется месяц. Поэтому в промпте должно быть указано: при unauthorized, 403 или приостановке из-за бюджета остановиться и записать причину. Только при 429 допускается одна повторная попытка после ожидания.

Ограничения и открытые вопросы

Во-первых, сторону Anthropic мы не тестировали. Развёртывания по расписанию, подмена ключей через vault, политики разрешений и вебхуки приведены как примеры конфигурации из документации platform.claude.com по состоянию на 4 ноября 2026 года. Managed Agents всё ещё в бета-версии, и поля могут измениться. Поля vault_ids и resources мы взяли из примеров в документации по сессиям и по памяти. Прежде чем что-либо создавать, сверьте их со справочником по развёртываниям для вашей версии SDK.

Во-вторых, Tripadvisor возвращает только отзывы на английском языке. Отзывов на испанском, китайском и других языках в ответе нет. В-третьих, поиск мест в Google не дал результата для обоих магазинов за пределами США (средства возвращены). Прямое чтение по URL поиска Google Maps сработало, поэтому каждый новый URL магазина один раз проверяйте вручную. В-четвёртых, на Yelp страница 1 не отсортирована по дате, а параметр сортировки в URL ни на что не влияет. Читайте ещё одну страницу и определяйте «новые» отзывы по ID.

В-пятых, текст отзывов нужно считать недоверенными входными данными. В документации по памяти предупреждают, что содержимое хранилища памяти может содержать промпт-инъекцию, и у текста отзывов тот же риск. Кто угодно может написать в отзыве «игнорируй свои инструкции». Путь через HTTP и jq сохраняет отзывы как данные. Окружение разрешает только api.everyinfra.com, а vault подставляет ключ только для этого хоста. Поэтому, даже если модель введут в заблуждение, ключ никуда не уйдёт.

В-шестых, используйте отчёт только для улучшения собственных магазинов. Правило FTC 2024 года запрещает фейковые отзывы, оплату отзывов с заранее заданным мнением и подавление негативных отзывов (пресс-релиз FTC). Негативные отзывы стоит отслеживать каждую ночь, но правильно будет ответить на отзыв и устранить проблему, а не давить на его автора. Статья описывает только методы работы с данными и не является юридической консультацией.

Последние изменения

Эти обновления за последний месяц затрагивают нашу задачу. Все они описаны в «Claude Platform release notes». С 2026-10-07 web_fetch загружает только URL, которые уже встречались в сессии, а allowed_hosts при сетевом режиме limited применяется к web_fetch и web_search. 2026-10-09 в Managed Agents появились динамические рабочие процессы (dynamic workflows), которые запускают много агентов поэтапно. Они могут пригодиться, если у вас сотни магазинов, но мы их не тестировали. 2026-10-14 развёртывания по расписанию стали доступны в Claude Platform on AWS.

2026-10-20 администраторы организаций получили в консоли переключатель, который отключает web fetch или ограничивает его домены, и сессии Managed Agents ему подчиняются. 2026-10-29 вышла бета-версия Usage and Cost Analytics API. Этот API разбивает токены и затраты по модели, рабочему пространству и API-ключу, что помогает проверять месячную стоимость ночного мониторинга.

FAQ

Чем Claude Managed Agents отличаются от Routines в Claude Code?

Этот вопрос взят из поисковых подсказок «claude managed agents vs claude code» и «claude managed agents vs routines», а также из поста на Reddit «What is the point of Managed Agents» (тред на Reddit). Оба варианта работают в облаке Anthropic. Routines в Claude Code расходуют лимиты тарифного плана и запускаются не чаще раза в час (Routines). Развёртывания Managed Agents оплачиваются по API-токенам плюс $0,08 за час сессии и запускаются по cron с точностью до минуты. Они ограничивают каждый запуск жёстким бюджетом и отправляют результаты через вебхук (Scheduled deployments). Для продакшен-задач команды или клиентов выбирайте второй вариант.

Как устроены тарифы Claude Managed Agents и сколько стоит одна ночь?

Этот вопрос взят из подсказок «claude managed agents pricing» и «claude managed agents cost». Плата взимается за две вещи. Токены модели оплачиваются по прайс-листу, а время работы сессии стоит $0,08 в час и учитывается только в состоянии running (Pricing, по состоянию на 2026-11-04). По нашей оценке, один магазин на Sonnet 5.5 с HTTP-путём стоит за ночь около $0,077 за модель и $0,0029 за время работы. Добавьте $0,0056 за API EveryInfra, и в сумме выйдет около $0,0855 при верхней оценке с коэффициентом 3x.

Claude Managed Agents или Agent SDK: что выбрать?

Этот вопрос взят из подсказки «claude managed agents vs agent sdk». Agent SDK — это библиотека. Цикл агента работает в вашем собственном процессе, а машину, расписание, секреты и логи вы обслуживаете сами (Agent SDK overview). Managed Agents берёт на себя цикл, изолированную среду, расписание, подмену учётных данных и запись сессии. Выбирайте SDK, если у вас уже есть серверы и очередь задач и вам нужен полный контроль. Выбирайте Managed Agents, если вам нужны вебхуки и бюджет на каждый запуск без собственного планировщика.

Могут ли Managed Agents читать отзывы Google Maps или Yelp через web_fetch?

Этот вопрос взят из подсказки «claude managed agents web». Надёжно не могут. web_fetch не выполняет JavaScript, а с 2026-10-07 загружает только URL, которые уже появлялись в сессии (release notes). Файл robots.txt Yelp разрешает Claude-User только раздел /article (yelp.com/robots.txt). Структурированный API отзывов надёжнее.

Что будет, если развёртывание по расписанию пропустит запуск?

Этот вопрос взят из подсказки «claude managed agents schedule». Триггеры, пропущенные во время паузы, задним числом не выполняются. Если на создании сессии срабатывает лимит запросов, этот запуск получает запись session_rate_limited_error, а повторной попытки не будет (Scheduled deployments). Поэтому следующий запуск должен дочитывать до последнего ID отзыва, который сохранил последний успешный запуск, а не ограничиваться последними 24 часами. В Google limit=50 покрывает около двух дней для такого популярного магазина, как Katz's, так что одна пропущенная ночь всё равно покрывается.

Видит ли модель ключ в vault?

Этот вопрос взят из подсказок «claude managed agents vault» и «claude managed agents credential vault». Нет. Учётные данные типа «переменная окружения» содержат в изолированной среде только заглушку. Реальное значение подставляется на выходе и только для хостов из allowed_hosts (Authenticate with vaults). В блоге Anthropic тоже сказано, что агент никогда не видит ваш ключ (блог Anthropic).

С чего начать

  1. Получите API-ключ EveryInfra. Пройдите Быстрый старт и по одному разу вызовите google_maps_reviews/search, yelp/search и tripadvisor/search, чтобы найти URL трёх магазинов.
  2. Один раз вызовите google_maps_reviews/reviews, yelp/reviews и tripadvisor/reviews через curl на своём компьютере. Проверьте поля и размер ответа. О пути через MCP читайте на странице MCP-сервера.
  3. В консоли Claude создайте окружение с сетевым режимом limited и единственным хостом api.everyinfra.com. Создайте vault с одной записью учётных данных EVERYINFRA_API_KEY. Создайте агента с отключёнными web_fetch и web_search.
  4. Запустите одну сессию вручную или вызовите POST /v1/deployments/{id}/run, чтобы проверить формат отчёта и стоимость. Затем создайте развёртывание с cron 30 6 * * * и бюджетом на каждый запуск. Подпишитесь на session.status_idled и deployment_run.failed.
  5. Описание каждого API отзывов смотрите на странице отзывов Google Maps, странице Yelp и странице Tripadvisor. Еженедельный отчёт по пяти сайтам отзывов описан в статье мониторинг отзывов через OpenAI Agents API.

Источники

  1. «Claude Managed Agents overview», документация Anthropic, дата обращения: 2026-11-04.
  2. «Scheduled deployments», документация Anthropic, дата обращения: 2026-11-04.
  3. «Authenticate with vaults», документация Anthropic, дата обращения: 2026-11-04.
  4. «Cloud environment setup», документация Anthropic, дата обращения: 2026-11-04.
  5. «Tools», документация Anthropic, дата обращения: 2026-11-04.
  6. «MCP connector», документация Anthropic, дата обращения: 2026-11-04.
  7. «Permission policies», документация Anthropic, дата обращения: 2026-11-04.
  8. «Session budgets», документация Anthropic, дата обращения: 2026-11-04.
  9. «Subscribe to webhooks», документация Anthropic, дата обращения: 2026-11-04.
  10. «Reference», документация Anthropic, дата обращения: 2026-11-04.
  11. «Using agent memory», документация Anthropic, дата обращения: 2026-11-04.
  12. «Restrict web search and web fetch domains», документация Anthropic, дата обращения: 2026-11-04.
  13. «Web fetch tool», документация Anthropic, дата обращения: 2026-11-04.
  14. «Pricing», документация Anthropic, дата обращения: 2026-11-04.
  15. «Claude Platform release notes», Anthropic, дата обращения: 2026-11-04.
  16. «Define your agent», документация Anthropic, дата обращения: 2026-11-04.
  17. «Start a session», документация Anthropic, дата обращения: 2026-11-04.
  18. «Session event stream», документация Anthropic, дата обращения: 2026-11-04.
  19. «Glossary», документация Anthropic, дата обращения: 2026-11-04.
  20. «Agent SDK overview», документация Claude Code, дата обращения: 2026-11-04.
  21. «Hosting the Agent SDK», документация Claude Code, дата обращения: 2026-11-04.
  22. «Routines», документация Claude Code, дата обращения: 2026-11-04.
  23. «Schedule recurring tasks in Claude Cowork», Справочный центр Claude, дата обращения: 2026-11-04.
  24. «Does Anthropic crawl data from the web», Справочный центр Claude, дата обращения: 2026-11-04.
  25. «New in Claude Managed Agents: run agents on a schedule», блог Anthropic, дата обращения: 2026-11-04.
  26. «Claude Managed Agents: get to production 10x faster», блог Anthropic, дата обращения: 2026-11-04.
  27. «MCP Transports», спецификация Model Context Protocol, дата обращения: 2026-11-04.
  28. «MCP Tools», спецификация Model Context Protocol, дата обращения: 2026-11-04.
  29. «Place Details (New)», Google for Developers, дата обращения: 2026-11-04.
  30. «Work with review data», документация Google Business Profile, дата обращения: 2026-11-04.
  31. «Read and reply to reviews», справка Google Business Profile, дата обращения: 2026-11-04.
  32. «Business Reviews», документация Yelp Fusion, дата обращения: 2026-11-04.
  33. «How is the order of reviews determined?», поддержка Yelp, дата обращения: 2026-11-04.
  34. «yelp.com/robots.txt», Yelp, дата обращения: 2026-11-04.
  35. «Location Reviews», документация Tripadvisor Content API, дата обращения: 2026-11-04.
  36. «tripadvisor.com/robots.txt», Tripadvisor, дата обращения: 2026-11-04.
  37. «crontab», The Open Group Base Specifications Issue 8, дата обращения: 2026-11-04.
  38. «Time Zones», IANA, дата обращения: 2026-11-04.
  39. «Standard Webhooks», Standard Webhooks, дата обращения: 2026-11-04.
  40. «FTC final rule banning fake reviews», Федеральная торговая комиссия США (FTC), опубликовано 2024-08-14, дата обращения: 2026-11-04.
  41. «What is the point of Managed Agents?», Reddit r/ClaudeAI, дата обращения: 2026-11-04.
  42. Каталог API EveryInfra, EveryInfra, дата обращения: 2026-11-04, 00:13 по сингапурскому времени.

Справка BL-79