MCP server for the Yandex Audience API — audience segments (CRM uploads, lookalike, pixel-based), tracking pixels and access grants for AI agents.
Strong foundation with 19 well-named tools, comprehensive descriptions in Russian, and explicit input schemas with types and enums. All tools have descriptions (194-char baseline met). Parameters include type definitions and constraints (enums for content_type, permission, lookalike_value, HTTP methods). Error handling guidance present (e.g., finish_login notes 10-min code expiry; delete_segment warns of no undo). Key gaps: output schemas not formally documented in tool definitions; some parameter descriptions lack format/range details (e.g., limit/offset in list_segments); no dry-run/confirmation pattern for destructive ops; raw_request lacks input validation guidance.
Создаёт разрешение на управление сегментом для указанного логина Яндекса. permission: edit — редактирование и использование сегмента, view — только просмотр/использование. Ответ — {"grant": {...}} (поле created_at заполняет сервер).
Показывает, подключены ли Яндекс Аудитории: есть ли токен, откуда он взят (переменная окружения YANDEX_AUDIENCE_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты Аудиторий отвечают, что подключение не настроено.
Завершает создание загруженного CRM-сегмента (второй шаг: upload_* → confirm_segment). Сохраняет сегмент с заданным именем и параметрами. Асинхронная обработка: статус приходит не сразу — перечитывайте list_segments для отслеживания.
Создаёт lookalike-сегмент на основе существующего сегмента. Lookalike расширяет охват, находя пользователей, похожих на исходный сегмент. Асинхронная обработка: статус приходит не сразу — перечитывайте list_segments.
Создаёт пиксель Яндекс Аудиторий с заданным именем. В ответе — {"pixel": {...}} с полем url: код пикселя, который нужно вставить в рекламные материалы (баннеры), после чего на его основе можно строить сегменты инструментом create_pixel_segment.
Output schemas not formally documented in tool definitions. Descriptions mention response structure (e.g., 'Ответ, {"segments": [...]}') but tool registration lacks explicit outputSchema declarations. LLMs cannot reliably parse responses without formal schema.
Pagination parameters (limit, offset) lack range constraints in descriptions. list_segments accepts 'limit' with default 10000 but no min/max stated. LLMs may pass absurd values (0, 999999) causing API errors.
raw_request lacks input validation guidance. Description warns 'path on foreign host will be rejected' but does not explain validation rules, error responses, or how to detect injection attempts. LLMs may pass malformed paths.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Создаёт пиксельный сегмент на основе событий, отслеживаемых пикселем. Условия AND-ятся. Асинхронная обработка: статус приходит не сразу — перечитывайте list_segments.
Удаляет указанный пиксель Яндекс Аудиторий. Успешный ответ — {"success": true}. В API существует метод восстановления удалённого пикселя (POST /v1/management/pixel/{id}/undelete) — при необходимости он доступен через raw_request.
Удаляет указанный сегмент Яндекс Аудиторий. Успешный ответ — {"success": true}. Отката у delete_segment нет — любая запись идёт в реальный аккаунт.
Удаляет разрешение на управление сегментом у указанного пользователя. Успешный ответ — {"success": true}.
Второй шаг подключения: обменивает код подтверждения из start_login на токен доступа, сохраняет его в файл только для владельца (0600) и сразу проверяет живым запросом к Аудиториям. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Код одноразовый и живёт 10 минут: если он не принят, вызовите start_login заново и попросите свежий.
Возвращает список пикселей Яндекс Аудиторий пользователя. Ответ — {"pixels": [...]}: у каждого пикселя id, name, create_time, url (код пикселя для вставки в рекламные материалы), охваты user_quantity_7 / user_quantity_30 / user_quantity_90 (уникальные пользователи за 7/30/90 дней) и segments — сегменты, построенные на этом пикселе.
Возвращает список разрешений на управление сегментом. Ответ — {"grants": [...]}: у каждого разрешения user_login (логин пользователя), permission (edit — редактирование, view — просмотр), comment и created_at.
Возвращает список сегментов Яндекс Аудиторий пользователя. Ответ — {"segments": [...]}: у каждого сегмента id, name, type (crm_upload, lookalike, pixel, metrica, appsmetrica, geo), status (active, processing, failed), created_at, updated_at, size (количество записей), и дополнительные поля в зависимости от типа.
Удаляет сохранённый токен Аудиторий с диска. Токен, заданный переменной окружения YANDEX_AUDIENCE_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID.
Escape hatch: прямой вызов любого пути Yandex Audience API, для эндпоинтов без выделенного инструмента (например, PUT "v1/management/segment/{id}/reprocess" — пересчёт сегмента, или POST "v1/management/pixel/{id}/undelete" — восстановление пикселя). Путь указывается относительно хоста API; query-параметры включайте прямо в path (например, "v1/management/segments?limit=5"). body отправляется как JSON для POST/PUT. Заголовок Authorization подставляется автоматически; путь на чужой хост будет отклонён.
Первый шаг подключения Яндекс Аудиторий без правки конфигурации и без перезапуска клиента. Возвращает ссылку на страницу Яндекс OAuth. Покажите ссылку пользователю целиком и попросите: открыть её в браузере под аккаунтом Яндекса, которому принадлежат нужные сегменты (или которому они доверены), подтвердить доступ на чтение и изменение сегментов и прислать показанный код подтверждения. Полученный код передайте в finish_login. Код действует 10 минут. Сам по себе код бесполезен для постороннего: обменять его может только этот сервер.
Изменяет указанный пиксель (в схеме изменения доступно только поле name — переименование). Ответ — {"pixel": {...}} с обновлёнными данными.
Изменяет существующий сегмент (в схеме изменения доступно только поле name — переименование). Ответ — {"segment": {...}} с обновлёнными данными.
Загружает файл с данными для CRM-сегмента (первый шаг из двух: upload_* → confirm_segment). Поддерживаемые форматы: CSV, TSV, JSON Lines. Данные могут быть в виде email, phone, IDFA, GAID, Яндекс ID или хешей (MD5, SHA1, SHA256). Ответ — {"segment_id": ...}: используйте этот id в confirm_segment для завершения создания сегмента.
Destructive operations (delete_segment, delete_pixel, delete_segment_grant, raw_request with DELETE) lack confirmation/dry-run pattern. Descriptions warn 'no undo' but tool accepts no confirmation parameter. Agents may delete by mistake.
Error handling descriptions are narrative but lack structured error codes/categories. Descriptions mention '429 server retries itself' and '5xx/network errors do not retry' but tool definitions do not expose error classification (retryable vs fatal) to LLMs.