Yandex Audience MCP
The server enables management of Yandex Audience segments, pixels, and access permissions through MCP tools. Key capabilities include:
Segment Management
List all accessible segments with IDs, types, statuses, and filter by processing status.
Upload device IDs/MACs/hashes via TSV/TXT or CRM data via CSV in a two-phase process: upload then confirm with name, content type, hashing, and device matching.
Rename or delete segments (deletion is irreversible).
Create lookalike segments (similarity 1–5, configurable distribution) and pixel-based segments (1–90 day lookback, optional frequency/UTM filters).
Pixel Management
List, create, rename, and delete pixels (deletion is recoverable via raw request). Pixels can be embedded in ad materials.
Access Management
List, grant (edit/view), and revoke access to segments for Yandex logins.
Advanced/Utility
Execute arbitrary API requests (
raw_request) for operations like reprocessing segments or undeleting pixels.
Operational Details
Enforces API quotas (e.g., 10 segment creations/min, 100/hour, 500/day); minimum 100 records per segment, but can override with
check_size: false.Tools are annotated with read-only, destructive, and idempotent hints; non-idempotent operations are not automatically retried on failure.
File uploads accept local paths or content strings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yandex Audience MCPПокажи мои сегменты в Аудиториях и их статусы"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Яндекс Аудитории MCP
A1 Яндекс Аудитории MCP подключает AI-приложение к сегментам, пикселям и доступам Яндекс Аудиторий. Попросите на естественном языке показать, что уже есть в аккаунте, подготовить сегмент из CRM, собрать похожую аудиторию или выдать доступ коллегам — ассистент выполнит это через ваш аккаунт. Подключение начинается прямо в диалоге: не нужно заранее создавать токен или редактировать конфигурацию.
20 инструментов. Сегменты, пиксели, доступы, подключение аккаунта и дополнительный прямой вызов API.
Подключение в чате. Яндекс откроет страницу входа; одноразовый код действует 10 минут, а сервер проверит доступ к сегментам сразу после подключения.
CRM и идентификаторы. CSV с email и телефонами, а также TSV/TXT с device ID, MAC-адресами или SHA256-хешами.
Два шага для сегмента из файла. Сначала загрузка, затем отдельное подтверждение параметров и запуск обработки.
Без глобальной установки. Пакет запускается через
npxна Node.js 20+ и подключается к AI-клиенту поstdio.
Попробуйте первым сообщением:
Покажи мои сегменты в Яндекс Аудиториях: названия, типы и текущие статусы.
Подключить сервер · Посмотреть сценарии · Открыть техническую документацию
Увидеть работу за минуту
Вы: Подключи Яндекс Аудитории.
Ассистент: Даёт ссылку на вход в Яндекс. Откройте её под аккаунтом, которому принадлежат нужные сегменты (или которому они доверены), подтвердите доступ и пришлите показанный код.
Вы: Отправляет код со страницы Яндекса.
Ассистент: Подключает Аудитории, проверяет, видны ли сегменты, и сообщает результат. Перезапускать приложение не нужно.
Вы: Загрузи
buyers.csvкак CRM-сегмент «Покупатели 2026» и остановись после загрузки.Ассистент: Загружает файл — в аккаунте появляется сегмент со статусом
uploaded, показывает его id, имя и параметры и ждёт отдельного подтверждения. После подтверждения обработка идёт не мгновенно, поэтому статус проверяется через список сегментов.
Related MCP server: Yandex Metrica MCP
Содержание
Быстрый старт
Нужны Node.js 20 или новее и аккаунт Яндекс Аудиторий. Сервер запускается через npx, поэтому отдельно устанавливать пакет не требуется. Токен заранее не нужен — подключение проходит прямо в диалоге; для CI можно задать готовый токен, см. Подключение и настройка.
Добавьте сервер в AI-приложение — ниже открыт пример для Codex, остальные приложения собраны в сворачиваемые инструкции.
Напишите: «Подключи Яндекс Аудитории». Ассистент проведёт через вход в Яндекс и проверит доступ к сегментам.
Начните с безопасного запроса, например: «Покажи мои сегменты в Яндекс Аудиториях: названия, типы и текущие статусы».
Через интерфейс приложения:
Откройте Settings → MCP servers.
Нажмите Add server.
Выберите STDIO, затем укажите команду запуска
npx -y mcp-yandex-audience@latest.Нажмите Save, затем Restart.
Через командную строку:
codex mcp add yandex-audience -- npx -y mcp-yandex-audience@latestПроверьте подключение:
codex mcp listЗатем в чате Codex попросите: «Подключи Яндекс Аудитории».
claude mcp add --transport stdio --scope user yandex-audience -- npx -y mcp-yandex-audience@latestПроверьте подключение:
claude mcp listЗатем начните диалог с просьбы подключить Яндекс Аудитории.
Официальная инструкция Claude Code
Актуальный официальный путь — Settings → Extensions. Для пользовательского desktop extension откройте Advanced settings → Extension Developer → Install Extension…, выберите файл .mcpb и следуйте подсказкам.
Этот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит .mcpb. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:
{
"mcpServers": {
"yandex-audience": {
"command": "npx",
"args": ["-y", "mcp-yandex-audience@latest"]
}
}
}В таких сборках сохраните его в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.
После сохранения откройте новый диалог и попросите подключить Яндекс Аудитории.
Официальная инструкция Claude Desktop
Пользовательский локальный сервер добавляется в Cursor через файл mcp.json:
macOS и Linux:
~/.cursor/mcp.jsonWindows:
%USERPROFILE%\.cursor\mcp.json
{
"mcpServers": {
"yandex-audience": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-yandex-audience@latest"]
}
}
}В чате Cursor сервер появится среди доступных инструментов. Попросите подключить Яндекс Аудитории и пройдите вход через Яндекс.
Откройте палитру команд и выполните MCP: Open User Configuration. VS Code создаст пользовательский файл MCP. Добавьте в него:
{
"servers": {
"yandex-audience": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-yandex-audience@latest"]
}
}
}Проверьте запуск командой MCP: List Servers, затем откройте чат и попросите подключить Яндекс Аудитории.
Официальная инструкция VS Code
Что можно поручить
Проверить, что уже есть в аккаунте
Посмотреть сегменты, их типы, статусы и идентификаторы.
Найти сегменты, которые ещё обрабатываются, завершились ошибкой или содержат недостаточно данных.
Посмотреть пиксели, их охваты за 7, 30 и 90 дней, а также сегменты, созданные на их основе.
Узнать, кому выдан доступ к конкретному сегменту.
Подготовить сегмент из CRM
Загрузить CSV с колонками
email,phone,ext_idилиexternal_id.Загрузить TSV/TXT с идентификаторами устройств, MAC-адресами или SHA256-хешами.
Проверить параметры загруженного сегмента перед подтверждением.
Сохранить сегмент с нужным именем и типом данных, затем проверить ход обработки.
Собрать новую аудиторию
Создать похожую аудиторию на основе существующего сегмента: от более похожей и узкой до более широкой.
Собрать сегмент посетителей по пикселю за период от 1 до 90 дней.
Добавить к пиксельному сегменту условия по числу срабатываний и UTM-меткам.
Работать с пикселями и доступами
Создать или переименовать пиксель.
Выдать коллеге или агентству доступ к сегменту: только просмотр или редактирование.
Отозвать доступ, когда он больше не нужен.
Использовать дополнительные возможности API
raw_request нужен для операций, у которых пока нет отдельного инструмента: например, повторной обработки сегмента или восстановления пикселя. Это инструмент для технических специалистов: он может выполнить запись или удаление, поэтому для обычных задач лучше использовать отдельные команды выше.
Полные входные параметры, ответы и статусы собраны в справочнике инструментов.
Как это работает
Сервер работает с тремя сущностями Яндекс Аудиторий:
Сущность | Что с ней можно делать |
Сегмент | Список со статусами обработки, загрузка из CRM-файла, похожая аудитория, сегмент по пикселю, переименование и удаление. |
Пиксель | Список с охватами за 7, 30 и 90 дней, создание, переименование и удаление. |
Доступ | Кому доступен сегмент; выдача и отзыв прав на просмотр или редактирование. |
Сегмент из файла создаётся в два шага:
Вы передаёте CSV, TSV или TXT-файл — путь к локальному файлу или его содержимое, но не оба источника одновременно. Сервер загружает файл в Яндекс Аудитории, и в аккаунте появляется объект со статусом
uploaded.Отдельной командой вы подтверждаете имя, тип данных и параметры обработки. Только после этого Яндекс Аудитории начинают обработку.
Готовность появляется не мгновенно: сервер проверяет статус через список сегментов, где возможны состояния обработки, ошибки или недостаточного объёма данных. Для CRM используйте CSV с заголовками email, phone, ext_id или external_id. Для хешированных данных API принимает SHA256; MD5 не поддерживается.
Сервер не управляет рекламными кампаниями, ставками и объявлениями в Яндекс Директе. Готовый сегмент подключается к кампании вне этого MCP-сервера.
Что может изменить данные
Яндекс Аудитории — API с операциями записи. MCP-сервер передаёт AI-клиенту информацию о том, какие инструменты читают, изменяют или удаляют данные, но правила подтверждения задаёт само AI-приложение.
Действие | Что происходит | Изменяет аккаунт |
Просмотр сегментов, пикселей и доступов | Читает доступные объекты и их состояние | Нет |
Загрузка файла | Создаёт объект сегмента со статусом | Да |
Подтверждение сегмента | Сохраняет параметры и запускает обработку | Да |
Создание похожего или пиксельного сегмента | Создаёт новый сегмент | Да |
Переименование сегмента или пикселя | Изменяет название существующего объекта | Да |
Выдача и отзыв доступа | Меняет права пользователя на сегмент | Да |
Удаление сегмента | Удаляет сегмент без возможности восстановления | Да, необратимо |
Удаление пикселя | Удаляет пиксель; восстановление возможно отдельным методом API | Да |
Сервер не объединяет загрузку файла и подтверждение в один скрытый вызов. При сетевой ошибке или ответе сервера 5xx он не повторяет операции записи автоматически: операция могла уже выполниться. В такой ситуации сначала проверьте состояние через список сегментов, пикселей или доступов.
Подключение и настройка
Для обычного использования токен заранее не нужен:
В чате попросите подключить Яндекс Аудитории.
Откройте ссылку на Яндекс OAuth под аккаунтом, которому принадлежат нужные сегменты (или которому они доверены).
Подтвердите доступ и пришлите код ассистенту. Он одноразовый, действует 10 минут и меняется на токен только внутри работающего сервера.
Сервер использует PKCE: код из чата сам по себе нельзя обменять на токен. Полученный токен хранится локально в ~/.config/mcp-yandex-audience/credentials.json с правами только для владельца, а доступ продлевается автоматически. Сервер просит два права — чтение и изменение сегментов Аудиторий; кампании, объявления и остальные сервисы Яндекса ему недоступны.
Проверить состояние — попросите «покажи статус подключения к Аудиториям», отключить — «отключи Аудитории». Выданный приложению доступ отзывается в Яндекс ID.
Для CI и нестандартных установок доступна настройка через переменные окружения:
Переменная | Назначение |
| Готовый OAuth-токен; имеет приоритет над подключением из чата. Такой токен сервер не обновляет и не удаляет. |
| Client ID собственного OAuth-приложения вместо приложения A1-x-Tech; Redirect URI — |
| Хост API; по умолчанию |
| Таймаут одного запроса; по умолчанию 60 000 мс. |
| Число повторов при ограничении API; по умолчанию 3. Для 5xx и сетевых ошибок повторяются только запросы чтения. |
|
|
Готовый токен для YANDEX_AUDIENCE_TOKEN можно получить через собственное OAuth-приложение:
Зарегистрируйте приложение на oauth.yandex.ru/client/new.
Выберите права Яндекс Аудиторий: создание сегментов и изменение параметров своих и доверенных сегментов и чтение параметров своих и доверенных сегментов.
Получите OAuth-токен — для разработки подойдёт инструкция по отладочному токену — и передайте его серверу в
YANDEX_AUDIENCE_TOKEN.
Токен привязан к аккаунту Яндекса: сервер увидит только собственные и доверенные сегменты владельца токена. Такой токен хранится открытым текстом в конфигурации AI-клиента — относитесь к нему как к паролю и не добавляйте конфигурацию с реальным токеном в Git. Подробнее — в официальной документации по авторизации API Яндекс Аудиторий.
Данные и телеметрия
Сервер запускается на вашей машине и обращается к api-audience.yandex.ru напрямую. OAuth-токен добавляется только к запросам Audience API — даже raw_request принимает относительный путь, а переход на посторонний хост блокируется. При входе из диалога сервер дополнительно ходит на oauth.yandex.ru, чтобы обменять код подтверждения и продлевать доступ; при загрузке через file_path читает указанный локальный файл и передаёт его в Яндекс Аудитории.
По умолчанию сервер отправляет на usage.gistrec.cloud анонимную техническую телеметрию: запуск сервера (в том числе без настроенного токена), имя вызванного инструмента и код причины проблемы с конфигурацией — вместе со случайным идентификатором установки, версией пакета, именем и версией AI-клиента, версией Node.js и операционной системой. OAuth-токен, данные аккаунта, содержимое файлов, аргументы инструментов и тексты запросов не читаются и не отправляются. Отправка выполняется в фоне с таймаутом 2 секунды и не влияет на работу сервера; реализация находится в src/telemetry.ts.
Чтобы отключить телеметрию, задайте переменную окружения:
ASKADS_TELEMETRY=0Ограничения
Обработка не мгновенная. После подтверждения сегмента проверяйте его состояние через список сегментов: возможны статусы обработки, ошибки и недостаточного объёма данных.
Удаление сегмента необратимо. Для пикселя API предусматривает восстановление отдельным методом, доступным через
raw_request.Один сегмент нельзя запросить отдельно. API возвращает общий список — сервер находит нужный сегмент по id в нём.
Минимум 100 записей и максимум 1 ГБ. При подтверждении меньшего сегмента можно передать
check_size: false, но такой сегмент нельзя использовать в Директе, пока размер не вырастет.Квоты API. До 30 запросов в секунду с IP и 5 000 запросов в сутки на логин. Создание и изменение сегментов: до 10 в минуту, 100 в час и 500 в сутки. Ошибочные запросы тоже расходуют квоту.
При временном ограничении API. Сервер повторяет запрос с задержкой до числа попыток из
YANDEX_AUDIENCE_MAX_RETRIES; ответ 429 не означает, что нужно создавать объект заново.Нет фонового наблюдения. Сервер работает только во время вызова из AI-приложения и сам не ждёт завершения обработки. Если ваше приложение поддерживает задания по расписанию, настройте периодическую проверку статусов через список сегментов.
Техническая документация
Каталог MCP-возможностей — страницы по пользовательским задачам для каждого инструмента.
Все инструменты — входные данные, ответы, статусы и ограничения.
Разработка — локальный запуск, тесты, сборка и read-only smoke-проверка.
Публикация — выпуск npm-пакета и листинг в каталогах MCP.
npm-пакет — опубликованная версия
mcp-yandex-audience.API Яндекс Аудиторий — официальная документация.
Поддержка
Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.
Available Tools
20 toolsadd_segment_grantВыдать доступ к сегментуAIdempotent
Создаёт разрешение на управление сегментом для указанного логина Яндекса. permission: edit — редактирование и использование сегмента, view — только просмотр/использование. Ответ — {"grant": {...}} (поле created_at заполняет сервер).
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Комментарий к разрешению (до 255 символов). | |
| permission | Yes | Уровень доступа: edit (изменение) | view (просмотр). | |
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). | |
| user_login | Yes | Логин пользователя Яндекса, которому выдаётся доступ. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true), the description adds behavioral details: it explains the meaning of permission values ('edit' allows editing and using, 'view' only viewing/using) and discloses the response shape including that created_at is server-filled. It doesn't mention idempotency behavior, but annotations already hint at it, so the description provides valuable additional context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the core action, and includes only necessary contextual details (permission meanings, response format). It is front-loaded and free of redundancy, perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple grant-creation tool, the description covers the purpose, permission semantics, and response shape. While there is no output schema, the response format is described inline, which is helpful. It could mention idempotency or duplicate handling, but the idempotentHint annotation partially covers that, making the description adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter schema covers 100% of parameters, so baseline is 3. The description adds semantic meaning for the 'permission' parameter by elaborating on each enum value, which is not fully explained in the schema. It also implicitly clarifies that segment_id comes from list_segments or creation responses, though this is also in the schema. This extra semantic enrichment justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Создаёт' (creates) and clearly defines the resource: a permission (grant) on a segment for a specified Yandex login. It distinguishes itself from sibling tools like list_segment_grants and delete_segment_grant by its unique action and parameters (segment_id, user_login, permission).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the action and the permission options, placing it as the creation counterpart to list/delete grant tools. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough that an agent can infer when to use it. This aligns with 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_statusСтатус подключения к АудиториямARead-onlyIdempotent
Показывает, подключены ли Яндекс Аудитории: есть ли токен, откуда он взят (переменная окружения YANDEX_AUDIENCE_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты Аудиторий отвечают, что подключение не настроено.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the already informative annotations: it sends nothing to the network and does not display the token. This provides extra safety context (e.g., no side effects) that the annotations don't fully convey, though the readOnlyHint already implies no mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, starting with the core purpose, then providing specifics (token source, expiry, file location) and ending with usage guidance. Every sentence carries meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is complete: it explains what the tool shows, where data comes from, that it's safe, and when to invoke it. No additional information is needed for an agent to use it appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description doesn't need to explain any, and per the baseline rule, a score of 4 is appropriate. The description correctly focuses on what the tool reports, not on inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows connection status to Yandex Audiences, including token presence, source, expiry, and file location. It distinguishes itself from sibling tools that handle pixels, segments, and auth flows, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger: 'Вызовите это, если инструменты Аудиторий отвечают, что подключение не настроено.' It tells when to use, though it doesn't explicitly mention when not to use or alternatives, but that's not critical for a status tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_segmentСохранить загруженный сегментA
Сохраняет сегмент, созданный из файла (второй шаг после upload_segment_file / upload_segment_csv_file): задаёт имя, тип содержимого и параметры хеширования. content_type: idfa_gaid (идентификаторы мобильных устройств), mac (MAC-адреса) или crm (CSV с CRM-данными). hashing_alg — только SHA256 (MD5 не поддерживается API с 01.01.2025). device_matching_type: CROSS_DEVICE (по умолчанию) или IN_DEVICE (только для idfa_gaid). check_size=false позволяет сохранить сегмент меньше 100 записей (его нельзя использовать в Директе, пока размер не превысит 100). Ответ — {"segment": {...}}; обработка занимает время, статус смотрите через list_segments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название сегмента. | |
| hashed | No | Захешированы ли данные в файле. | |
| check_size | No | false — разрешить сохранение сегмента меньше 100 записей (по умолчанию true). | |
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). | |
| hashing_alg | No | Алгоритм хеширования — только SHA256 (MD5 не поддерживается с 01.01.2025). | |
| content_type | Yes | Тип содержимого файла: idfa_gaid | mac | crm. | |
| device_matching_type | No | Режим сопоставления устройств: CROSS_DEVICE (по умолчанию) | IN_DEVICE (только для idfa_gaid). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation (readOnlyHint=false), not destructive. Description adds async processing behavior ('обработка занимает время, статус смотрите через list_segments') and discloses size restrictions (check_size=false allows <100 records, unusable in Direct until >100). These go beyond annotations and help agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is information-dense but efficient: two sentences pack purpose, workflow position, parameter details, constraints, and response format. No filler, but slightly long given that some info duplicates schema descriptions. Still earns its place by providing context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema, description covers workflow, parameter semantics, response format, and follow-up status check. It does not cover error scenarios or permissions, but those are not mandatory. Overall, agent has enough context to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds context: explains enum meanings for content_type (idfa_gaid, mac, crm), defaults (CROSS_DEVICE), and special constraints (IN_DEVICE only for idfa_gaid, SHA256 only). It also clarifies check_size behavior with real-world implication, adding value over schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action: 'Сохраняет сегмент, созданный из файла' (saves a segment created from a file), and clearly positions it as the second step after upload tools. It differentiates from siblings like rename_segment and delete_segment by describing the save/confirm workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: 'второй шаг после upload_segment_file / upload_segment_csv_file' (second step after uploading). Also tells agent to check status via list_segments, implying not to use this for status. Provides constraints like check_size and hashing algorithm choices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lookalike_segmentСоздать lookalike-сегментA
Создаёт сегмент типа lookalike — пользователи, «похожие» по поведению в интернете на аудиторию исходного сегмента (lookalike_link). lookalike_value — степень похожести от 1 (максимальная точность, меньший охват) до 5 (максимальный охват). maintain_device_distribution / maintain_geo_distribution (по умолчанию true) сохраняют распределение по типам устройств и городам исходного сегмента. Ответ — {"segment": {...}}; сегмент обрабатывается асинхронно, статус смотрите через list_segments. Квота: 10/мин, 100/час, 500/сутки.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название сегмента. | |
| lookalike_link | Yes | Идентификатор исходного сегмента, на который будут «похожи» пользователи. | |
| lookalike_value | Yes | Степень «похожести»: 1 (точнее, уже) .. 5 (шире охват). | |
| maintain_geo_distribution | No | Сохранять распределение по городам исходного сегмента (по умолчанию true). | |
| maintain_device_distribution | No | Сохранять распределение по типам устройств исходного сегмента (по умолчанию true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which state not read-only, not destructive), the description discloses critical behavioral traits: asynchronous processing with status via list_segments, response shape {"segment": {...}}, and rate limits (10/min, 100/hour, 500/day). It also explains the default values for maintain_device_distribution and maintain_geo_distribution, adding significant context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense. It front-loads the core purpose, then explains parameters, response format, async behavior, and rate limits in a logical sequence. No sentence is wasted; even the quota is essential for operational expectations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, async processing, rate limits) and the absence of an output schema, the description covers all essential aspects: what it does, how parameters affect behavior, what response to expect, how to monitor completion, and rate limits. It is a model of completeness for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters, but the description adds meaningful semantics: it elaborates the trade-off of lookalike_value (accuracy vs reach) and explicitly states the default true for the two boolean flags. This goes beyond the schema descriptions, which do not mention defaults. The name parameter gains no extra detail, but overall the description augments parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a lookalike segment, explaining the concept of 'similar users' and referencing the source segment (lookalike_link). This distinguishes it from sibling tools like create_pixel_segment or upload_segment_file, which serve different segment creation or upload purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by specifying the lookalike segment type and the required source segment. It also directs the user to list_segments for checking async status, providing a follow-up action. However, it does not explicitly contrast with alternative creation tools like create_pixel_segment, so it lacks an explicit exclusion clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pixelСоздать пиксельA
Создаёт пиксель Яндекс Аудиторий с заданным именем. В ответе — {"pixel": {...}} с полем url: код пикселя, который нужно вставить в рекламные материалы (баннеры), после чего на его основе можно строить сегменты инструментом create_pixel_segment.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название пикселя. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given annotations already flag readOnly=false and destructive=false, the description adds valuable behavioral context by revealing the response structure (pixel object with url field) and the required next step (inserting code into ads). It does not contradict annotations and provides more detail than the bare schema, though it does not elaborate on side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every sentence adds value—first stating the creation function, second explaining the response and subsequent usage. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter create tool with complete schema coverage and annotations, the description covers the essential aspects: creation, response shape, and downstream usage. It even explains the purpose of the returned field, making it self-contained for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single 'name' parameter with a description, so the baseline is 3. The description merely references 'the specified name' without adding format, constraints, or additional meaning beyond the schema. No extra parameter insight is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Yandex Audiences pixel with a given name, using a specific verb and resource. It also distinguishes from sibling tools by mentioning the response and the follow-up tool create_pixel_segment, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (initial pixel creation) and explains the workflow of inserting the pixel code into banners and then using create_pixel_segment. It does not explicitly contrast with alternatives like update_pixel or delete_pixel, so it lacks explicit when-not guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pixel_segmentСоздать сегмент на основе пикселяA
Создаёт сегмент типа pixel — пользователи, которых пиксель (pixel_id из list_pixels) видел за последние period_length дней (1..90). Дополнительные условия объединяются по «И»: частота показов (times_quantity + times_quantity_operation: lt | eq | gt) и фильтры по UTM-меткам (utm_source, utm_medium, utm_campaign, utm_content, utm_term). device_matching_type присутствует в примере запроса API, но не описан в документации — считайте экспериментальным. Ответ — {"segment": {...}}. Квота: 10/мин, 100/час, 500/сутки.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название сегмента. | |
| pixel_id | Yes | Идентификатор пикселя (id из list_pixels), на основе которого строится сегмент. | |
| utm_term | No | Фильтр по метке utm_term. | |
| utm_medium | No | Фильтр по метке utm_medium. | |
| utm_source | No | Фильтр по метке utm_source. | |
| utm_content | No | Фильтр по метке utm_content. | |
| utm_campaign | No | Фильтр по метке utm_campaign. | |
| period_length | No | Период в сутках (1..90), за который пользователь был замечен пикселем. | |
| times_quantity | No | Пороговое количество срабатываний пикселя (используется вместе с times_quantity_operation). | |
| device_matching_type | No | Режим сопоставления устройств (недокументирован для pixel-сегментов, экспериментально). | |
| times_quantity_operation | No | Условие по частоте: lt (меньше), eq (равно), gt (больше) относительно times_quantity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes significantly beyond the minimal annotations (readOnlyHint=false, etc.) by disclosing rate limits ('Квота: 10/мин, 100/час, 500/сутки'), the response format ('{"segment": {...}}'), and the experimental nature of device_matching_type. These behavioral traits are not covered by the annotations, making the description highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and information-dense, covering purpose, parameter logic, experimental warnings, response format, and rate limits in a few sentences. Every clause provides useful guidance without fluff or redundancy, and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters and no output schema, the description is quite complete: it explains the core logic, experimental parameter, response shape, and quotas. It does not mention potential follow-up steps like confirmation (the sibling confirm_segment exists), which could be relevant context, but given that the schema fully covers parameter semantics, the overall picture is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter meaning by stating that conditions combine via logical AND ('Дополнительные условия объединяются по «И»'), which is not in the schema. It also reinforces the pairing of times_quantity and times_quantity_operation, adding value beyond the individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's function: 'Создаёт сегмент типа pixel' (creates a pixel-type segment), identifying the resource (segment) and the specific base (pixel_id from list_pixels). This clearly distinguishes it from sibling tools like create_lookalike_segment, which create different segment types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by explaining how to construct the segment: 'пользователи, которых пиксель видел за последние period_length дней' and that additional conditions combine by 'AND'. It even flags device_matching_type as experimental, advising caution. However, it does not explicitly mention alternatives or when not to use this tool (e.g., using lookalike segments instead), missing the top criterion for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pixelУдалить пиксельADestructiveIdempotent
Удаляет указанный пиксель Яндекс Аудиторий. Успешный ответ — {"success": true}. В API существует метод восстановления удалённого пикселя (POST /v1/management/pixel/{id}/undelete) — при необходимости он доступен через raw_request.
| Name | Required | Description | Default |
|---|---|---|---|
| pixel_id | Yes | Идентификатор пикселя (id из list_pixels). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the destructiveHint annotation by specifying the successful response format and disclosing the existence of an undelete API method via raw_request. This provides useful behavioral context about reversibility and recovery options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, front-loading the core purpose and adding only essential behavioral details. Every sentence serves a purpose: stating the action and providing success/recovery information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one well-documented parameter and clear annotations, the description covers the essential context: what it deletes, the success response, and the recovery path. No output schema exists, but the description adequately addresses return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter, pixel_id, including its source ('id из list_pixels') and constraint (exclusiveMinimum: 0). The description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Удаляет указанный пиксель Яндекс Аудиторий' (Deletes the specified Yandex Audiences pixel). It uses a specific verb and resource, distinguishing it from sibling tools like update_pixel and create_pixel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage from the verb 'delete' and mentions the recovery method via raw_request, providing some context. However, it does not explicitly state when to use this tool versus alternatives or exclude any scenarios, leaving the guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_segmentУдалить сегментADestructiveIdempotent
Удаляет указанный сегмент Яндекс Аудиторий. Операция необратима (метода восстановления сегмента в API нет). Успешный ответ — {"success": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description adds the crucial context that the operation is irreversible and that no recovery method exists in the API. It also discloses the success response format, which is not covered by the annotations. This adds genuine value without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that immediately state the action and key caveat. There is no redundant information or filler, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description combined with annotations and schema provides sufficient context: what it does, how to identify the target, the irreversible nature, and the expected response. Minor aspects like error behavior are not covered, but given the tool's simplicity, this is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the only parameter, segment_id, including its type, constraints, and source (from list_segments or creation response). With 100% schema coverage, the description does not need to add parameter details, and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Удаляет' (deletes) with the resource 'сегмент' (segment), clearly indicating what the tool does. The action is distinct from sibling tools like rename_segment or list_segments, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions deletion of a specified segment and explicitly warns that the operation is irreversible, providing clear context for when to use it. It does not explicitly name alternatives, but the sibling toolset and the nature of the operation make the appropriate usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_segment_grantОтозвать доступ к сегментуADestructiveIdempotent
Удаляет разрешение на управление сегментом у указанного пользователя. Успешный ответ — {"success": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). | |
| user_login | Yes | Логин пользователя, у которого отзывается доступ. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds the successful response format ({"success": true}), but does not elaborate on effects such as whether an error occurs if the user has no existing grant, or whether the operation is truly idempotent in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence followed by the success response. Every element is necessary and no redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple revoke operation with two well-documented parameters, the description provides sufficient context to invoke the tool correctly. It mentions the success response format, which is useful given the absence of an output schema. Missing details about error cases and idempotency behavior are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters with clear descriptions (segment_id and user_login), so the schema coverage is 100%. The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Удаляет разрешение на управление сегментом у указанного пользователя' (deletes the permission to manage a segment from a specified user). This distinguishes it from sibling tools like add_segment_grant (which grants access) and delete_segment (which deletes the segment entirely).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the description and sibling tools: it is the inverse of add_segment_grant. However, there is no explicit guidance on when to use this tool versus alternatives, prerequisites, or scenarios where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_loginЗавершить подключение АудиторийAIdempotent
Второй шаг подключения: обменивает код подтверждения из start_login на токен доступа, сохраняет его в файл только для владельца (0600) и сразу проверяет живым запросом к Аудиториям. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Код одноразовый и живёт 10 минут: если он не принят, вызовите start_login заново и попросите свежий.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Код подтверждения, который Яндекс показал пользователю после входа. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context: token file permissions (0600), live verification against Audiences, no need to restart the client, and a 10-minute one-time code. However, the annotations declare idempotentHint=true, while the description explicitly says the code is one-time and requires a fresh start_login call if rejected. Repeated calls with the same consumed code are therefore not idempotent, so the description contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load the primary purpose and then provide necessary side-effect, activation, and retry details. No filler or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter authentication tool with no output schema, the description is complete: it covers input source, token persistence, verification, immediate availability of other tools, and failure recovery. The only issue is the annotation contradiction, which is already reflected in behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single required code parameter with 100% coverage, so the baseline is 3. The description adds important semantics beyond the schema: the code comes from start_login, is single-use, expires after 10 minutes, and should be refreshed if rejected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as the second connection step: it exchanges the confirmation code from start_login for an access token. This specific verb+resource framing distinguishes it from start_login and all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames usage as the second step after start_login, states that other tools become available immediately after success, and instructs the caller to invoke start_login again for a fresh code if the current code is rejected. This gives clear when-to-use and retry guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pixelsСписок пикселейARead-onlyIdempotent
Возвращает список пикселей Яндекс Аудиторий пользователя. Ответ — {"pixels": [...]}: у каждого пикселя id, name, create_time, url (код пикселя для вставки в рекламные материалы), охваты user_quantity_7 / user_quantity_30 / user_quantity_90 (уникальные пользователи за 7/30/90 дней) и segments — сегменты, построенные на этом пикселе.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing the response fields (id, name, create_time, url, coverage counts, segments), giving the agent a precise expectation of what the tool returns. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the primary purpose and then systematically specifies the response format. Every component—purpose, response envelope, field list, and nested segments—earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the full burden of explaining the tool's contract. It provides a thorough breakdown of the response object, including coverage metrics and nested segments, making the tool fully understandable for an agent. The annotations cover safety, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially covered at 100%. The description correctly adds no parameter details, and the baseline score of 4 for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Возвращает' and a clearly defined object 'список пикселей Яндекс Аудиторий пользователя', which unambiguously identifies the tool as a read-only list operation for the user's pixels. The addition of the response structure further solidifies the purpose and distinguishes it from sibling tools like list_segments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool—when you need to retrieve the user's pixels. It does not explicitly name alternatives or exclusions, but the simplicity of the tool and the distinct sibling names make the intended usage obvious, so this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segment_grantsСписок доступов к сегментуARead-onlyIdempotent
Возвращает список разрешений на управление сегментом. Ответ — {"grants": [...]}: у каждого разрешения user_login (логин пользователя), permission (edit — редактирование, view — просмотр), comment и created_at.
| Name | Required | Description | Default |
|---|---|---|---|
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable detail about the response structure, including field names and permission values (edit/view), going beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the main action and includes essential response details. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully specifies the return format including fields and allowed permission values. For a simple list tool with good annotations and a single well-documented parameter, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides thorough documentation for segment_id (source, type, constraints). The description does not add additional parameter guidance, and with 100% schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a list of permissions for a segment, with a specific verb and resource. It distinguishes itself from siblings like list_segments (which lists segments) and add_segment_grant/delete_segment_grant (which modify grants).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to view segment permissions) but does not explicitly state conditions or alternatives. It lacks a clear 'when not to use' or comparison with related tools like add_segment_grant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segmentsСписок сегментовARead-onlyIdempotent
Возвращает список сегментов Яндекс Аудиторий, доступных пользователю (все типы: uploading, metrika, appmetrica, lookalike, geo, pixel). Ответ — {"segments": [...]}: у каждого сегмента id, name, type, status (uploaded | is_processed | processed | processing_failed | is_updated | few_data), create_time, owner и типоспецифичные поля (у файловых — content_type, hashed, item_quantity, matched_quantity и др.). Пагинация: limit (по умолчанию 10000) и offset; параметр pixel фильтрует по сегментам, созданным на основе указанного пикселя. Отдельного метода получения одного сегмента в API нет — фильтруйте этот список по id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько сегментов вернуть (по умолчанию 10000). | |
| pixel | No | Идентификатор пикселя: вернуть только сегменты, созданные на его основе. | |
| offset | No | Порядковый номер сегмента, с которого начать выдачу (первый — 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the full response structure, including segment fields, statuses, type-specific fields, pagination parameters, default limit, and the pixel filter. It also warns that there is no separate get endpoint, adding valuable behavioral context not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized for the tool's complexity. It front-loads the main purpose, then gives a structured explanation of the response, pagination, and filtering in three additional sentences. Every sentence adds value, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description fully compensates by detailing the response format, fields, statuses, and type-specific attributes. It also covers pagination behavior and a non-obvious caveat (no single-segment fetch method). This makes the tool's behavior clear and complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all three parameters (limit, offset, pixel) with descriptive comments, and schema_description_coverage is 100%. The description adds only a brief restatement of pagination and the pixel filter, which does not go beyond the schema's explicit parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Возвращает список сегментов Яндекс Аудиторий, доступных пользователю' with an explicit list of segment types, distinguishing it from sibling tools that create/upload/delete segments. The verb+resource+scope is specific and unambiguous, and it also notes the absence of a single-segment method, reinforcing its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use this tool: not only for listing all segments but also as the sole way to fetch a single segment ('Отдельного метода получения одного сегмента в API нет — фильтруйте этот список по id'). This is a clear alternative usage instruction, equivalent to the get_calls example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutОтключить АудиторииADestructiveIdempotent
Удаляет сохранённый токен Аудиторий с диска. Токен, заданный переменной окружения YANDEX_AUDIENCE_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false, idempotentHint=true), the description adds critical context: it only deletes the token from disk, does not affect the env var token, and the server-side access remains active. It also mentions how to revoke access via Yandex ID, which is essential for the agent to understand the tool's full effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with a distinct purpose: what it deletes, what it doesn't touch, and what remains active. No fluff, all information is directly relevant. The structure is logical and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description covers all necessary aspects: action, scope, exceptions, and consequences. It fully explains the tool's behavior and implications, leaving no gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (there are no parameters to document). The description doesn't need to elaborate on parameters, so a baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb+resource: 'Deletes the saved Audiences token from disk'. It distinguishes itself from login-related siblings (start_login, finish_login, auth_status) by specifying the exact action and its scope. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you want to log out by removing the token from disk). It also provides important guidance about the env var token not being touched and how to handle it, which is crucial for correct usage. It doesn't explicitly name alternatives, but there are no direct logout siblings, so it's adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_requestПроизвольный запрос к API АудиторийADestructive
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 подставляется автоматически; путь на чужой хост будет отклонён.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON-тело запроса (для POST/PUT). | |
| path | Yes | Относительный путь API, например "v1/management/segments?limit=5". | |
| method | No | HTTP-метод. По умолчанию GET (безопасный). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already disclose write, destructive, and open-world behavior, the description adds important context: the Authorization header is automatically injected, paths to foreign hosts are rejected, and query parameters must be embedded in the path. These behaviors are not captured by the annotations and help the agent understand safety and execution constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (a few sentences) and front-loaded with the core purpose ('Escape hatch'). It efficiently uses examples and procedural notes without redundancy, and every sentence contributes meaningful information about usage and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an escape-hatch tool with no output schema and open-world behavior, the description covers the essential request aspects: relative path format, query parameter placement, JSON body handling, and automatic auth. It lacks explicit mention of response format or error handling, but these are inherently raw and unpredictable for such a tool, so the description is sufficiently complete given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for all three parameters (path with example, body as JSON, method default GET) with 100% coverage, so the baseline is 3. The description reinforces this information but does not add new parameter-level meaning beyond what the schema already specifies. The additional notes on auth and host restrictions are behavioral, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly identifies the tool as an 'escape hatch' for direct calls to any Yandex Audience API endpoint, using the verb 'прямой вызов' (direct call). It distinguishes itself from sibling tools by specifying it's for endpoints without a dedicated tool, and provides concrete examples (PUT reprocess, POST undelete) that are not in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool: 'для эндпоинтов без выделенного инструмента' (for endpoints without a dedicated tool), which clearly defines the usage context. It implicitly signals that dedicated sibling tools should be preferred when available, and the examples illustrate scenarios not covered by siblings. This provides clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_segmentПереименовать сегментAIdempotent
Изменяет сегмент. В схеме изменения доступно только поле name, так что фактически это переименование. Работает с сегментом любого типа; ответ — {"segment": {...}} с обновлёнными данными.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Новое название сегмента. | |
| segment_id | Yes | Идентификатор сегмента (id из list_segments или из ответа создания). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds value by explaining that despite the generic 'change' wording, it only affects the name (effectively rename), works with any segment type, and returns the updated segment object. This provides useful context beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately states the primary action, and includes the key scope and response details. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename tool with two well-documented parameters, strong annotations, and a described response shape, the description is complete. It does not need to cover edge cases or errors, as the schema and annotations handle the core expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (name and segment_id). The description adds no additional parameter-specific guidance beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Изменяет сегмент') and immediately clarifies that the only mutable field is name, making it effectively a rename. It also distinguishes from sibling tools by noting it works with any segment type, which sets it apart from creation tools like create_lookalike_segment and create_pixel_segment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when you need to rename a segment, since only the name field is available. It doesn't explicitly mention exclusions or alternatives, but the scope is obvious given the sibling tools (delete, create, upload). The context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_loginНачать подключение АудиторийARead-onlyIdempotent
Первый шаг подключения Яндекс Аудиторий без правки конфигурации и без перезапуска клиента. Возвращает ссылку на страницу Яндекс OAuth. Покажите ссылку пользователю целиком и попросите: открыть её в браузере под аккаунтом Яндекса, которому принадлежат нужные сегменты (или которому они доверены), подтвердить доступ на чтение и изменение сегментов и прислать показанный код подтверждения. Полученный код передайте в finish_login. Код действует 10 минут. Сам по себе код бесполезен для постороннего: обменять его может только этот сервер.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context: the returned link is for OAuth, the code expires in 10 minutes, and only this server can exchange the code, which is a useful security disclosure. It does not contradict the annotations, but it could mention what happens if the user is already authenticated or the outcome of the step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized with six sentences, each contributing useful information: purpose, return value, user instructions, handoff to finish_login, code validity, and security. It is slightly verbose but not padded, and the key message (first step, returns OAuth link) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is fairly complete: it explains the return value, the required user actions, the next step, and the code's validity and security. It does not describe the exact format of the returned link or edge cases, but these are not critical for invoking this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so schema coverage is trivially 100%. Per the rubric, 0 parameters is a baseline 4; the description has no parameter details to add, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is the first step of connecting Yandex Audiences and that it returns a link to the Yandex OAuth page, using a specific verb ('start' / 'Первый шаг') and resource. It distinguishes itself from sibling tools by explicitly naming finish_login as the next step and noting that no config changes or restart are required.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it is the first step, and after receiving the confirmation code the agent must pass it to finish_login. This directly indicates when to use this tool versus the sibling completion step, and the user instructions clarify the flow. It effectively communicates the when and the handoff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pixelПереименовать пиксельAIdempotent
Изменяет указанный пиксель (в схеме изменения доступно только поле name — переименование). Ответ — {"pixel": {...}} с обновлёнными данными.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Новое название пикселя. | |
| pixel_id | Yes | Идентификатор пикселя (id из list_pixels). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and destructiveHint=false, but the description adds valuable behavioral context: the operation is strictly a rename, and the response format is disclosed as {"pixel": {...}} with updated data. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary action and includes the key constraint and response shape. No redundant information is present, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter update tool with rich annotations and full schema coverage, the description is sufficiently complete: it explains the exact scope of the update, the response format, and the requirement of pixel_id. Minor gaps like error handling are not necessary for this simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage with clear descriptions for both name and pixel_id, so the description adds marginal semantic value. It reinforces that only name is changeable, but this is also inferable from the schema, which lists name as the only mutable property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Changes' with a resource 'specified pixel' and immediately clarifies the scope as 'only the name field — renaming'. This clearly distinguishes it from siblings like delete_pixel and aligns with the title 'Переименовать пиксель'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys that this tool is for renaming only, as it explicitly states 'only the name field is available for change', providing clear context for when to use it. It doesn't explicitly mention alternatives, but the sibling list includes rename_segment for segments, so the intended use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_segment_csv_fileЗагрузить CSV-файл сегмента (CRM-данные)A
Создаёт сегмент из CSV-файла с CRM-данными. Первая строка — заголовок: колонки email, phone, ext_id (или external_id) и произвольные дополнительные поля; минимум 100 записей, до 1 ГБ. Это первый шаг двухфазного создания: в ответе сегмент со статусом uploaded и его id — затем сегмент нужно сохранить инструментом confirm_segment (content_type: crm). Источник данных: file_path (путь к локальному файлу) или content (содержимое строкой) — ровно одно из двух. Квота на создание сегментов: 10/мин, 100/час, 500/сутки.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Содержимое файла строкой (для небольших сегментов). Укажите либо content, либо file_path (ровно одно). | |
| file_name | No | Имя файла для загрузки. По умолчанию — имя из file_path или стандартное имя. | |
| file_path | No | Путь к локальному файлу с данными. Укажите либо file_path, либо content (ровно одно). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral traits: the two-phase creation flow, the uploaded status and id in the response, the need for subsequent confirmation, the 100-record minimum and 1 GB maximum size, and the creation rate limits (10/min, 100/hour, 500/day).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence contributes essential information: file format, constraints, two-phase flow, data source options, and quotas. It is front-loaded with the primary purpose and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-phase tool with no output schema, the description covers all necessary context: input format, source selection, size limits, status semantics, next step, and rate limits. It is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% description coverage for all three parameters, including the 'exactly one' constraint. The tool description repeats this constraint but does not add new parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a segment from a CSV file with CRM data, using a specific verb and resource. It also distinguishes itself from siblings by emphasizing the CSV format and the two-phase creation flow with confirm_segment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is the first step of a two-phase process, followed by confirm_segment. It also clarifies the data source must be exactly one of file_path or content. However, it does not explicitly contrast with the sibling upload_segment_file, so it lacks a direct when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_segment_fileЗагрузить файл сегмента (device id / MAC / хеши)A
Создаёт сегмент из TSV/TXT-файла с данными: идентификаторы устройств (IDFA/GAID), MAC-адреса или SHA256-хеши, по одной записи в строке; минимум 100 записей, до 1 ГБ, UTF-8. Это первый шаг двухфазного создания: в ответе сегмент со статусом uploaded и его id — затем сегмент нужно сохранить инструментом confirm_segment (имя, тип содержимого, хеширование). Источник данных: file_path (путь к локальному файлу) или content (содержимое строкой) — ровно одно из двух. Квота на создание сегментов: 10/мин, 100/час, 500/сутки.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Содержимое файла строкой (для небольших сегментов). Укажите либо content, либо file_path (ровно одно). | |
| file_name | No | Имя файла для загрузки. По умолчанию — имя из file_path или стандартное имя. | |
| file_path | No | Путь к локальному файлу с данными. Укажите либо file_path, либо content (ровно одно). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description reveals important behaviors: creation is non-idempotent (first step of two-phase), creates a segment with status 'uploaded' and an id, requires subsequent confirmation, and imposes quotas (10/min, 100/hour, 500/day). These details add substantial context beyond the structured annotations and are not contradicted by them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, and each sentence provides necessary information (create action, format/constraints, two-phase workflow, parameter source, quotas). There is no redundancy or filler; every word contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description adequately covers the response (segment with status 'uploaded' and its id), the mandatory follow-up (confirm_segment), and edge constraints (min records, max size, quotas). It also clarifies the parameter exclusivity rule, making the tool fully understandable for correct invocation despite its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for each parameter (content, file_name, file_path) and explicitly states the 'exactly one' exclusivity. The description adds value by reinforcing the source data choice ('ровно одно из двух') and contextualizing the parameters with file format constraints (TSV/TXT, UTF-8, record count, size limit). Since the schema is thorough, the description supplements rather than carries the burden, but it still exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Создаёт сегмент из TSV/TXT-файла с данными' (Creates a segment from a TSV/TXT file). It explicitly differentiates from the sibling tool upload_segment_csv_file by specifying TSV/TXT format, and outlines the two-phase process, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool: as the first step of a two-phase process, followed by confirm_segment. It also specifies data source requirements (file_path or content, exactly one) and format constraints (UTF-8, min 100 records, max 1 GB), effectively guiding the agent on appropriate usage without needing to reference a separate tool for the same purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.1.1- Added
auth_status - Added
finish_login - Added
logout - Added
start_login
16 tool updates
v0.1.0- First observed
add_segment_grant - First observed
confirm_segment - First observed
create_lookalike_segment - First observed
create_pixel - First observed
create_pixel_segment - First observed
delete_pixel - First observed
delete_segment - First observed
delete_segment_grant - First observed
list_pixels - First observed
list_segment_grants - First observed
list_segments - First observed
raw_request - First observed
rename_segment - First observed
update_pixel - First observed
upload_segment_csv_file - First observed
upload_segment_file
TDQS
Most tools are clearly distinct by resource (segments, pixels, grants) and action. The only potential confusion is between upload_segment_file and upload_segment_csv_file, but their descriptions clearly differentiate by file format and use case.
All tool names follow a consistent verb_noun or verb_noun_specific pattern in snake_case (list_segments, create_pixel, delete_segment_grant). The single exception raw_request is an intentional escape hatch but still follows the request-oriented naming.
With 16 tools, the server is at the upper boundary of the typical well-scoped range, but the domain naturally requires separate tools for segments, pixels, grants, and two-phase file uploads. Each tool serves a clear purpose.
The tool set covers the full lifecycle for segments (create via upload, confirm, rename, delete, lookalike, pixel-based), pixels (list, create, update, delete), and grants (list, add, delete). Missing endpoints like reprocess or undelete are accessible via raw_request.
Maintenance
Related MCP Connectors
Google Ads MCP server — manage campaigns, keywords, and metrics.
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Speech-to-Text
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server for interacting with Yandex Cloud AI Studio, enabling chat, text generation, image generation, speech recognition/synthesis, embeddings, classification, search indexes, and AI agent creation with function calling.-
- AlicenseAqualityAmaintenanceMCP server for Yandex Metrica analytics: query web analytics metrics, goals, conversions, and raw API data using natural language from AI clients like Claude and Cursor.81131MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives AI agents direct access to the Yandex Direct API to manage campaigns, groups, ads, keywords, bids, and reports via natural language.1176Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for Yandex Metrika API, enabling reporting, counter management, goals, filters, and other operations via natural language.122MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/A1-x-Tech/mcp-yandex-audience'
If you have feedback or need assistance with the MCP directory API, please join our Discord server