Claude Artifacts MCP: живой дашборд по конкурентам, который обновляется у каждого, кто его открывает
Опубликованные артефакты Claude вызывают MCP-коннекторы через аккаунт каждого зрителя. Мы проверили 9 брендов в TikTok, YouTube и Instagram и посчитали стоимость каждого открытия.

В июле 2026 года у опубликованных артефактов Claude появилась новая возможность. При каждом открытии страница может вызывать MCP-коннекторы через собственные подключения claude.ai того, кто её просматривает («Claude Code week 29 digest»). Это хорошо подходит для дашборда по конкурентам, который показывает свежие данные каждому, кто его открыл. 2026-11-05 с 00:18 до 01:05 по сингапурскому времени мы собрали последние публикации 9 брендов через удалённый MCP-сервер EveryInfra. Мы сделали 39 вызовов за данными: 38 из них оплачены, за 1 оформлен возврат средств, итого $0,021128.
Данные для дашборда дают три бренда: GoPro, Insta360 и DJI. Остальные шесть (Zara, Bershka, Mango, Garmin, Whoop и Oura) мы прогнали во втором раунде, чтобы показать больше типов аккаунтов. На них основаны данные о задержках и раздел о ловушках в данных.
Всё, что касается Claude, в этой статье представляет собой пример конфигурации. Мы написали код страницы дашборда и прогнали через него реальные ответы на своей машине. В claude.ai мы его не публиковали.
Самый полезный вывод касается аннотации нашего собственного инструмента. Инструмент данных EveryInfra everyinfra_call_api сейчас объявляет readOnlyHint: false и destructiveHint: true. Это текущая аннотация нашего инструмента, а не правило платформы Claude для инструментов данных.
Практическое следствие такое. Среда выполнения страниц Claude не кеширует результаты этого инструмента. Страница также не может вызывать его через метод watch с автообновлением. Поэтому страница должна вести собственный кеш.
Значит, за каждое открытие страницы без собственного кеша приходится платить. Если 10 человек открывают её 3 раза в день, это 900 открытий, 8 100 оплаченных вызовов и $4.50 в месяц. Если хранить результаты в общем хранилище артефакта и обновлять их раз в 6 часов, то же использование обойдётся в $0.60 в месяц.
Сумма небольшая. На самом деле важнее время ожидания и лимит запросов в минуту. Наш самый медленный синхронный вызов занял 69 секунд. А если 10 человек откроют страницу перед стендапом, на один общий ключ за минуту придётся 90 вызовов.

Что значит Claude Artifacts MCP: страница получает данные при открытии
Артефакт — это то, что создаёт Claude и что можно показать другим людям: документы, презентации, дизайны, дашборды и небольшие инструменты. В Справочном центре сказано, что артефактом можно поделиться, хранить в нём данные и подключать его к своим приложениям («What are artifacts?», дата обращения: 2026-11-05). Артефакты, созданные до 2026-09-16, теперь считаются «legacy artifacts». Эта статья посвящена части «connect your apps». При открытии страница вызывает инструмент на MCP-сервере через коннектор claude.ai и отображает результат.
Подробнее всего это описано в документации Claude Code («Artifacts», дата обращения: 2026-11-05). Опубликованная страница может вызывать MCP-коннекторы при каждом просмотре. Поэтому она показывает текущие данные, а не снимок из сессии, в которой её создали. Страница получает данные при загрузке. Она также может обновлять их через заданные интервалы или когда зритель использует элемент управления обновлением. Ответы кешируются в браузере зрителя, поэтому при повторном открытии страница сначала отрисовывает данные из кеша, а затем обновляет их.
Публикуя страницу, Claude объявляет, какие коннекторы она может вызывать. Ничего за пределами этого списка страница вызвать не может. Подходят только коннекторы из вашего аккаунта claude.ai. Локальные серверы из .mcp.json в Claude Code могут поставлять данные, пока Claude создаёт страницу. Опубликованная страница вызвать их не может.
В Claude Code эта функция вышла на неделе с 13 по 17 июля 2026 года (с v2.1.207 по v2.1.212). В дайджесте сказано, что страница может вызывать коннекторы «each time someone views it», и каждый вызов идёт через собственные подключения того, кто её просматривает («week 29 digest»). Артефакты внутри чатов claude.ai получили MCP и постоянное хранилище раньше, 2025-10-21 («Turn ideas into interactive AI-powered apps»). В записи примечаний к выпуску от 2026-09-16 сказано, что дизайны, презентации и документы теперь работают в любом диалоге («release notes»).
| Факт | Что говорит источник | Источник и дата обращения |
|---|---|---|
| Тарифы, на которых артефакты могут вызывать коннекторы | Pro, Max, Ultra, Team, Enterprise, в веб-версии и десктопном приложении | support.claude.com 17153992, 2026-11-05 |
| Минимальная версия Claude Code для публикации таких страниц | v2.1.209 | code.claude.com/docs/en/artifacts, 2026-11-05 |
| Чьё подключение использует зритель | Свои коннекторы; страница никогда не видит учётные данные | code.claude.com/docs/en/artifacts, 2026-11-05 |
| Первый вызов | Каждый зритель даёт согласие перед первым вызовом коннектора | Та же страница |
| Инструменты, требующие подтверждения каждого действия | Недоступны в артефактах | support.claude.com 17153992, 2026-11-05 |
| Хранилище страницы | До 20 МБ на артефакт; только текст; личное и общее хранилище | support.claude.com 17153992, 2026-11-05 |
| Публичные ссылки | Справочный центр: для артефактов, подключённых к приложениям, нет варианта «Anyone with the link». Документация Claude Code: публичный доступ возможен, но зрители без входа и вне организации не видят динамических разделов | support.claude.com 9547008 и code.claude.com, 2026-11-05 |
| Переключатель для организации | «Enable artifact connectors» в Organization settings | code.claude.com и support.claude.com 16994751, 2026-11-05 |
Кому это доступно: тарифы, приложения и переключатели администратора
В разделе Справочного центра «Connect your apps to an artifact» перечислены тарифы Pro, Max, Ultra, Team и Enterprise. В качестве приложений указаны веб-версия и десктопное приложение Claude (support 17153992). На той же странице сказано, что для артефактов должна быть включена настройка «Cloud code execution and file creation». Тарифа Free в списке нет.
Пользовательские коннекторы доступны на всех тарифах, на Free можно добавить только один («Get started with custom connectors using remote MCP»). Но в аккаунте Free нельзя создать артефакт, который вызывает коннекторы. Поэтому для этого дашборда нужен хотя бы один платный тариф.
Цены взяты со страницы тарифов Claude по состоянию на 2026-11-05 (claude.com/pricing). Pro стоит $17 в месяц при годовой оплате или $20 при помесячной. Max стоит от $100. Ultra стоит $200.
Стандартное место в Team стоит $20 в месяц при годовой оплате или $25 при помесячной, а премиальное — $100 или $125 соответственно. Enterprise стоит $20 за место плюс использование по тарифам API. Для команды из 10 человек 10 стандартных мест Team при помесячной оплате обходятся в $250 в месяц. На фоне этой суммы стоимость данных, описанная ниже, совсем мала.
В Team и Enterprise есть два дополнительных переключателя. Первый включает или выключает артефакты для организации. Второй управляет вызовами коннекторов из артефактов. Согласно документации Claude Code, он находится в Organization settings > Capabilities, в пункте «Enable artifact connectors» («Artifacts»).
Этот же переключатель действует и на страницы, созданные в чатах claude.ai. В руководстве для администраторов есть деталь, которую легко упустить. Администраторы не могут ограничить, к каким приложениям может обращаться артефакт. Использование засчитывается в индивидуальные лимиты каждого пользователя («Artifacts admin guide for Team and Enterprise plans»).
Чьё подключение используется после публикации
Это самое важное правило, и источник описывает его однозначно. Когда опубликованная страница вызывает коннектор, вызов идёт от аккаунта человека, который смотрит страницу, а не от аккаунта автора публикации. Два человека, открывшие один и тот же дашборд, могут видеть разные данные, потому что их аккаунтам доступно разное. Страница никогда не видит ничьих учётных данных. Вызовы от имени страницы выполняет claude.ai.
Каждый зритель даёт согласие перед первым вызовом коннектора со страницы. Зритель, который отказался предоставить доступ или не подключил коннектор, всё равно видит страницу, но её динамические разделы не работают («Artifacts», раздел «How connector calls work for viewers», дата обращения: 2026-11-05). Справочный центр говорит то же самое: каждый сам подключает свои приложения даже в артефакте с общим доступом или опубликованном артефакте (support 17153992).

Для этого дашборда «собственное подключение зрителя» может означать два разных варианта, и в них расходы и лимит запросов ложатся на разных людей. В первом варианте коннектор использует вход через OAuth. Каждый человек входит в свой аккаунт EveryInfra, когда добавляет коннектор. Тогда плата за каждый вызов со страницы списывается с баланса этого человека, а вызов учитывается в его лимите запросов в минуту.
Во втором варианте коннектор использует один общий API-ключ. Пользователь с ролью Owner в тарифе Team или Enterprise добавляет коннектор и указывает ключ в заголовке запроса. Справочный центр поясняет, что тогда все пользователи коннектора получают доступ с правами этого ключа (support 11175166). Формально каждый по-прежнему использует «своё подключение». На деле все расходы и все вызовы приходятся на один аккаунт EveryInfra.
Две группы пользователей не видят динамических данных. Правила описаны в статье Справочного центра о совместном доступе («Share artifacts», дата обращения: 2026-11-05). Доступ по ссылке «Anyone with the link» недоступен для артефактов, которые подключаются к приложениям или используют Claude. У пользователей, приглашённых извне организации, части страницы, использующие Claude или коннекторы, не работают. На один артефакт можно пригласить до 50 внешних участников.
В документации Claude Code сказано, что страницей, использующей коннекторы, можно поделиться публично. Но вызовы коннекторов не выполняются для зрителей, которые не вошли в claude.ai или не состоят в вашей организации. Насчёт публичных ссылок источники расходятся, но результат у них одинаковый: внешние пользователи не видят динамических данных. В этой статье мы следуем более строгому правилу Справочного центра и делимся дашбордом только внутри организации.
Об этом спрашивают в нескольких недавних тредах на Reddit. Один пользователь собрал с Claude Code дашборд для рекрутинга на основе базы данных и спросил, как показать его менеджерам без лицензии Claude. В ответе объясняется, что для доступа внутри организации пользователь должен войти в аккаунт и состоять в организации, а по публичной ссылке вызовы коннекторов не выполняются (тред в r/ClaudeCode). В другом треде дашборд оказался пустым у всех коллег (тред в r/ClaudeAI).
Причина заключалась в том же правиле. Каждый человек должен подключить у себя все коннекторы, которые использует страница, и одобрить доступ к ним. Поэтому добавьте в каждый динамический раздел короткую подсказку с названием коннектора, который нужно подключить. Документация Claude Code советует то же самое.
Лимиты вызовов: что говорят источники и о чём молчат
2026-11-05 мы изучили страницы о коннекторах артефактов на claude.com, support.claude.com, code.claude.com и docs.claude.com. Ни на одной из них не указан числовой лимит на вызовы коннектора из артефактов, например «число вызовов в минуту» или «число вызовов в день». В руководстве администратора сказано лишь, что использование артефактов учитывается в лимитах каждого пользователя. В определениях типов среды выполнения, которые входят в нашу локальную установку Claude Code, есть код ошибки rate_limited с примечанием «reserved, never returned today».
Честный ответ таков: Claude не публикует лимит на число вызовов для этих страниц. Помешать работе могут описанные ниже ограничения и лимит запросов самого сервера коннектора.
| Ограничение | Значение | Источник | Влияние на дашборд |
|---|---|---|---|
| Размер результата инструмента в claude.ai и десктопном приложении | Около 150 000 символов | claude.com/docs/connectors/building, 2026-11-05 | 20 публикаций в TikTok занимают около 50 000 байт |
| Тайм-аут вызова инструмента в claude.ai и десктопном приложении | 240 секунд | Та же страница | Наш самый медленный синхронный вызов занял 69 секунд |
| Лимит времени на ответ в среде выполнения страницы | Около 130 секунд | Определения типов среды выполнения версии 0.2.96 из нашей локальной установки Claude Code 2.1.309 (не общедоступная документация; содержимое может измениться) | Для медленных платформ нужны асинхронные вызовы и опрос |
| Хранилище артефакта | По 20 МБ на артефакт, только текст | support.claude.com 17153992 | Храните только отобранные поля |
| Приглашения внешних пользователей | До 50 на артефакт; динамические разделы недоступны приглашённым внешним пользователям | support.claude.com 9547008 | Делитесь внутри организации |
| Лимит запросов EveryInfra в минуту | По умолчанию 60 на аккаунт, суммарно по всем ключам | everyinfra.com/pricing, 2026-11-05 | Общий ключ даёт команде 60 запросов в минуту |
| Лимит запросов EveryInfra для отдельного ключа | У ключа может быть более низкий лимит; у нашего тестового ключа было 10 в минуту | Ответ 429 в 00:19:51 по сингапурскому времени, 2026-11-05 | Выделите дашборду отдельный ключ |
Третья строка требует короткого пояснения. В Claude Code входит локальная копия определений типов среды выполнения артефактов. Мы изучили версию 0.2.96, которая поставлялась с Claude Code 2.1.309. Согласно ей, страница получает функцию вызова из claude.use("mcp") и ждёт ответа около 130 секунд.
Этот файл не является публичной веб-страницей и может измениться. Мы рассматриваем его только как описание текущего поведения. Если то же правило описано в публичной документации, приоритет у документации.
Какие данные нужны дашборду: три платформы, три возможности
Мы сделали дашборд компактным. Для каждого бренда три строки: TikTok, YouTube и Instagram. В каждой строке показаны число публикаций в день, медиана просмотров или медиана лайков, коэффициент вовлечённости в TikTok, число подписчиков и возраст самой свежей публикации. Под таблицей страница строит график просмотров каждой публикации в TikTok за последние 30 дней. Для получения данных используются три возможности EveryInfra. Цены указаны по значениям price_usd из каталога, которые мы получили в 00:15 по сингапурскому времени 2026-11-05 (каталог).
| Платформа | Возможность | Отправленные параметры | Цена за вызов | Синхронно или асинхронно | Поля, которые использует страница |
|---|---|---|---|---|---|
| TikTok | tiktok/user_videos | username, limit 20 (максимум 50) | $0.000556 | Синхронно | Время публикации, просмотры, лайки, комментарии, репосты, признак закрепления, подписчики, признак верификации |
| YouTube | youtube/user_posts | url канала, limit 20 (максимум 50) | $0.000556 | Синхронно | Название, относительное время публикации, просмотры, подписчики |
instagram/user_posts | username, limit 20 (по умолчанию 30, максимум 200) | $0.000556 | Асинхронно: списание при отправке, опрос бесплатный | Время публикации, тип медиа, лайки, комментарии |
Все три возможности оплачиваются за вызов, а не за запись. Одна запись и 50 записей стоят одинаково, а за пустой результат средства возвращаются. Страницы платформ: API данных TikTok, API данных YouTube и API данных Instagram.
Почему бы не использовать API самих платформ? Квота YouTube Data API по умолчанию составляет 10 000 единиц в день (YouTube quota costs, страница обновлена 2026-11-03). Он позволяет получать данные других каналов, но вам понадобится собственный проект Google Cloud. Instagram Business Discovery позволяет получать число подписчиков, лайков и комментариев других профессиональных аккаунтов. Для этого вам понадобятся собственный профессиональный аккаунт и токен доступа (Meta developer docs).
TikTok /v2/video/list/ возвращает только публичные видео пользователя, который предоставил доступ, не более 20 на страницу (TikTok developer docs). Он не позволяет получать данные о конкуренте. В итоге для страницы, которую открывает каждый коллега, нужно поддерживать три набора аккаунтов и токенов. Один коннектор поддерживать проще.
Как считается каждая ячейка: частота публикаций, медианы и вовлечённость
Страница вычисляет все числа при отрисовке. В кеше хранятся только исходные поля, поэтому формулу можно изменить без нового запроса данных. «Публикаций в день» — это число незакреплённых публикаций, делённое на количество дней от самой старой из них до момента получения данных. YouTube отдаёт относительное время публикации, например «3w ago» или «2mo ago». После перевода в дни точность составляет неделю или месяц. Поэтому ячейка YouTube показывает только порядок величины.
Мы не используем показатель «публикаций за последние 30 дней». Тест 2 ниже показывает почему: у активного аккаунта 20 записей не покрывают 30 дней.
Для просмотров и лайков страница использует медианы, а не средние значения. Просмотры публикаций в соцсетях распределены очень неравномерно. Среди 20 последних видео GoPro на YouTube у самого популярного было 4,4 млн просмотров, а у наименее популярного из обычных — 21 000. Один-два хита сильно завышают среднее, и оно скачет изо дня в день. Коэффициент вовлечённости в TikTok для каждой публикации рассчитывается как сумма лайков, комментариев и репостов, делённая на число просмотров. В ячейке показана медиана этих коэффициентов.
Возможность для YouTube не возвращает лайки, а возможность для Instagram не возвращает просмотры. Эти ячейки остаются пустыми, и страница не подставляет в них другие числа. Для ячейки «Подписчики» используется число подписчиков автора из первой записи. Возможность для Instagram его не возвращает, поэтому эта ячейка тоже пустая.
Пустые ячейки оставлены намеренно. У страницы, которую каждый день смотрят 10 человек, есть один большой риск: смысл ячейки может измениться, и никто этого не заметит. Допустим, однажды возможность для Instagram начнёт возвращать просмотры.
Ячейка вовлечённости из пустой станет заполненной, и все решат, что конкурент сменил стратегию. Поэтому под заголовком каждого столбца страница указывает поле и платформы. В ячейке без данных стоит прочерк.
Шаг 1: добавьте EveryInfra как коннектор Claude (пример настройки)
У EveryInfra два удалённых MCP-адреса для двух моделей оплаты. Шаги ниже — пример настройки. Для этого теста мы не входили в веб-версию Claude. Названия элементов интерфейса взяты из Справочного центра Claude по состоянию на 2026-11-05, поэтому сверьте их с тем, что видите у себя.
Первый вариант: у каждого свой аккаунт EveryInfra. Используйте адрес https://api.everyinfra.com/mcp/all. Запрос без учётных данных получает ответ 401 и заголовок WWW-Authenticate. Заголовок указывает на документ метаданных, в поле authorization_servers которого указан сервис входа EveryInfra.
Мы проверили это в 00:12 по сингапурскому времени 2026-11-05 (документ метаданных). Это стандартная схема MCP. Сервер публикует метаданные защищённого ресурса по RFC 9728, а клиент по ним находит сервер авторизации (MCP authorization, 2025-11-25, RFC 9728).
Согласно документации по коннекторам Claude, его OAuth-клиент поддерживает спецификации авторизации 2025-03-26, 2025-06-18 и 2025-11-25. Адрес обратного вызова — https://claude.ai/api/mcp/auth_callback (Build an MCP server for Claude). Этот адрес отдаёт список из 24 инструментов.
Второй вариант: один ключ на всю команду. Используйте адрес https://api.everyinfra.com/mcp. При добавлении коннектора укажите Authorization: Bearer <EVERYINFRA_API_KEY> в разделе «Request headers». Этот адрес отдаёт список из 12 инструментов и принимает только ключ. Здесь есть одно ограничение.
В документации по коннекторам Claude статические учётные данные в заголовках отмечены как бета-функция для некоторых организаций (Authentication for connectors, дата обращения 2026-11-05). Владельцы в остальных организациях вообще не видят раздел «Request headers». Там же сказано, что этот ключ является учётными данными организации, а не отдельного человека. Запросы всех участников идут с одним и тем же ключом.
| OAuth через `/mcp/all` | Общий ключ через `/mcp` | |
|---|---|---|
| Кто платит | Собственный аккаунт EveryInfra каждого, кто открывает страницу | Единственный аккаунт, которому принадлежит ключ |
| Лимит запросов в минуту | 60 на аккаунт каждого пользователя | 60 на всю команду или более низкий лимит самого ключа |
| Доступно инструментов | 24 | 12 |
| Кто может настроить | Любой пользователь платного тарифа Claude | Пользователь с ролью Owner на тарифе Team или Enterprise, и только если включено бета-поле «Request headers» |
| Главный риск | Каждому нужен аккаунт EveryInfra и средства на балансе | Вызовы всех участников идут с одним и тем же ключом |
Configuration example (Claude web or desktop, Pro or Max account)
1. Customize > Connectors > + Add > Add custom connector
2. Name: EveryInfra <- the page code must use this exact server name
3. URL: https://api.everyinfra.com/mcp/all
4. Authentication: Sign in when needed <- each person signs in to their own EveryInfra account
5. Add. In the connector's tool permissions, set everyinfra_call_api to Always allow
(the Help Center says tools that need approval for each action do not work in artifacts)
Configuration example (Team or Enterprise, one Owner adds it, one shared key)
1. Organization settings > Connectors > Add custom connector
2. URL: https://api.everyinfra.com/mcp
3. Request headers: Authorization: Bearer <EVERYINFRA_API_KEY>
(beta, only some organizations see this field; make a separate key with its own per-minute limit)
4. Organization settings > Capabilities > turn on Enable artifact connectors
5. Each member clicks Connect under Customize > ConnectorsБольшинство проблем начинается на шаге 5. Claude делит инструменты каждого коннектора на две группы: «read-only» и «write/delete». Для каждой группы можно выбрать Always allow, Needs approval или Blocked (Use connectors to extend Claude's capabilities). В объявлении инструмента everyinfra_call_api указаны readOnlyHint: false, destructiveHint: true и openWorldHint: true. Мы прочитали сырой ответ tools/list в 00:12 по сингапурскому времени 2026-11-05. Это текущая аннотация нашего инструмента. Согласно спецификации MCP, эти поля объявляет сам инструмент как подсказки о собственном поведении (MCP schema, 2026-07-28).
К какой группе относится инструмент, видно на вашей собственной странице разрешений. В рамках этого примера настройки мы не открывали эту страницу в claude.ai. Порядок действий такой. После добавления коннектора откройте разрешения его инструментов. Найдите группу, в которой находится everyinfra_call_api, и установите для неё Always allow.
Согласно Справочному центру, инструменты коннекторов, которые требуют подтверждения каждого действия, недоступны артефактам. Поэтому, если оставить для инструмента «Needs approval», дашборд останется пустым. Инструмент опроса everyinfra_get_job помечен как read-only, поэтому его это не касается.
Шаг 2: каркас страницы-артефакта Claude Code с MCP
Ядро страницы выполняет три задачи. Оно объявляет, какие инструменты коннектора вызывает страница. Оно сначала проверяет общий кеш. Оно платит за вызов, только когда кеш устарел.
Ниже приведена часть нашего дашборда, которая отвечает за загрузку данных. Полная страница занимает около 110 строк, код таблицы и графика мы опустили. claude.use("mcp") и claude.use("db") — две точки входа из среды выполнения страницы. Каждая из них возвращает null, если в текущем представлении она недоступна, поэтому страница должна отрисовываться и без них.
// Capability declaration that Claude submits at publish time.
// The page cannot call tools outside it.
// capabilities: { mcp: { servers: [{ server: "EveryInfra",
// tools: ["everyinfra_call_api", "everyinfra_get_job"] }] },
// db: {} }
const SERVER = "EveryInfra", CALL = "everyinfra_call_api", JOB = "everyinfra_get_job";
const TTL_MS = 6 * 3600 * 1000; // shared cache: 6 hours
const req = (b, p) => ({
tiktok: { platform: "tiktok", action: "user_videos", params: { username: b.tiktok, limit: 50 } },
youtube: { platform: "youtube", action: "user_posts", params: { url: b.youtube, limit: 50 } },
instagram: { platform: "instagram", action: "user_posts", params: { username: b.instagram, limit: 50 } },
}[p]);
const KEEP = ["id", "post_id", "posted_at", "view_count", "like_count", "comment_count",
"share_count", "is_pinned", "author_follower_count", "author_is_verified"];
const trim = (rows) => rows.map((r) => Object.fromEntries(KEEP.filter((k) => k in r).map((k) => [k, r[k]])));
let mcp = null, db = null;
async function fetchRows(b, p, force) {
const key = `cache/${b.name}-${p}`.toLowerCase();
if (db && !force) { // 1. read the shared cache first
const snap = await db.doc(key).get().catch(() => null);
if (snap?.exists && Date.now() - snap.data().fetchedAt < TTL_MS) return snap.data();
}
if (!mcp) throw { code: "no_mcp" };
let out = (await mcp.callTool(SERVER, CALL, req(b, p))).payload; // 2. one paid call
for (let i = 0; out.job_id && out.status !== "succeeded" && i < 20; i++) {
if (["failed", "cancelled"].includes(out.status)) throw { code: "job_" + out.status };
await new Promise((r) => setTimeout(r, 15000)); // Instagram is async; polling is free
out = (await mcp.callTool(SERVER, JOB, { job_id: out.job_id })).payload;
}
const doc = { fetchedAt: Date.now(), rows: trim(out.results || []) }; // 3. keep only the fields we use
if (db) db.doc(key).set(doc).catch(() => {}); // view-only members cannot write; they still see data
return doc;
}
(async () => { [mcp, db] = await Promise.all([claude.use("mcp"), claude.use("db")]); load(false); })();Несколько частей этого кода мы настроили по реальным ответам. Во-первых, payload — это первый текстовый блок результата инструмента, который среда выполнения разбирает как JSON. EveryInfra возвращает JSON-текст, поэтому страница читает payload.results напрямую.
Во-вторых, в каждом ответе есть также блоки billing и quota. В них указаны сумма списания за этот вызов и баланс аккаунта. При общем ключе код страницы может прочитать баланс аккаунта организации. Поэтому trim оставляет только десять полей, нужных странице. Баланс не записывается в общее хранилище и не показывается.
В-третьих, после неудачного вызова страница сама не выполняет повторную попытку. Согласно локальным определениям типов, если инструмент не помечен как read-only, то при тайм-ауте или потере соединения результат остаётся неизвестным. Новый вызов можно сделать только после нового действия пользователя. За ответ 429 EveryInfra не списывает средства, поэтому рядом с этой ошибкой страница может показать кнопку «Повторить».
Среда выполнения страницы возвращает коды ошибок, и для каждого кода нужно своё сообщение. В таблице ниже коды из определений типов среды выполнения сопоставлены с тем, что показывает наша страница.
| Код ошибки | Что это означает | Что показывает страница |
|---|---|---|
server_not_connected | У пользователя нет коннектора с таким названием | «Добавьте коннектор EveryInfra» |
approval_required | Вызов требует подтверждения пользователя | Кнопка, которая один раз выполняет тот же вызов |
needs_reauth | Срок действия авторизации в коннекторе истёк | «Переподключите EveryInfra в Settings > Connectors» |
tool_error | Инструмент выполнил запрос, но сообщил об ошибке, например с кодом 429 | Текст ошибки и кнопка «Повторить» |
server_unavailable | Ответ не пришёл вовремя или произошла ошибка сервера | «Недоступно», без автоматической повторной попытки для этого платного инструмента |

Этот скриншот сделан не в claude.ai. Для Claude в статье приведён только пример настройки: этот дашборд мы не публиковали в claude.ai. На нашем компьютере небольшая заглушка claude.use() передавала сохранённые реальные ответы тому же коду страницы. Скриншот показывает, что код страницы и структура ответа совместимы. Он также показывает, что числа верны.
Каждая ячейка, рассчитанная в JavaScript, совпадает с результатом отдельного скрипта на Python. На скриншоте не видно запроса разрешений в claude.ai, первого подтверждения и работы кеша. Их вы увидите только после публикации в своём аккаунте.
Один реальный цикл запроса и ответа: по одному вызову на каждую платформу
Сначала — исходный обмен запросом и ответом с TikTok. В 00:18:50 по сингапурскому времени 2026-11-05 мы отправили tools/call на https://api.everyinfra.com/mcp. Вызов инструмента everyinfra_call_api содержал имя пользователя GoPro в TikTok и параметр limit со значением 20. Через 22,22 секунды пришло 49 956 байт JSON.
Видео было 20. Одно из них — закреплённая реклама 2025 года. Остальные 19 шли от новых к старым; самое новое было опубликовано 2026-11-04, за 2,3 часа до получения данных. В каждой записи было 35 полей, а значение billing.charged_usd составляло 0.000556.

Вызов YouTube мы отправили в 00:19:16. Ответ пришёл через 11,66 секунды, объём — 13 047 байт. В нём было 20 видео с названиями, просмотрами и числом подписчиков канала (11,3 млн у GoPro). Данных о количестве лайков в ответе не было. Время публикации было относительным, например «4d ago», «3w ago» и «1mo ago». Количество просмотров было округлено: например, встречались значения 125 000 и 300 000.
Две из 20 записей выглядели странно. В поле времени публикации стояло «and NASA» или «and» с именем партнёра, а просмотров было 0. Это видео, которые GoPro опубликовала вместе с партнёром. Страница должна выделять такие записи и исключать их из медианы. Иначе они занижают медиану просмотров.
Instagram работает асинхронно. Мы отправили запрос по GoPro в 00:19:28. Через 8,48 секунды вернулся идентификатор задачи со status: running и подсказкой получить результат через everyinfra_get_job. Списание происходит при отправке, а опрос бесплатный.
В первом раунде мы начали получать результаты задач только после того, как отправили запросы по всем трём брендам. Через 23 секунды после отправки задача GoPro ещё выполнялась. Через 223 секунды она завершилась: 20 публикаций, 34 031 байт.
Задачу DJI мы опрашивали каждые 15 секунд. В 00:23:27 у неё был статус running, в 00:23:43 — finalizing, в 00:23:58 — succeeded, всего около 56 секунд. В ответе Instagram есть лайки и комментарии. Просмотров и числа подписчиков в нём нет. В примечаниях к полям в каталоге сказано то же самое: эта возможность не возвращает ни того, ни другого и отдаёт не более 48 публикаций.
Тест 1: сколько времени занимает каждый вызов
При одном открытии выполняется 9 вызовов. От времени каждого вызова зависит, как долго первый экран остаётся пустым. На графике ниже показаны все 36 вызовов из первого, второго и третьего раундов: по одной точке на вызов. Медианное время синхронного вызова TikTok составило 21,23 секунды, а вызова YouTube — 14,00 секунды. В обоих распределениях есть длинный хвост в диапазоне от 50 до 70 секунд.
Вызов YouTube для Insta360 занял 66,58 секунды. Вызов YouTube для Oura занял 69,16 секунды и вернул 0 записей, средства были возвращены автоматически. Отправка задач Instagram проходит быстро, медиана — 2,12 секунды. После этого результат готовится ещё от одной до нескольких минут.
| Вызов | Вызовы | Медиана (с) | Минимальное время (с) | Максимальное время (с) |
|---|---|---|---|---|
| TikTok, синхронно | 12 | 21.23 | 8.62 | 52.78 |
| YouTube, синхронно | 12 | 14.00 | 8.71 | 69.16 |
| Instagram, отправка | 12 | 2.12 | 1.90 | 12.19 |
| Instagram, завершение задачи (верхняя граница) | 12 | 143 | 47 | 510 |
Эти показатели требуют трёх изменений в устройстве страницы. Во-первых, страница должна отправлять 9 вызовов параллельно. При последовательной отправке в худшем случае первый экран заполнится только через пять-шесть минут. Даже при параллельной отправке самая медленная ячейка загружается дольше минуты. Поэтому каждой ячейке нужно собственное состояние загрузки.
Во-вторых, для Instagram нужно отправить задачу, получить её ID и опрашивать статус. Одного синхронного вызова недостаточно. Среда выполнения страницы ждёт ответа около 130 секунд, а приложения Claude прерывают вызов инструмента через 240 секунд. Во втором раунде самая медленная задача Instagram заняла 510 секунд от отправки до первого опроса, показавшего успешное завершение.
Отчасти дело было в том, что мы сами опрашивали слишком поздно. В третьем раунде мы опрашивали каждые 15 секунд, и все три задачи завершились за 47–59 секунд. В-третьих, кеш избавляет от всего этого ожидания. Чтение 9 ячеек из общего хранилища занимает миллисекунды.
Тест 2: какой период охватывают 20 записей
В первом и втором раундах использовался limit 20. Для аккаунтов с высокой частотой публикаций 20 записей недостаточно, чтобы охватить 30-дневный период. У брендов носимых устройств из этой статьи картина неоднородная. 20 видео WHOOP в TikTok охватили 37,1 дня, а 20 публикаций в Instagram — всего 14,3 дня. Oura публикует реже: 19 видео в TikTok охватили 83,9 дня, а 20 публикаций в Instagram — 27,0 дня. 20 видео Garmin на YouTube охватили период примерно в 60 дней, а 20 публикаций в Instagram — 40,1 дня.
Бренды камер публикуют чаще. 17 незакреплённых видео Insta360 в TikTok охватили всего 7,2 дня. Поэтому страница показывает публикации в день, а не публикации за 30 дней.
Лучшее решение — увеличить limit. Все три возможности оплачиваются за вызов. TikTok и YouTube позволяют получить до 50 записей, а Instagram — до 200. Вызов с большим числом записей стоит столько же. С 01:03 до 01:05 по сингапурскому времени мы сделали ещё 3 вызова с limit 50.
Данные Insta360 в TikTok охватывали 7,2 дня в выборке из 20 записей и 24,0 дня в выборке из 50. Для Mango в TikTok этот период увеличился с 14,1 до 56,1 дня. Данные GoPro на YouTube сначала охватывали около 150 дней, а затем — около 365. Каждый вызов по-прежнему стоил 0,000556 $.
Расплачиваться приходится размером. В каждой записи TikTok 35 полей. 20 записей занимают около 50 000 байт, а 50 записей заняли 137 072 байта. До лимита в 150 000 символов на один результат инструмента в приложениях Claude остаётся всего около 13 900 символов (вызов Insta360 вернул 136 062 символа).
Этот вывод из наших тестов мы хотим подчеркнуть особо. Не поднимайте limit до максимума без проверки. TikTok с 50 записями уже близок к лимиту. Для большего объёма нужна пагинация или асинхронный режим.
| Вызов (2026-11-05, по сингапурскому времени) | Дней в 20 записях | Дней в 50 записях | Возвращено символов | Запас до 150 000 | Секунд |
|---|---|---|---|---|---|
| Insta360, TikTok, 01:03:59 | 7.2 | 24.0 | 136,062 | 13,938 | 19.75 |
| Mango, TikTok, 01:04:27 | 14.1 | 56.1 | 121,794 | 28,206 | 30.70 |
| GoPro, YouTube, 01:05:06 | 150 | 365 | 31,212 | 118,788 | 11.52 |
Ниже приведены цифры второго раунда для трёх брендов носимых устройств. Самое свежее видео Oura в TikTok и самая свежая публикация в Instagram датированы 2026-11-02. Самая свежая публикация Garmin в Instagram датирована 2026-10-31.
| Бренд и платформа | Публикаций в день | Медиана просмотров | Медиана лайков | Уровень вовлечённости | Подписчики |
|---|---|---|---|---|---|
| Oura, TikTok | 0.23 | 20,700 | — | 1.09% | 161,600 |
| Oura, YouTube | — (0 записей, средства возвращены) | — | — | — | — |
| Oura, Instagram | 0.74 | — | 1,785 | — | — |
| WHOOP, TikTok | 0.54 | 17,250 | — | 2.82% | 415,900 |
| WHOOP, YouTube | 0.19 | 7,100 | — | — | 165,000 |
| WHOOP, Instagram | 1.40 | — | 3,412 | — | — |
| Garmin, TikTok | — (аккаунт-заглушка) | — | — | — | 21 |
| Garmin, YouTube | 0.33 | 22,500 | — | — | 368,000 |
| Garmin, Instagram | 0.50 | — | 7,228 | — | — |
Тест 3: динамика просмотров в TikTok
В нижней части дашборда показаны просмотры каждой публикации в TikTok за последние 30 дней. График ниже построен по реальным ответам второго раунда для брендов носимых устройств в логарифмическом масштабе. WHOOP публикует видео примерно раз в два дня. У большинства его роликов от 5 000 до 20 000 просмотров, а у самого популярного — 65 000.
Oura публикует реже: за этот период вышло 5 видео, набравших от 3 040 до 25 900 просмотров. Медианное число просмотров видео составило 20 700, а медианный уровень вовлечённости — 1,09 %. У WHOOP медианное число просмотров составило 17 250, а медианный уровень вовлечённости — 2,82 %.
Читайте этот график внимательно. Каждая точка — это общее число просмотров на момент загрузки, а не просмотры за фиксированный период. Вчерашнее видео и видео трёхнедельной давности сравнивать некорректно: новое всегда выглядит слабее. Чтобы понять, «кто был успешнее на этой неделе», сравнивайте просмотры за первые 48 часов после публикации. Для этого страница должна сохранять просмотры каждого видео, когда впервые его видит, и загружать данные повторно через 48 часов.
Общее хранилище это умеет, а встроенный кеш — нет. Общее хранилище может хранить историю, а кеш браузера хранит только последний результат.
Тест 4: насколько изменились данные за 41 минуту
Подходящий срок жизни кеша зависит от того, как быстро меняются данные. С 01:00 до 01:03 по сингапурскому времени мы повторили вызовы первого раунда для трёх брендов камер на всех трёх платформах. С первого раунда прошло около 41 минуты (0,7 часа). Мы сравнили просмотры или лайки у одних и тех же публикаций.
Между раундами ни в одной из 9 ячеек не появилось новых публикаций. Почти все изменения приходятся на публикации за последние один-два дня. В TikTok изменились 15 видео Insta360, но медианный рост составил всего 0,18 %. Наибольший рост показало видео от 2026-11-03: с 247 300 до 259 800 просмотров (+5,05 %).
Наибольший прирост у DJI был у видео от 2026-11-04 (+5,37 %). У GoPro показатели изменились только у 5 видео. Наибольший прирост был у видео от 2026-11-04: с 1 532 до 1 626 просмотров.
В Instagram изменилось больше публикаций (от 12 до 17 из 20), но медианный прирост составил около 0,1 %. Оба наибольших прироста пришлись на новые публикации от 2026-11-04. Число лайков у одной публикации Insta360 выросло с 742 до 916 (+23,4 %). Число лайков у одной публикации DJI выросло с 2 406 до 2 700 (+12,2 %). На YouTube на каждом канале изменилось не больше 1 из 20 видео. Число просмотров там округляется (например, до 125 000), поэтому небольшой прирост не виден.
| Бренд и платформа | Поле | Изменившиеся записи (из 20) | Медианное изменение | Наибольшее изменение |
|---|---|---|---|---|
| GoPro TikTok | Просмотры | 5 | 0.00% | 6.14% |
| GoPro YouTube | Просмотры | 1 | 0.00% | 0.26% |
| GoPro Instagram | Лайки | 16 | 0.06% | 0.46% |
| Insta360 TikTok | Просмотры | 15 | 0.18% | 5.05% |
| Insta360 YouTube | Просмотры | 0 | 0.00% | 0.00% |
| Insta360 Instagram | Лайки | 12 | 0.10% | 23.45% |
| DJI TikTok | Просмотры | 14 | 0.36% | 5.37% |
| DJI YouTube | Просмотры | 1 | 0.00% | 1.20% |
| DJI Instagram | Лайки | 17 | 0.10% | 12.22% |
Вывод однозначный. Для таких показателей, как число публикаций в день и медиана просмотров, при общем кеше со сроком жизни 6 часов данные почти не теряют актуальности. Показатели старых публикаций за 41 минуту изменились менее чем на 1 %. Меняются показатели публикаций за последние сутки.
Страница отслеживает, как быстро растут новые публикации? Тогда выделите публикации за последние 48 часов в отдельную строку. Для этой строки используйте более короткий срок жизни кеша, например 1 час. Остальные ячейки обновляйте раз в 6–24 часа.
Тест 5: размер ответов и общее хранилище
Каждому артефакту доступно 20 МБ хранилища, только для текста (support 17153992). Наши 9 сырых ответов за одно открытие в сумме занимают около 326 КБ. Если trim оставляет десять полей, объём снижается до 27,6 КБ, то есть до 8,5 % от исходного. Даже если хранить историю по одной копии каждые 6 часов, 120 копий за месяц займут всего 3,3 МБ.
Это с большим запасом укладывается в 20 МБ. Не храните полный сырой ответ. Первая причина — размер. Вторая причина — баланс аккаунта внутри ответа, ведь общее хранилище может читать любой участник.
Ловушки в данных: аккаунты-заглушки, партнёрские видео и пустые результаты
Из 27 ячеек с данными в этом тесте три нельзя было вывести на дашборд как есть. У каждой была своя причина, и страница должна распознавать их все.
| Сценарий | Реальный пример (2026-11-05, по сингапурскому времени) | Списание | Что делает страница |
|---|---|---|---|
| Имя пользователя принадлежит другому человеку | Garmin в TikTok: хендл, угаданный по названию бренда, вернул 1 запись неверифицированного аккаунта с 21 подписчиком | $0.000556 | Помечать «проверьте аккаунт», если подписчиков очень мало или author_is_verified равно false, и исключать такой аккаунт из сравнений |
| Записи партнёрских видео | У GoPro, Insta360 и DJI на YouTube было по 2–4 записи, где вместо времени публикации указаны «and» и имя партнёра, а число просмотров равно 0 | Обычное списание | Исключать записи с нераспознаваемым временем публикации из медианы и выводить их как «партнёрские публикации» |
| Пустой результат | Адрес YouTube-канала Oura вернул 0 записей через 69,16 секунды | Возврат средств, $0 | Показывать «по этому адресу публикаций не найдено» и просить пользователя проверить адрес канала |
| Закреплённые публикации | У 5 из 9 аккаунтов TikTok были закреплённые публикации, у Insta360 и DJI — по 3 | Обычное списание | Убирать закреплённые публикации перед расчётом частоты публикаций и медиан |
| Поминутный лимит запросов превышен | 4 ответа с кодом 429 в первом раунде, 3 из них в 00:19:51; в тексте ответа говорилось, что лимит самого API-ключа составлял 10 запросов в минуту | Без списания | Показывать число секунд из retry_after и кнопку «Повторить» |
Первую строку проще всего упустить. Имя пользователя бренда в TikTok не всегда совпадает с названием бренда. Хендл, который мы попробовали, принадлежит небольшому личному аккаунту. Вызов оплачивается как обычно, потому что API действительно вернул контент. Когда добавляете бренд впервые, попросите Claude в чате проверить аккаунт с помощью возможности для получения данных профиля, например tiktok/profile. Проверьте признак верификации и число подписчиков и только после этого добавляйте хендл на страницу.
Стоимость одного открытия: 10 человек, по 3 открытия в день
По указанной в каталоге цене на 2026-11-05 каждая из трёх возможностей стоит $0,000556 за вызов. На дашборде 3 бренда и по 3 платформы для каждого, поэтому одно открытие — это 9 вызовов за $0,005004. Инструмент опроса статуса задания Instagram everyinfra_get_job бесплатный. За пустые результаты средства возвращаются, а ответы с кодом 429 не оплачиваются.
| План | Загрузок данных в месяц | Оплачиваемых вызовов | Стоимость данных в месяц | Примечание |
|---|---|---|---|---|
| Без кеша | Все 900 открытий | 8,100 | $4.50 | 10 человек × 3 открытия × 30 дней × $0,005004 |
| Для каждого пользователя, 24 часа | По 1 в день на человека, 300 | 2,700 | $1.50 | Встроенный кеш так не умеет, потому что наш инструмент сейчас не помечен как доступный только для чтения; используйте персональное хранилище |
| Общий, 6 часов | 4 в день, 120 | 1,080 | $0.60 | Хранится в общем хранилище артефакта; данные загружает первый пользователь, открывший артефакт после истечения срока |
| Общий, 24 часа | 1 в день, 30 | 270 | $0.15 | Подходит для страницы, которую вы проверяете на еженедельной встрече |
| Для справки: 10 стандартных мест Team при помесячной оплате | — | — | $250 | claude.com/pricing, 2026-11-05 |
Все эти суммы невелики. Самый дорогой вариант стоит меньше $5 в месяц, тогда как 10 мест Team обходятся в $250. Но сначала учтите две детали. При OAuth за запрос данных платит первый, кто откроет страницу после истечения кэша. Получается, что коллега, который каждое утро приходит раньше всех, платит за всю команду.
Сумма мизерная, но об этом стоит написать на странице. С общим ключом все списания идут с одного аккаунта организации. Если баланс закончится, дашборд опустеет сразу у всей команды. Настройте для этого аккаунта оповещение о низком балансе в консоли EveryInfra.
Как кэшировать данные, чтобы не платить за каждое открытие
У среды выполнения страниц Claude есть собственный кэш вызовов. Для инструментов, объявленных только для чтения (readOnlyHint: true), она по умолчанию хранит результаты 5 минут, и этот срок можно увеличить до 7 дней. В документации по артефактам также сказано, что повторно открытая страница сначала отрисовывает ответы из кэша. Но определения типов среды выполнения в нашей локальной установке Claude Code 2.1.309 (версия 0.2.96, это не публичная документация) добавляют правило. Для инструмента, который объявляет readOnlyHint: false, параметры кэша игнорируются, и вызов никогда не кэшируется. Кроме того, страница не может использовать для такого инструмента метод автообновления watchTool.
Текущая аннотация everyinfra_call_api подпадает под это правило. Поэтому среда выполнения никогда не переиспользует результат за вас, и каждый вызов оплачивается. Решение простое: пусть страница ведёт собственный кэш. Наш способ описан ниже.
Мы рекомендуем использовать общее хранилище артефакта (возможность db). Храните для каждой ячейки сокращённый результат и время его получения. При открытии сначала читайте сохранённые данные, а заново запрашивайте их только через 6 часов. Это даёт три преимущества.
Расходы снижаются с $4.50 до $0.60 в месяц. Когда кэш свежий, первый экран отрисовывается за миллисекунды, а не за минуту. Кроме того, снижается поминутная нагрузка, как показывает следующий график.
По умолчанию записывать в общее хранилище могут участники с ролью Contributor и выше, а участники с правом только на просмотр могут лишь читать его. Поэтому такой участник, открыв устаревшую страницу, оплачивает один запрос и видит свежие данные. Но записать результат обратно он не может, и следующий человек снова запрашивает данные. Код должен корректно обрабатывать этот случай.
Поминутный лимит важен только при общем ключе. По умолчанию EveryInfra допускает 60 вызовов в минуту на аккаунт с учётом всех ключей (страница тарифов). Допустим, 10 человек открывают страницу без кэша в одну и ту же минуту перед стендапом. Это 90 вызовов на один аккаунт, и последние 30 получат ответ 429. Они не оплачиваются, но соответствующие ячейки останутся пустыми.
У тестового ключа из этой статьи был собственный лимит: 10 вызовов в минуту. В первом раунде он упёрся в этот лимит 4 раза, из них 3 раза в 00:19:51. В тексте ответа говорилось, что собственный лимит ключа исчерпан, и предлагалось повторить попытку через 9 секунд. Поэтому выделите дашборду отдельный ключ с поминутным лимитом ниже лимита аккаунта. Тогда дашборд никогда не израсходует вызовы, которые нужны другим программам на том же аккаунте.
У общего кэша есть свои издержки. Их хорошо разбирают пост на Reddit о дашборде службы поддержки в HaloPSA и комментарии к нему (тред в r/halopsa). Первая издержка связана с доступом. Закэшированные данные получены с правами доступа того, кто запросил их первым.
Последующие пользователи могут увидеть данные, к которым у них нет доступа. Публичные данные конкурентов из соцсетей одинаковы для всех, поэтому для нас это не проблема. Для внутренних данных это реальная проблема.
Вторая издержка связана с доверием. По правилам по умолчанию любой участник с ролью Contributor может изменять документы кэша в общем хранилище. Если кто-то запишет поддельные цифры, их увидят все. Чтобы этого избежать, разрешите запись по пути кэша только роли Editor. Цена такого решения в том, что обычные участники будут запрашивать данные при каждом открытии устаревшей страницы.
Последние изменения
2026-10-28 компания Anthropic добавила в Claude for Legal галерею готовых юридических артефактов. В публикации артефакты названы «интерактивными инструментами, такими как трекеры и дашборды», а коннекторы, по её словам, подтягивают источники, которыми команды уже пользуются («Introducing artifacts for legal work with Claude»). Harvey, один из партнёров запуска, выпустил пост в тот же день. Его артефакт Intake подключается к Harvey через MCP-сервер Harvey (блог Harvey). 2026-10-21 в примечаниях к выпуску в Справочном центре появились Claude Duet и другие обновления (примечания к выпуску). Согласно тем же примечаниям, 2026-10-15 шаблоны артефактов были включены по умолчанию на тарифах Enterprise.
2026-10-08 Claude Dashboards и Claude Motion вышли в бета-версии. Dashboards доступен на платных тарифах и подключается к платформам данных, таким как BigQuery и Snowflake. Он также работает с другими коннекторами, а на каждом графике видно, когда его данные обновлялись в последний раз (блог Claude, «Get started with Claude dashboards»). В материале The New Stack от того же дня цитируется представитель Anthropic.
По умолчанию запросы общего дашборда выполняются через собственные подключения каждого пользователя (The New Stack). Dashboards ориентирован на SQL-запросы к хранилищу данных. Для страницы, которая, как эта, вызывает API данных соцсетей, обычный артефакт с MCP-коннектором даёт более простой и прямой способ интеграции.
Со стороны Claude Code: в v2.1.209 исправили ошибку, из-за которой публикация принимала имена инструментов, которых коннектор не предоставляет. Начиная с v2.1.265, при публикации проверяются имена инструментов, объявленные страницей, и если ни одно не совпадает, публикация отклоняется (история изменений Claude Code, «Artifacts»). Самой новой версией, которую мы видели 2026-11-05, была v2.1.318.
Одна проблема, зарегистрированная на GitHub, всё ещё не решена. 2026-08-06 пользователь сообщил, что обновление из облачной сессии сбрасывает разрешения коннектора, а в приложении нет места, где их можно выдать заново (claude-ai-mcp #787). Пользователь Reddit столкнулся с той же ошибкой «not in this artifact's mcp_tools allowlist» (тред в r/ClaudeAI).
Частые вопросы об артефактах Claude
Могут ли артефакты Claude вызывать подключённые MCP-коннекторы?
Да. Источник: поисковая подсказка Google «claude code artifacts can now call mcp connectors». Опубликованный артефакт может вызывать инструменты MCP при каждом открытии через коннекторы claude.ai того, кто его открыл. Нужен тариф Pro, Max, Ultra, Team или Enterprise. Для публикации из Claude Code нужна версия v2.1.209 или новее. Учитываются только коннекторы claude.ai: опубликованная страница не может вызывать серверы из локального .mcp.json («Artifacts»).
Есть ли лимит на вызовы MCP из артефактов Claude?
Источник: поисковая подсказка Google «claude artifacts mcp limits». На 2026-11-05 в публичной документации Claude не указан лимит на вызовы коннекторов из артефактов. Там сказано лишь, что использование засчитывается в лимиты каждого пользователя. Задокументированы такие ограничения: около 150 000 символов на результат и 240 секунд на вызов в claude.ai и десктопном приложении («Build an MCP server for Claude»). Кроме того, действует собственный лимит запросов сервера коннектора. По умолчанию EveryInfra допускает 60 вызовов в минуту на аккаунт.
Могут ли люди без аккаунта Claude видеть актуальные данные?
Нет. Источник: тред в r/ClaudeCode, где спрашивают, как показать дашборд с базой данных руководителям без лицензии Claude. У внешних пользователей и у тех, кто открывает публичную ссылку без входа в аккаунт, части с коннекторами не работают. В Справочном центре также сказано, что для артефактов, подключённых к приложениям, недоступна настройка «Anyone with the link» («Share artifacts»). Для внешних читателей экспортируйте статичный снимок или сделайте небольшую внутреннюю веб-страницу с собственной авторизацией.
Почему мой общий дашборд пуст у коллег?
Источник: тред в r/ClaudeAI, где дашборд был пуст у всей команды. Коннекторы привязаны к аккаунту. Каждый пользователь должен подключить все коннекторы, которые использует страница, и одобрить первый вызов. На тарифах Team и Enterprise проверьте, что включена настройка «Enable artifact connectors». Также убедитесь, что в разрешениях коннектора для инструмента не выбрано «Needs approval». Если страница вызывает имена инструментов, которых коннектор не предоставляет, она будет пустой у всех («Artifacts», раздел об устранении неполадок).
Что означает «not in this artifact's allowlist» после повторной публикации?
Источник: тред в r/ClaudeAI и issue 787 в репозитории claude-ai-mcp на GitHub. Какие инструменты может вызывать страница, определяет объявление при публикации, а не код страницы. Обновление из облачной сессии может сбросить это объявление. В обсуждениях помогло только одно: заново опубликовать страницу из локальной сессии с полными именами коннектора и инструментов.
Может ли общий кэш раскрыть пользователям недоступные им данные или позволить кому-то изменить их?
Источник: комментарии к посту в r/halopsa о дашборде службы поддержки. Да, оба риска реальны. Закэшированные данные получены с правами доступа того, кто запросил их первым. По правилам по умолчанию участники с ролью Contributor могут записывать документы кэша.
Для публичных данных конкурентов из соцсетей права доступа ни на что не влияют. Чтобы запретить правки, разрешите запись по пути кэша только роли Editor. Тогда обычные участники будут запрашивать данные при каждом открытии устаревшей страницы.
Нужно ли доплачивать за артефакты Claude?
Источник: поисковая подсказка Google «do claude artifacts cost money». Артефакты входят в платные тарифы и отдельно не оплачиваются, а использование засчитывается в лимиты каждого пользователя. Вызовы API данных оплачиваются отдельно. В примере из этой статьи одно открытие стоит $0.005004. Для 10 человек, открывающих страницу 3 раза в день, без кэша выходит $4.50 в месяц, а с общим кэшем на 6 часов — $0.60.
С чего начать
- Зарегистрируйтесь в EveryInfra и пополните баланс. Следуйте разделу Быстрый старт, чтобы получить ключ или подготовить вход через OAuth. Руководства по удалённому MCP: MCP-сервер и настройка удалённого MCP.
- Добавьте коннектор в Claude, как в примере конфигурации выше. Назовите его EveryInfra и выберите для
everyinfra_call_apiзначение «Always allow». - В чате Claude вызовите коннектор по одному разу для каждого бренда. Проверьте имена пользователей, адреса каналов и возвращаемые поля.
- Попросите Claude собрать страницу по каркасу из этой статьи. Объявите возможности
mcpиdb, опубликуйте страницу и поделитесь ею только внутри организации. - Каждый коллега подключает коннектор и одобряет первый вызов. Укажите на странице возраст кэша и напишите, кто платит за запрос данных после его истечения.
Читайте также
- Субагенты Claude Code: субагенты на Haiku параллельно собирают аккаунты брендов в TikTok: те же данные TikTok, которые субагенты в Claude Code собирают параллельно.
- Спецификация MCP 2026 и готовность к продакшену: объявления инструментов, авторизация и удалённый MCP в продакшене.
В блоге EveryInfra есть ещё две статьи об анализе конкурентов. Статья Один SKILL.md для четырёх ИИ-инструментов: анализ отзывов о конкурентах упаковывает анализ отзывов в Agent Skill. Вы запускаете его один раз в инструменте вроде Claude Code или Codex и получаете статичный отчёт. В статье Трекер соцсетей конкурентов в ChatGPT Spaces используется общая страница в ChatGPT Space. Эта страница сама не обновляется. Еженедельная задача по расписанию записывает в неё новые цифры, поэтому пользователи всегда видят данные последнего запуска.
Эта статья отличается в двух отношениях: когда запрашиваются данные и кто за них платит. Артефакт Claude запрашивает данные в момент, когда человек открывает страницу, через коннекторы этого человека. Поэтому частоту обновления задаёт не задача по расписанию, а число пользователей и то, как часто они открывают страницу. Платит тоже не тот, кто настроил задачу.
При OAuth платит каждый пользователь. При общем ключе платит организация, которая ввела ключ. Эти два факта определяют устройство кэша, и все тесты ниже посвящены именно им. Если вам нужен только еженедельный статичный отчёт, две другие статьи предлагают более простой путь.
Источники
- Справочный центр Claude, «What are artifacts and how do I use them?», дата обращения 2026-11-05: https://support.claude.com/en/articles/17153992-what-are-artifacts-and-how-do-i-use-them
- Справочный центр Claude, «Share artifacts», дата обращения 2026-11-05: https://support.claude.com/en/articles/9547008-share-artifacts
- Справочный центр Claude, «Artifacts admin guide for Team and Enterprise plans», дата обращения 2026-11-05: https://support.claude.com/en/articles/16994751-artifacts-admin-guide-for-team-and-enterprise-plans
- Справочный центр Claude, «Get started with custom connectors using remote MCP», дата обращения 2026-11-05: https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
- Справочный центр Claude, «Use connectors to extend Claude's capabilities», дата обращения 2026-11-05: https://support.claude.com/en/articles/11176164-use-connectors-to-extend-claude-s-capabilities
- Справочный центр Claude, «Get started with Claude dashboards», дата обращения 2026-11-05: https://support.claude.com/en/articles/17454700-get-started-with-claude-dashboards
- Справочный центр Claude, «Release notes», дата обращения 2026-11-05: https://support.claude.com/en/articles/12138966-release-notes
- Документация Claude Code, «Artifacts», дата обращения 2026-11-05: https://code.claude.com/docs/en/artifacts
- Claude Code, «Week 29 digest (July 13 to 17, 2026)», дата обращения 2026-11-05: https://code.claude.com/docs/en/whats-new/2026-w29
- Claude Code, указатель «What's new», дата обращения 2026-11-05: https://code.claude.com/docs/en/whats-new
- Документация Claude Code, «Connect Claude Code to tools via MCP», дата обращения 2026-11-05: https://code.claude.com/docs/en/mcp
- История изменений Claude Code на GitHub, дата обращения 2026-11-05: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
- История изменений Claude Code в документации, дата обращения 2026-11-05: https://code.claude.com/docs/en/changelog
- Документация для разработчиков claude.com, «Build an MCP server for Claude», дата обращения 2026-11-05: https://claude.com/docs/connectors/building
- Документация для разработчиков claude.com, «Authentication for connectors», дата обращения 2026-11-05: https://claude.com/docs/connectors/building/authentication
- Документация Claude API, «MCP connector», дата обращения 2026-11-05: https://docs.claude.com/en/docs/agents-and-tools/mcp-connector
- Страница тарифов Claude, дата обращения 2026-11-05: https://claude.com/pricing
- Блог Claude, «Build live dashboards and animate explainers with Claude» (2026-10-08), дата обращения 2026-11-05: https://claude.com/blog/dashboards-and-motion
- Claude, «Introducing artifacts for legal work with Claude» (2026-10-28), дата обращения 2026-11-05: https://claude.com/resources/articles/introducing-artifacts-for-legal-work
- Claude, «Turn ideas into interactive AI-powered apps» (с пометкой об обновлении от 2025-10-21), дата обращения 2026-11-05: https://claude.com/resources/articles/build-artifacts
- GitHub anthropics/claude-ai-mcp, issue 787 (открыт 2026-08-06), дата обращения 2026-11-05: https://github.com/anthropics/claude-ai-mcp/issues/787
- Спецификация MCP 2025-06-18, «Tools», дата обращения 2026-11-05: https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- Спецификация MCP 2025-06-18, «Authorization», дата обращения 2026-11-05: https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization
- Спецификация MCP 2025-11-25, «Authorization», дата обращения 2026-11-05: https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization
- Спецификация MCP 2026-07-28, «Schema Reference», дата обращения 2026-11-05: https://modelcontextprotocol.io/specification/2026-07-28/schema
- IETF RFC 9728, «OAuth 2.0 Protected Resource Metadata», дата обращения 2026-11-05: https://datatracker.ietf.org/doc/html/rfc9728
- IETF RFC 6750, «OAuth 2.0 Bearer Token Usage», дата обращения 2026-11-05: https://datatracker.ietf.org/doc/html/rfc6750
- MDN, «429 Too Many Requests», дата обращения 2026-11-05: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/429
- Google for Developers, «YouTube Data API quota costs» (обновлено 2026-11-03), дата обращения 2026-11-05: https://developers.google.com/youtube/v3/determine_quota_cost
- Meta for Developers, «IG User Business Discovery», дата обращения 2026-11-05: https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/business_discovery
- Meta for Developers, «Graph API rate limits», дата обращения 2026-11-05: https://developers.facebook.com/docs/graph-api/overview/rate-limiting
- TikTok for Developers, «List Videos», дата обращения 2026-11-05: https://developers.tiktok.com/doc/tiktok-api-v2-video-list
- TikTok for Developers, «Understanding TikTok API Rate Limits», дата обращения 2026-11-05: https://developers.tiktok.com/doc/tiktok-api-v2-rate-limit
- Удалённый MCP EveryInfra (tools/list и tools/call), 2026-11-05: https://api.everyinfra.com/mcp
- Метаданные защищённого ресурса EveryInfra для /mcp/all, дата обращения 2026-11-05, 00:12 по сингапурскому времени: https://api.everyinfra.com/.well-known/oauth-protected-resource/mcp/all
- Каталог возможностей данных EveryInfra, дата обращения 2026-11-05, 00:15 по сингапурскому времени: https://api.everyinfra.com/api/v1/social/catalog
- Документ OpenAPI EveryInfra, дата обращения 2026-11-05: https://api.everyinfra.com/openapi.json
- Reddit r/ClaudeCode, «Share an artifact with a database to users without a Claude License», дата обращения 2026-11-05: https://www.reddit.com/r/ClaudeCode/comments/1xhwscj/help_needed_share_an_artifact_with_a_database_to/
- Reddit r/ClaudeAI, «Has anyone gotten a Claude artifact with connectors to work for their whole team?», дата обращения 2026-11-05: https://www.reddit.com/r/ClaudeAI/comments/1wb1ep7/has_anyone_gotten_a_claude_artifact_with/
- Reddit r/ClaudeAI, «Problem with Artifact MCP permissions», дата обращения 2026-11-05: https://www.reddit.com/r/ClaudeAI/comments/1vr1k8q/problem_with_artifact_mcp_permissions_how_can_i/
- Reddit r/halopsa, «The mother of all HaloPSA dashboards, built in Claude artifacts», дата обращения 2026-11-05: https://www.reddit.com/r/halopsa/comments/1wfttq0/the_mother_of_all_halopsa_dashboards_built_in/
- Reddit r/ClaudeAI, «Artifacts cannot invoke custom MCP connectors», дата обращения 2026-11-05: https://www.reddit.com/r/ClaudeAI/comments/1q8gp3l/artifacts_cannot_invoke_custom_mcp_connectors/
- The New Stack, «Claude can now build your dashboards» (2026-10-08), дата обращения 2026-11-05: https://thenewstack.io/claude-dashboards-data-motion/
- Harvey, «Harvey Brings Intake to Claude for Legal Artifacts Launch» (2026-10-28), дата обращения 2026-11-05: https://www.harvey.ai/blog/harvey-intake-claude-for-legal-artifact
Справка BL-87