Yandex Direct MCP
Яндекс Директ MCP
Яндекс Директ MCP подключает AI-приложение к рекламному кабинету Яндекс Директа. Спросите на естественном языке, куда уходит рекламный бюджет, сопоставьте кампании, объявления и ключевые фразы, а затем подготовьте или внесите нужные изменения без переходов между разделами кабинета. Подключение начинается прямо в диалоге: не нужно заранее создавать токен или редактировать конфигурацию.
43 инструмента. Кампании, группы, объявления, ключевые фразы, ставки, корректировки, расширения, статистика, баланс, справочники и подключение аккаунта прямо в диалоге.
Два способа подключения. Удалённый сервер по URL не требует вручную получать токен и только читает данные; локальный через
npxдаёт полный доступ к кабинету.Подключение в чате. Яндекс откроет страницу входа; после кода из чата можно сразу работать с рекламой, а доступ действует около года.
Деньги в понятном виде. В удобных инструментах бюджеты, ставки и баланс показываются в валюте аккаунта, а не в микроединицах API.
Реальная реклама. Локальные изменения применяются в боевом кабинете и могут повлиять на расход. Для работы в тестовой среде есть песочница Яндекс Директа.
Попробуйте первым сообщением:
Покажи кампании моего аккаунта и расход за прошлую неделю по группам объявлений.
Подключить сервер · Посмотреть сценарии · Открыть техническую документацию
Увидеть работу за минуту
Вы: Подключи Яндекс Директ.
Ассистент: Даёт ссылку на вход в Яндекс. Откройте её под аккаунтом с доступом к нужному рекламному кабинету, подтвердите доступ и пришлите показанный код.
Вы: Отправляет код со страницы Яндекса.
Ассистент: Подключает Директ и показывает кабинет. Перезапускать приложение не нужно.
Вы: Покажи кампании моего аккаунта и расход за прошлую неделю по группам объявлений.
Ассистент: Находит кампании, строит отчёт по группам объявлений и показывает расход в валюте аккаунта.
Related MCP server: Yandex MCP Server
Содержание
Быстрый старт
Выберите способ подключения и добавьте сервер в AI-приложение по инструкции ниже.
Откройте новый диалог и спросите: «Покажи кампании моего аккаунта и расход за прошлую неделю по группам объявлений».
Анализ без самостоятельного получения токена — по URL
Удалённый сервер https://mcp.askads.ru/mcp подключается через приложение, которое поддерживает MCP по URL. Войдите в Яндекс в браузере и подтвердите доступ: токен не нужно передавать в конфиг. Этот вариант предназначен только для чтения — статистики, аудита и просмотра объектов; он не меняет настройки рекламы.
В Claude Code можно добавить его командой:
claude mcp add --transport http yandex-direct https://mcp.askads.ru/mcpПосле подключения откройте /mcp и пройдите авторизацию. В остальных поддерживающих HTTP MCP приложениях добавьте тот же URL через интерфейс приложения.
Полный доступ — локально через npx
Для создания и изменения объектов нужен Node.js 20+. npx скачает сервер при первом запуске — отдельно устанавливать пакет не нужно. Получать токен заранее не требуется — подключение начинается прямо в диалоге:
Добавьте сервер в AI-приложение — ниже открыт пример для Codex, остальные приложения собраны в сворачиваемые инструкции.
Напишите: «Подключи Яндекс Директ» — ассистент проведёт через вход в Яндекс и покажет кабинет.
Для CI и агентских установок — готовый токен и YANDEX_DIRECT_LOGIN, см. Подключение и настройка.
Через интерфейс приложения:
Откройте Settings → Plugins → MCP servers.
Нажмите Add server.
Добавьте команду запуска
npx -y mcp-yandex-direct@latest.
Через командную строку:
codex mcp add yandex-direct -- npx -y mcp-yandex-direct@latestПроверьте подключение:
codex mcp listclaude mcp add --transport stdio --scope user yandex-direct -- npx -y mcp-yandex-direct@latestПроверить подключение: claude mcp list.
Откройте Settings → Developer → Edit Config и добавьте в claude_desktop_config.json:
{
"mcpServers": {
"yandex-direct": {
"command": "npx",
"args": ["-y", "mcp-yandex-direct@latest"]
}
}
}Если раздела Developer нет, откройте файл вручную: macOS — ~/Library/Application Support/Claude/claude_desktop_config.json, Windows — %APPDATA%\Claude\claude_desktop_config.json. Перезапустите Claude Desktop.
Откройте ~/.cursor/mcp.json, чтобы подключить сервер во всех проектах, или .cursor/mcp.json в конкретном проекте. Добавьте:
{
"mcpServers": {
"yandex-direct": {
"command": "npx",
"args": ["-y", "mcp-yandex-direct@latest"]
}
}
}В палитре команд выполните MCP: Open User Configuration. В открывшемся mcp.json добавьте сервер:
{
"servers": {
"yandex-direct": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-yandex-direct@latest"]
}
}
}После сохранения выполните MCP: List Servers и запустите сервер из списка.
Что можно поручить
Проверить, как расходуется бюджет
«Какие кампании за прошлую неделю потратили больше всего?»
«Какие объявления получают показы и клики, но не дают конверсий?»
«Сравни расход, CTR и среднюю цену клика по кампаниям за месяц».
«Покажи баланс счёта и остаток дневной квоты API».
«Покажи клиентов агентства» и «Какие кампании идут у клиента shop-msk?» — клиент выбирается прямо в диалоге.
«Что у меня по аккаунтам в управлении?», «Сколько вчера потратил каждый клиент?» — сводка по балансу, кампаниям и расходу всех клиентов за один вызов.
Найти точки для улучшения
«Какие ключевые фразы тратят бюджет, но не приносят кликов?»
«Какие группы и объявления сейчас остановлены или не проходят модерацию?»
«Проверь, какие корректировки ставок действуют для мобильных устройств».
«Какие быстрые ссылки и уточнения есть у этой кампании?»
Подготовить изменения
«Предложи новые ставки для фраз с высоким CTR и покажи изменения до применения».
«Проверь, есть ли в кампании минус-слова для этой темы, и подготовь список».
«Собери параметры новой текстовой кампании для Москвы: бюджет, группы, ключевые фразы и объявления».
Выполнить явное действие
«Добавь эти ключевые фразы в группу 123 и установи ставку 45 ₽».
«Приостанови объявление 456».
«Отправь страницу с изображением в библиотеку объявлений».
Как это работает
Реклама обычно строится из трёх уровней: кампания → группа объявлений → объявление. В группе находятся ключевые фразы, настройки показа и корректировки ставок. У объявлений могут быть быстрые ссылки, уточнения и изображения.
Сервер помогает смотреть на эти объекты вместе: связать расход кампании со статистикой групп, ключевыми фразами и объявлениями. Он умеет создавать новые кампании и объявления только текстового типа. Кампании других типов можно читать, переименовывать, менять им бюджет, останавливать, архивировать и удалять по идентификатору.
Статистика формируется не мгновенно: get_statistics запускает отчёт в сервисе Reports и ждёт его готовности. Большие списки autoPaginate проходит по страницам выдачи автоматически.
Что может изменить данные
Удалённый сервер по URL только читает данные. Локальный сервер через npx может изменить живой рекламный кабинет:
Действие | Что происходит | На что обратить внимание |
Читать статистику и объекты | Сервер получает кампании, объявления, ключевые фразы, баланс и отчёты. | Эти вызовы не меняют данные и не двигают деньги. |
Создавать | Можно создать текстовую кампанию, группу, текстовое объявление, ключевые фразы, расширения или загрузить изображение. | Новые объекты попадут в боевой кабинет, если не включена песочница. |
Обновлять | Можно менять бюджет, ставки, названия, минус-слова, настройки групп и корректировки ставок. | Изменение ставок и бюджетов может повлиять на расход. |
Менять статус или удалять | Можно приостановить, возобновить, архивировать или удалить некоторые объекты. | Удаление и отдельные действия необратимы. |
Прямой запрос API |
| Любой метод, кроме чтения, требует |
Инструменты передают AI-приложению метки чтения, записи и потенциально необратимого действия. Приложение может показать подтверждение, но его поведение зависит от клиента. Прямой запрос API дополнительно не выполнит запись без confirmWrite=true; для изменения рекламы нужна явная просьба.
Подключение и настройка
Для обычного использования токен заранее не нужен:
В чате попросите подключить Яндекс Директ.
Откройте ссылку на Яндекс OAuth под аккаунтом с доступом к нужному рекламному кабинету.
Подтвердите доступ и пришлите в чат показанный код. Всё, можно работать с рекламой: перезапускать клиент не нужно, конфигурацию править тоже.
Доступ действует около года. Когда он истечёт или будет отозван, сервер попросит подключиться заново тем же способом. Автоматическое продление работает только с собственным OAuth-приложением: задайте YANDEX_DIRECT_OAUTH_CLIENT_ID и YANDEX_DIRECT_OAUTH_CLIENT_SECRET, потому что Яндекс не продлевает токены без секрета приложения. Проверить состояние — попросите «покажи статус подключения», отключить — «отключи Директ». Выданный доступ отзывается в Яндекс ID.
Для CI и автоматических установок, где диалога нет, доступна настройка через переменные окружения:
Переменная | Назначение |
| Готовый OAuth-токен; имеет приоритет над входом из чата. |
| Клиент по умолчанию для агентского аккаунта; иначе API покажет аккаунт агентства. Любой инструмент принимает и |
| Логины кабинетов в управлении через запятую (вы — представитель, не агентство). API их не перечисляет, поэтому список для |
|
|
| Client ID собственного OAuth-приложения вместо встроенного. |
| Секрет этого приложения. Нужен только для автоматического продления доступа: без секрета Яндекс токен не продлевает. |
| Язык ответов API; по умолчанию |
| Таймаут запроса; по умолчанию 60 000 мс. |
| Число повторов при временных ошибках; по умолчанию 3. |
Получить готовый токен для YANDEX_DIRECT_TOKEN можно по ссылке, войдя под аккаунтом с доступом к нужному кабинету:
Не публикуйте токен в чатах, репозиториях и скриншотах: он даёт доступ к рекламному кабинету, включая действия, которые могут повлиять на бюджет.
Данные и телеметрия
По умолчанию сервер отправляет анонимные технические события: случайный идентификатор установки, название вызванного инструмента, версии сервера, AI-приложения, Node.js и операционной системы. Это нужно, чтобы понимать, какие части сервера используются и возникают ли проблемы при запуске. При вызове инструмента сервер также отправляет его исход, а при ошибке - фрагмент её текста: код и сообщение, в которых e-mail, адреса, токены, числа от 4 цифр и текст в кавычках заменены на «#». Если в тексте ошибки есть значение из запроса, оно тоже может попасть во фрагмент. Токен Яндекса, данные рекламного кабинета, аргументы инструментов, тексты запросов, значения и названия переменных окружения не отправляются.
Чтобы отключить телеметрию для MCP-серверов Ask Ads, задайте переменную окружения:
ASKADS_TELEMETRY=0Ограничения
Дневная квота API. Каждый вызов расходует Units. Инструмент
get_quotaпоказывает, сколько потрачено, осталось и доступно на сегодня.Лимиты отчётов. У отчётов Яндекса есть собственные ограничения на объём и количество в сутки, а готовность отчёта в сервисе Reports приходится ждать.
Большие списки. Если при автоматической пагинации достигнут внутренний предел, сервер явно отмечает результат как неполный, а не скрывает это.
Временные ошибки. Сервер делает до трёх повторов при ограничениях частоты. Ошибки сети и сервера автоматически повторяются только для чтения, чтобы не продублировать изменение.
Боевой кабинет. Локальные изменения применяются в реальном рекламном кабинете и могут повлиять на расход. Для тестов используйте песочницу (
YANDEX_DIRECT_SANDBOX=true).Нет постоянного наблюдения. Сервер работает во время вызова из AI-приложения. Если приложение поддерживает регулярные задания, можно настроить периодический запрос для проверки нужных показателей.
Техническая документация
Каталог MCP-возможностей — страницы по пользовательским задачам для каждого инструмента.
Все инструменты — параметры, ответы и границы каждого инструмента.
Разработка — устройство проекта и работа с исходным кодом.
API Яндекс Директа — первоисточник по API и его ограничениям.
Пакет npm — опубликованные версии сервера.
Поддержка
Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.
Available Tools
43 toolsad_actionДействие с объявлениямиCDestructive
Выполняет действие над объявлениями по id: moderate, suspend, resume, archive, unarchive или delete.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id объявлений, к которым применить действие. | |
| action | Yes | ||
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond repeating the action enum: it does not say whether delete is irreversible, whether suspend loses settings, or what preconditions (campaign state, moderation) apply.
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?
A single front-loaded sentence with no filler; the enumeration is dense but necessary. Slightly long action list aside, nothing is wasted.
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 destructive, non-idempotent multi-action tool with no output schema, the description leaves key questions unanswered: which operations are reversible, what state transitions are invalid, and what the call returns. The action semantics are the main gap.
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 67% and both ids and client_login carry descriptions (including the login fallback logic). The action enum itself has no description in the schema, and the tool description only echoes the values without explaining what moderate or archive vs delete actually do.
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?
Names a specific verb (выполняет действие) and resource (объявления) and enumerates the allowed operations, so an agent understands it is a state-change tool over ad IDs. It implicitly separates itself from list_ads/update_text_ad by listing lifecycle actions only, though it never states the contrast explicitly.
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?
There is no guidance on when to choose this tool over update_text_ad (content edits) or delete_ad_groups (group-level deletion). The presence of both archive/unarchive/delete in one tool makes routing decisions non-obvious, yet nothing addresses them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_bid_modifierДобавить корректировку ставокA
Добавляет корректировку ставок на кампанию или группу объявлений. Значения BidModifier — проценты по правилам API (например, 0–1300), а не деньги. API принимает в одном элементе BidModifiers только один тип корректировки, поэтому каждый переданный тип (mobile, desktop, demographics, retargeting, regional) уходит отдельным элементом в одном вызове bidmodifiers/add, в этом порядке. Каждая запись AddResults помечена полем Type (MOBILE_ADJUSTMENT, DESKTOP_ADJUSTMENT, DEMOGRAPHICS_ADJUSTMENT, RETARGETING_ADJUSTMENT, REGIONAL_ADJUSTMENT): типы создаются независимо, при частичной ошибке повторять только типы с Errors. Внутри одного типа (массивы demographics/retargeting/regional) API создаёт всё или ничего.
| Name | Required | Description | Default |
|---|---|---|---|
| mobile | No | Корректировка для мобильных. | |
| desktop | No | Корректировка для десктопа. | |
| regional | No | Корректировки по регионам. | |
| adGroupId | No | Id группы объявлений (либо это поле, либо campaignId). | |
| campaignId | No | Id кампании (либо это поле, либо adGroupId). | |
| retargeting | No | Корректировки по ретаргетингу. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| demographics | No | Корректировки по демографии. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, destructive=false, idempotent=false) by disclosing the percentage domain (0–1300, not money), the one-type-per-element API constraint and the deterministic emission order, the Type field stamping each AddResults entry, and precise partial-failure semantics (retry only the types with Errors) versus all-or-nothing within a single type.
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?
Four dense sentences, all front-loaded and all load-bearing: purpose, value semantics, request shaping, response/error handling. Slightly compression-heavy, but nothing is redundant.
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 8 optional params, nested objects and no output schema, the description covers what a caller most needs: value units, how the payload is split, and how to interpret and retry from AddResults. The only remaining gap is that return-shape detail is described only enough to explain retry, and the campaignId/adGroupId either-or is left to the schema.
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 already 100%, so the baseline is 3, but the description adds genuine meaning on top: percent values follow API percentage rules (0–1300) rather than currency, and it enumerates the five type keys (mobile, desktop, demographics, retargeting, regional) mapped to their adjustment types. It doesn't clarify the campaignId/adGroupId mutual exclusion that the schema hints at.
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?
Opens with a precise verb+resource in the imperative ('Добавляет корректировку ставок на кампанию или группу объявлений') and names the underlying API method (bidmodifiers/add), so an agent knows exactly what is created. However, it never contrasts itself with the sibling set_bid_modifiers or delete_bid_modifiers, leaving the add-vs-overwrite distinction implicit.
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?
Usage is only implied through the mechanics described (one modifier type per element sent as separate items in a single call, in that order). There is no explicit statement of when to call this versus set_bid_modifiers, which in the sibling list is the obvious alternative for the same resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_calloutsДобавить уточненияA
Создаёт уточнения, до 25 символов каждое, не более 1000 за вызов. Уточнения неизменяемы — чтобы поменять, нужно удалить и создать заново. Привязка к объявлениям — через сервис Ads.
| Name | Required | Description | Default |
|---|---|---|---|
| texts | Yes | Тексты уточнений, до 25 символов каждый, не более 1000 за вызов. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds substantive behavioral context: the 25/1000 limits, the immutability constraint forcing delete+recreate, and that ads binding happens in a separate Ads service. This is real value beyond the annotations, though it omits what the response contains for the newly created items.
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 short sentences, zero waste, and the core creation action plus limits are front-loaded before the immutability caveat. Every sentence earns its place.
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 mutation tool with full annotation coverage and no output schema, the description covers creation semantics, limits, immutability, and cross-service binding. It is nearly complete; the main gap is that it doesn't indicate whether the response returns created callout IDs needed for the Ads-side binding.
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%, so both parameters (texts, client_login) are already documented in the schema, including the client_login fallback logic. The description repeats the 25/1000 constraint that the schema already encodes, adding no new parameter semantics. 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 states a specific verb+resource ("Создаёт уточнения" = creates callouts) with scope limits (25 chars, 1000/call). It is clear what the tool does, though it doesn't explicitly name the sibling it differs from (get_callouts/delete_callouts are only implied by the immutability note).
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 implies usage via the immutability note ("to change, delete and recreate") and the cross-service binding note ("binding to ads — via Ads service"), which is helpful routing context. However, it never explicitly says when to use this vs get_callouts/delete_callouts or what preconditions (a client_login) select a different path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_keywordsДобавить ключевые фразыB
Добавляет ключевые фразы в группу объявлений, при необходимости — со ставками для поиска и сетей.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Ключевые фразы для добавления. | |
| adGroupId | Yes | Id группы объявлений. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a mutation (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety profile is covered. The description adds only that bids are optional per channel; it does not explain behavior on duplicate/existing keywords or what happens if a bid is supplied for an existing phrase, which is the non-obvious part of a non-idempotent add.
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?
A single front-loaded sentence that names the action and its optional refinement with no waste. It is efficient, though extremely terse for a mutation 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?
With no output schema but a fully described input schema and annotation coverage of the safety profile, the description is minimally adequate. For a non-idempotent mutation it should say more about how duplicates or bid conflicts are handled, and it gives no indication of the return value.
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 all three parameters and nested bid/contextBid/keyword fields are already documented. The description's mention of optional search and network bids merely restates schema content without adding format, constraints, or currency nuances beyond it — baseline 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?
States a specific verb and resource (adds keywords to an ad group) with the additional scope that bids for search and networks are optional. An agent can tell this is an add operation, distinct from list_keywords or set_keyword_bids, though the description never names those siblings.
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 the tool applies (adding new keywords to a group) but gives no explicit when-to-use versus alternatives, no note on whether to use keyword_action or set_keyword_bids for other keyword operations, and no prerequisites such as needing an existing ad group id.
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_DIRECT_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты Директа отвечают, что подключение не настроено.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent, and the description adds important behavioral context: it makes no network calls and never displays the token itself. It also explains where the token comes from and where saved data resides, which is valuable beyond 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 is compact, front-loaded with the core status information, and then adds the safety guarantee and usage trigger. 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 zero-parameter, read-only diagnostic tool, the description covers what the tool checks, what it will not do, and when to invoke it. The exact output format is not described, but the tool's purpose is simple enough that this is a minor gap.
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 input schema is complete, so there is nothing for the description to compensate for. The description correctly implies no external input is needed.
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 identifies a specific verb and resource: it shows whether Yandex Direct is connected, with concrete details like token presence, source, expiry, and file location. This clearly distinguishes it from sibling tools like start_login, finish_login, and direct API 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 gives an explicit trigger condition: call this when Direct tools report that the connection is not configured. It doesn't explicitly discuss when not to use it or compare it to login/logout alternatives, but the intended diagnostic use is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaign_actionДействие с кампаниямиBDestructive
Выполняет действие над кампаниями по id: suspend, resume, archive, unarchive или delete.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id кампаний, к которым применить действие. | |
| action | Yes | ||
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is fully carried by structured fields. The description adds no behavioral context beyond them: it does not say that delete is irreversible while suspend/resume are reversible, whether partial failures are possible across the id list, or what permissions/client scope are needed.
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?
A single front-loaded sentence that states the verb, the target, and the complete action vocabulary with zero filler. Nothing is wasted and the key enumeration is not buried.
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?
This is a destructive batch mutation with no output schema, and the description never addresses the return shape (per-id success/failure, partial completion) or irreversibility. Given the tool's blast radius across multiple campaign ids, more operational guidance is expected.
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 a moderate 67% and both the action enum and client_login fallback behavior (YANDEX_DIRECT_LOGIN / token's own account) are already documented in the schema. The description only restates that ids target campaigns, adding no format, ordering, or batching 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 names a specific verb ('Выполняет действие') and resource ('над кампаниями по id') and enumerates the exact action set (suspend, resume, archive, unarchive, delete), so an agent knows precisely what this does. It stops short of differentiating from close siblings such as update_campaign or ad_action, which would be needed for a 5.
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?
Usage is implied by the enumerated action list rather than stated: there are no when-to-use, when-not-to-use, or alternative-routing sentences (e.g. use update_campaign to change settings instead of this). An agent can infer the batch-state-change role but must guess relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clients_overviewСводка по клиентамARead-onlyIdempotent
Сводка по всем клиентам агентства и кабинетам в управлении за один вызов — для вопросов вроде «что у меня по аккаунтам в управлении»: по каждому клиенту баланс общего счёта и число кампаний по состояниям (on — идут или могут идти, suspended — остановлены пользователем, off — не идут по другой причине, ended) и статусам модерации (moderation, rejected, draft). Архивные кампании не считаются. Клиенты — из list_clients, либо явный список logins. Ошибка по одному клиенту (нет доступа, нет общего счёта) не прерывает остальных и попадает в его строку. С параметром stats добавляет показы, клики и расход (с НДС, в валюте клиента) за период — по одному отчёту Reports на клиента, строго по очереди: Яндекс пускает примерно один отчёт в 10 секунд, так что 30 клиентов — около 5 минут; клиенты без неархивных кампаний не запрашиваются, а кто не уложился в 5 минут, помечается statsSkipped. Без stats ответ приходит за секунды — запрашивать расход, только когда вопрос про деньги или трафик. Не вызывать list_campaigns по каждому клиенту в цикле — эта сводка дешевле. Тратит баллы API каждого клиента: один запрос кампаний на клиента и один запрос баланса на 50 клиентов у агентства (у обычного аккаунта — на каждого).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько клиентов обойти, 1–200. По умолчанию 50. | |
| stats | No | Добавить показы, клики и расход за этот период. Медленно: около 10 с на клиента. | |
| logins | No | Только эти логины клиентов. По умолчанию — все из list_clients. | |
| search | No | Только клиенты, у которых логин или название содержит эту подстроку. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is free; the description instead adds non-obvious operational traits: archival campaigns excluded from counts, per-client errors isolated into that row rather than aborting the call, a ~1 report/10s rate limit (~5 min for 30 clients), and a statsSkipped marker for stragglers. It also discloses API-point cost per client and the 50-client balance batching. Only gap: it does not describe response ordering or how the row shape looks beyond the fields mentioned.
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?
It is one long paragraph, but front-loaded with the purpose and the core semantics before cost details. Almost every sentence carries a decision-relevant fact (fast vs slow path, error isolation, point cost). It could be split into purpose / cost / output sections for faster scanning, which keeps it from a 5.
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?
No output schema exists, so the description carries the return-shape burden and does: per-client general-account balance, campaign counts split by state (on/suspended/off/ended) and moderation status, plus per-row error text and statsSkipped. Combined with disclosed latency and cost, an agent has everything needed to choose and call it 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%, so the 3 baseline applies, but the description genuinely adds semantics: clients come from list_clients unless an explicit logins list is given, stats pulls impressions/clicks/spend with VAT in the client's own currency, and the 5-minute ceiling explains why statsSkipped appears. The limit parameter's interaction with traversal is left to the 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?
The first sentence names a specific resource and scope: an aggregate summary over all agency clients and managed accounts in one call. It explicitly differentiates from siblings by naming list_clients as the source of clients and warning against looping list_campaigns per client. An agent can distinguish this from get_balance, get_statistics, and list_campaigns without opening any schema.
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 gives a concrete triggering question («что у меня по аккаунтам в управлении») and an explicit conditional: request stats only when the question is about money or traffic, otherwise the fast path applies. It also names the anti-pattern alternative (looping list_campaigns) and states this summary is cheaper, so the when-not is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ad_groupСоздать группу объявленийB
Создаёт группу объявлений в кампании с заданными регионами показа.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название группы объявлений. | |
| regionIds | Yes | Id регионов показа, например [225] — Россия. | |
| campaignId | Yes | Id родительской кампании. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutating, non-idempotent character is covered structurally. The description adds only that regions are part of creation — no mention of required permissions, whether a duplicate name errors, or what the call returns (notably absent, since there is no output 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?
A single front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification for a mutation tool rather than ideal trimming.
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?
Safety profile is covered by annotations and parameters are fully documented in the schema, so the minimum is met. However, with no output schema, an agent gets no indication of the return value (e.g., the created ad group's id) or failure modes, which the description could have supplied.
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%, including a worked example for regionIds, a pattern and fallback chain for client_login, so the schema carries the semantics. The description only restates that regions and a campaign are involved, adding no new parameter meaning — baseline 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 uses a specific verb+resource ('Создаёт группу объявлений') and adds scope ('в кампании с заданными регионами показа'). It is naturally distinguished from update_ad_group/delete_ad_groups/list_ad_groups by the verb, though it never names those siblings explicitly.
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?
There is no explicit when-to-use or when-not guidance, no mention that a parent campaign must already exist, and no routing to alternatives like update_ad_group. Usage is only implied by the phrase 'в кампании'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sitelinks_setСоздать набор быстрых ссылокA
Создаёт набор быстрых ссылок (1–8 штук). Лимиты API: текст ссылки до 30 символов, описание до 60, URL до 1024 (с протоколом и доменом); длиннее API отвечает «Превышена допустимая длина», поэтому сокращать заранее. Наборы неизменяемы — чтобы поменять ссылки, нужно создать новый набор и переназначить его объявлению.
| Name | Required | Description | Default |
|---|---|---|---|
| sitelinks | Yes | От 1 до 8 быстрых ссылок. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) by disclosing the actual API limits (30/60/1024 chars), the exact error returned when exceeded ('Превышена допустимая длина'), the advice to truncate beforehand, and the immutability of created sets. That is precisely the behavioral context an agent needs before a write call.
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, front-loaded with the operation, then constraints, then the immutability consequence. Dense and purposeful, with only minor redundancy against the schema's maxLength 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 mutation tool with no output schema, annotations covering safety, and fully documented parameters, the description is nearly complete — limits, error behavior, and immutability are all covered. The gap is the return value: since the new set must be 'переназначен объявлению', the agent needs to know an identifier comes back, which is neither in the description nor in an output schema.
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% and the schema already documents each field's maxLength, so the baseline is 3. The description adds value by explaining the consequence of exceeding those lengths (API error) and by reinforcing the 1–8 item range, though it repeats the character limits already in the 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?
States a specific verb and resource with scope: 'Создаёт набор быстрых ссылок (1–8 штук)'. It is clearly distinguishable from the sibling read/delete tools (get_sitelinks, delete_sitelinks) by the create verb, but it never names those siblings explicitly.
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?
Gives clear usage context for the key decision: sets are immutable, so changing links requires creating a new set and reassigning it to an ad — which effectively routes the agent here for updates. It does not explicitly name alternatives (delete_sitelinks, get_sitelinks) or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_adСоздать текстовое объявлениеA
Создаёт текстовое объявление (TextAd) в группе объявлений. Новые объявления создаются черновиками. TextAdAdd требует хотя бы одно из Href/TurboPageId/BusinessId — этот инструмент передаёт посадочную страницу через href (обязателен); объявление с BusinessId вместо ссылки создаётся через raw_request. Визитки (VCardId) Директ больше не поддерживает: контакты задаются организацией из Яндекс Бизнеса (BusinessId). Директ создаёт такие объявления комбинаторными (тип RESPONSIVE_AD), а Title2 объединяет с Title через «. », если вместе они короче 56 символов, иначе отбрасывает; о таких изменениях API сообщает предупреждениями.
| Name | Required | Description | Default |
|---|---|---|---|
| href | Yes | URL посадочной страницы (обязателен для TextAdAdd). | |
| text | Yes | Текст объявления, до 81 символа. | |
| title | Yes | Заголовок (Title 1), до 56 символов. | |
| mobile | No | Мобильное ли это объявление. Поле в API устарело (значение принудительно NO), но остаётся обязательным. | |
| title2 | No | Второй заголовок (Title 2), до 30 символов. | |
| adGroupId | Yes | Id родительской группы объявлений. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that ads are created as drafts, that the API emits warnings about automatic field changes, and that Title2 may be merged with Title or dropped depending on the 56-character limit. It also explains the RESPONSIVE_AD combinatorial behavior and the VCard deprecation — behavior an agent cannot infer from annotations alone.
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?
A single dense paragraph that front-loads the creation action and draft status before the alternates and edge-case behaviors. Slightly long, but nearly every clause carries actionable information such as the href requirement and the Title2 merge behavior.
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?
Complete for a mutation tool with no output schema: it covers what gets created (a draft), required linkage (href), the raw_request escape hatch, and the API's warning-based field mutations. Nothing material is left for the agent to guess.
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%, so the baseline is 3, but the description adds real meaning: why href is required (TextAdAdd needs one of Href/TurboPageId/BusinessId), what VCardId no longer does, and how title2 interacts with title. This goes beyond the schema's simple length constraints.
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?
States a specific verb (creates) and resource (TextAd in an ad group) and clarifies scope against siblings by naming raw_request as the route for BusinessId-based ads and noting VCard is no longer supported. An agent can distinguish this from update_text_ad without opening either schema.
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 routes the agent to raw_request when the ad should use BusinessId instead of a landing page, and states href is mandatory here. It does not explicitly mention update_text_ad for modifications, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_campaignСоздать текстовую кампаниюA
Создаёт кампанию TextCampaign (текстово-графические объявления). Без biddingStrategy применяются ручные ставки на поиске с отключёнными сетями (Search HIGHEST_POSITION, Network SERVING_OFF); чтобы включить автостратегию или сети, передать biddingStrategy целиком — {Search, Network}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название кампании. | |
| endDate | No | Дата окончания в формате YYYY-MM-DD. | |
| startDate | Yes | Дата начала в формате YYYY-MM-DD. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| biddingStrategy | No | Полный объект BiddingStrategy {Search, Network}. Заменяет значение по умолчанию. | |
| dailyBudgetMode | No | Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. По умолчанию STANDARD. | |
| dailyBudgetAmount | No | Дневной бюджет в валюте аккаунта (конвертируется в микроединицы). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, open-world, non-idempotent write. The description goes beyond them by disclosing the hidden default applied when biddingStrategy is omitted (Search HIGHEST_POSITION, Network SERVING_OFF), which an agent could not infer from the schema. It stops short of stating permissions or the resulting object state.
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?
Two sentences, zero padding, with the default-behavior caveat front-loaded before the override instruction. Every clause carries actionable 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 7-parameter creation tool with a nested biddingStrategy object and no output schema, it covers the highest-risk default but leaves budget semantics, the created object's initial state (e.g. whether it is created stopped/draft), and what the call returns unaddressed.
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%, so baseline is 3, and the schema already describes biddingStrategy as replacing the default. The description restates that and adds the concrete default values, which is a modest but genuine gain; it says nothing about dailyBudgetMode/dailyBudgetAmount interaction or endDate behavior.
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 resource: 'Создаёт кампанию TextCampaign (текстово-графические объявления)', immediately telling the agent this creates a campaign container rather than an ad group or ad. It never names a sibling, but the campaign-vs-ad distinction is clear from the wording.
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 communicates one real usage decision: omit biddingStrategy to get manual Search bids with networks off, or pass biddingStrategy fully to enable an auto-strategy or networks. There is no guidance on when this tool is preferable to update_campaign, no prerequisites (client_login / auth), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ad_groupsУдалить группы объявленийADestructive
Удаляет группы объявлений по id (adgroups/delete). Вместе с группой удаляются её объявления и ключевые фразы; отменить это нельзя.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id групп, которые нужно удалить. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare destructiveHint=true and idempotentHint=false, the description adds crucial behavioral detail beyond them: deleting a group cascades to its ads and keywords, and the action cannot be undone. That is exactly the kind of consequence an agent needs before invoking a destructive tool.
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?
It is a single tightly packed sentence with the key operation and endpoint front-loaded, followed by the cascade and irreversibility warning. No wasted wording.
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 two-parameter delete tool with full schema coverage and strong destructive annotations, the description covers everything essential: what is deleted, the cascade effect, and the irreversibility. No output schema exists, so return-value detail is unnecessary.
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 both the ids and client_login parameters are already documented in the schema. The description only repeats that deletion is by id and adds no further parameter semantics, making the baseline 3 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 verb and resource in Russian: deletes ad groups by id, and even names the API endpoint (adgroups/delete). It is clearly distinguishable from siblings such as update_ad_group or list_ad_groups.
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 operation's usage is implied clearly enough — use it to delete ad groups by id — but there is no explicit guidance on when to choose this versus update_ad_group or list_ad_groups, nor any stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bid_modifiersУдалить корректировки ставокCDestructive
Удаляет корректировки ставок по id (bidmodifiers/delete).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id корректировок, которые нужно удалить. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing behavioral beyond that — it does not say deletions are permanent, whether the ids array is applied atomically or partially on failure, or what happens to running campaigns that referenced the modifiers.
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?
A single short sentence with the resource and keying mechanism front-loaded and no filler. It is concise, though part of that brevity comes from omitting useful context rather than from tight editing.
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?
Annotations carry the destructive profile, the schema fully documents both parameters, and no output schema exists, so the description is minimally sufficient. For a destructive batch delete it should still flag irreversibility or partial-failure behavior, which 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?
Schema coverage is 100%, including a description for 'ids' and a detailed fallback chain for 'client_login', so the schema carries parameter meaning. The description only echoes that deletion is by id, adding no format or batch-size detail beyond the schema — the baseline 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 states a specific verb and resource ('Удаляет корректировки ставок по id') plus the API endpoint (bidmodifiers/delete), so the agent can tell it apart from get_bid_modifiers, add_bid_modifier and set_bid_modifiers. It does not explicitly name those siblings as alternatives, which keeps it from a 5.
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?
There is no explicit guidance on when to delete versus using set_bid_modifiers to update or add_bid_modifier to re-create. The only usage signal is the preposition 'по id', leaving the agent to infer the workflow from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calloutsУдалить уточненияCDestructive
Удаляет уточнения по id (adextensions/delete).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id уточнений, которые нужно удалить. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the endpoint reference: it does not say whether deletion is permanent, what happens to ads referencing the callouts, or how partial failures across multiple ids are handled — significant gaps for a destructive batch tool.
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?
A single short sentence, front-loaded with the operation and immediately followed by the endpoint. No waste, though the extreme brevity reflects under-specification rather than disciplined concision.
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 destructive, non-idempotent batch delete with no output schema, the description should at minimum state irreversibility and error semantics. The schema and annotations cover parameters and the safety flag, but the consequences of invoking this tool are left entirely undisclosed.
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 both parameters (ids and the optional client_login fallback to YANDEX_DIRECT_LOGIN) are fully documented in the schema. The description's 'по id' merely echoes the schema, which is the expected baseline-3 outcome.
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?
States a specific verb and resource ('Удаляет уточнения по id') plus the underlying API endpoint (adextensions/delete), so an agent can tell it apart from get_callouts and add_callouts by the delete verb. It stops short of naming those siblings explicitly.
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 says nothing about when to use this versus add_callouts or get_callouts, and gives no preconditions — e.g. whether callouts must first be detached from ads or whether ids can refer to shared callout sets. Usage must be inferred entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sitelinksУдалить наборы быстрых ссылокADestructive
Удаляет наборы быстрых ссылок по id (удалить можно только наборы, не привязанные ни к одному объявлению).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id наборов, которые нужно удалить. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds valuable behavioral context beyond annotations by stating the unlinked-only restriction, which affects whether the call will succeed.
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 front-loaded sentence with no redundant restatement of the title. Every element, including the restriction, earns its place.
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 low-complexity destructive tool with full schema coverage and annotations, the description covers the essential precondition and identifier basis. It does not describe error behavior for linked sets, but the key constraint is present.
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%, and both parameters ('ids' and 'client_login') are documented in the schema. The description adds only that deletion is by ID, which is already evident from the schema, so 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 states a specific verb and resource ('Удаляет наборы быстрых ссылок') and the identifier basis ('по id'). The parenthetical restriction further narrows the operation and distinguishes it from sibling tools like get_sitelinks and create_sitelinks_set.
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 clearly states a key precondition: only sitelink sets not linked to any ad can be deleted. This gives useful when-not guidance, though it does not explicitly point to get_sitelinks for discovering IDs or name alternatives.
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 valuable behavior (file permission 0600, live verification, no restart needed, 10-minute TTL), but it contradicts the idempotentHint=true annotation by calling the code 'одноразовый' (one-time) and instructing a fresh code when it is not accepted. A one-time code means repeated calls with the same parameter cannot be idempotent, so the annotation conflict forces a score of 1.
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 with no filler; key action, side effects, success consequence, and failure handling are each given one focused sentence. The essential 'second step' context 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 one-parameter auth-completion tool, the description covers the prerequisite, file side effect, live validation, and failure recovery. Minor gaps remain: it does not describe the exact response/error shape or whether an existing token file is overwritten, but no output schema is present so these are not blocking.
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% and already defines 'code' as the confirmation code shown by Yandex. The description adds useful lifecycle semantics beyond the schema: the code is single-use, expires in 10 minutes, and must be refreshed via start_login 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 names a specific action and resource: it exchanges the confirmation code from start_login for an access token, saves it to an owner-only file, and verifies it with a live Direct request. It also frames itself as the 'second step of connection', which distinguishes it from start_login, logout, and auth_status.
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 states when to use the tool ('Второй шаг подключения', with a code from start_login) and what to do on failure: call start_login again for a fresh code. It also tells the agent that after success the rest of the tools work immediately, so sequencing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoДанные аккаунтаBRead-onlyIdempotent
Возвращает данные текущего аккаунта рекламодателя (логин, валюта, тип, страна) через сервис clients Яндекс Директа.
| Name | Required | Description | Default |
|---|---|---|---|
| fieldNames | No | Какие поля клиента вернуть. По умолчанию — типовой набор. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds that the call is served by the `clients` service and that a default field set applies when none is given, but it says nothing about permissions, token scope, or how restricted/agency logins affect the result.
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?
A single front-loaded sentence that states the action, the resource, the returned fields, and the backing service with no filler.
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 non-destructive two-parameter read with 100% schema coverage and no output schema, the description plus schema is nearly sufficient; only the sibling-selection guidance and the account-resolution fallback story are left implicit in the schema text.
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% and both parameters carry full descriptions (field enum, login pattern, fallback to YANDEX_DIRECT_LOGIN then the token's own account). The description adds nothing beyond the schema, so the baseline 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?
Specific verb+resource: returns data of the current advertiser account and names the backend service (`clients`) plus example fields (login, currency, type, country). It does not differentiate itself from neighbors like list_clients or clients_overview, which also return client data, so an agent must infer the boundary.
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?
There is no statement of when to use this rather than list_clients, clients_overview, or get_balance, and no mention of the agency/managed-login scenario implied by the client_login parameter. Usage is only implied by the phrase 'current account'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_imagesИзображения объявленийARead-onlyIdempotent
Возвращает список изображений из библиотеки изображений, ключ — хеш изображения. Новые изображения загружает upload_ad_image.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Максимум объектов на страницу. | |
| hashes | No | Фильтр по хешам изображений. | |
| offset | No | Смещение постраничной выдачи. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that results are keyed by image hash, which shapes how an agent consumes the output, but says nothing about pagination behavior or empty-result handling despite limit/offset parameters.
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?
Two short sentences with no padding: the operation is stated first, then the sibling routing. Every clause carries 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 zero-required-parameter, read-only listing tool with full schema documentation and no output schema, this is nearly sufficient. The only shortfall is that paging behavior and the shape of the returned hash-keyed collection are not described.
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 limit, offset, hashes and client_login are all documented in the schema itself. The description's hash-key remark gives mild context for the hashes filter but adds no format or usage detail beyond the 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?
States a concrete verb and resource (returns a list of images from the image library) and adds that the result is keyed by image hash, which is a useful distinguishing detail. It does not differentiate itself from other read-heavy siblings like get_creatives, which an agent might reasonably confuse with an image library.
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 routes image-creation to upload_ad_image ("Новые изображения загружает upload_ad_image"), giving a clear when-not signal. However, no positive guidance on when to call this instead of get_creatives or other asset readers is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ad_videosВидео объявленийARead-onlyIdempotent
Читает видео из библиотеки видео по id (API требует id). Загрузка идёт через raw_request (advideos/add).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id видео (обязательны по требованию API). | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds the useful fact that the tool cannot upload (redirecting to raw_request/adviews.add) and that ids are an API-level requirement, but says nothing about pagination behaviour or the shape of returned objects.
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?
Two short sentences, zero filler, with the primary read behaviour front-loaded and the upload redirect as a supporting note.
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 small read-only tool with four fully documented parameters and complete annotations, the description covers purpose, the key constraint and the alternative write path. Only pagination and return-content expectations are left to the schema, which is acceptable here.
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% and all four parameters carry their own descriptions, so the schema does the heavy lifting. The description only echoes the mandatory-id constraint that the schema's own 'ids' description already states, adding no new syntax or format detail.
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?
States a specific verb ("Читает" / reads) and resource ("видео из библиотеки видео по id"), so the agent knows it retrieves video objects by identifier. It also draws a boundary against the upload path, but does not differentiate itself from neighbouring read tools like get_creatives or get_ad_images.
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?
Gives clear usage context: read with ids here, and uploads must go through raw_request (advideos/add), which prevents an agent from looking for a write path in this tool. No explicit exclusion criteria against other media-reading siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceБаланс аккаунтаARead-onlyIdempotent
Возвращает баланс общего счёта и финансовые поля (Amount, AmountAvailableForTransfer, Currency, Discount, AccountID) через устаревший сервис AccountManagement Live v4 — единственный API Яндекс Директа, который отдаёт баланс (в v5 финансового метода нет). Amount — строка в ВАЛЮТЕ АККАУНТА (не в микроединицах); отрицательный Amount означает задолженность. По умолчанию — собственный аккаунт токена, а при переданном client_login — счёт этого клиента; чтобы получить несколько общих счетов разом (агентство, до 50 логинов), передать logins.
| Name | Required | Description | Default |
|---|---|---|---|
| logins | No | Логины аккаунтов, по которым нужны данные. По умолчанию — собственный аккаунт токена. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds substantive context: the call goes through the legacy AccountManagement Live v4 surface, Amount is a string in account currency (not micro-units), and a negative Amount means debt. These are non-obvious behaviors an agent would otherwise get wrong; only rate limits/legacy-service constraints are unaddressed.
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?
Front-loaded: the return fields and purpose come first, followed by the legacy-API caveat and then parameter routing. The v4-vs-v5 parenthetical is long but genuinely load-bearing for an agent deciding whether another tool could do the job. Slightly denser than needed but no filler.
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?
There is no output schema, so the description carries the return-value burden and does so by naming all five financial fields plus the currency/debt semantics. What remains missing is the shape of the response when 'logins' is used (single object vs per-login array) and any partial-failure behavior, a minor gap for a read-only 2-param 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?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the agency 'up to 50 logins' cap and the bulk-multi-account use case for 'logins'. It also restates the client_login fallback chain, which the schema already documents.
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?
States a specific verb and resource ('Возвращает баланс общего счёта и финансовые поля') and enumerates the returned fields by name. It also differentiates itself structurally from every sibling by noting it is the only Yandex Direct API surface that exposes balance (v5 has no financial method), so an agent can rule out get_account_info or the campaign tools for this need.
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?
Gives explicit routing for all three modes: default = token's own account, client_login = that client's account, logins = multiple shared accounts (agency, up to 50 logins). This is clear selection guidance for the parameters. It stops short of stating exclusions or error conditions, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bid_modifiersКорректировки ставокARead-onlyIdempotent
Читает корректировки ставок (мобильные, десктоп, демография, ретаргетинг, регионы, видео) для кампаний или групп объявлений. BidModifier — это процент, а не деньги.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id корректировок. | |
| types | No | Фильтр по типам корректировок. | |
| levels | No | Уровни, на которых читать. По умолчанию оба: CAMPAIGN и AD_GROUP. | |
| adGroupIds | No | Фильтр по id групп объявлений. | |
| campaignIds | No | Фильтр по id кампаний. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld behavior, so safety is covered. The description adds the important domain fact that BidModifier is a percentage rather than money, plus scope across campaign and ad-group levels—context not present in annotations or schema. It does not describe return shape or pagination.
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?
Two compact sentences are front-loaded with the action and resource, followed by a high-value unit clarification. There is no repetition or wasted text.
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 read-only filter tool with fully documented parameters, the description covers the resource, scope, and key percentage semantic while annotations cover safety. It lacks return-value guidance, but given the simple read behavior and 100% schema coverage this is a minor gap.
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 all six optional parameters are already documented in the schema; this establishes a baseline of 3. The description mentions campaign/ad-group scope and adjustment types, but adds no filter syntax, default behavior, or enum meaning beyond what the schema 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 uses a specific verb ('Читает') and resource ('корректировки ставок'), and enumerates covered adjustment categories and campaign/ad-group scope. This clearly separates it from sibling mutators such as add_bid_modifier, set_bid_modifiers, and delete_bid_modifiers.
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?
Usage is implied by 'Читает' and by the surrounding read-versus-write sibling set, but no explicit when-to-use, when-not-to-use, or named-alternative guidance is provided. An agent can infer it is the read counterpart, yet no workflow context such as inspecting before updating is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calloutsУточненияBRead-onlyIdempotent
Возвращает список уточнений из библиотеки adextensions. Привязать уточнение к объявлению можно через сервис Ads.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id уточнений. | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the library-source scope and the cross-service linking note, but says nothing about pagination behavior, result size, or auth/account scoping.
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?
Two short sentences with no filler, and the core action is front-loaded before the cross-service note. Nothing redundant is included.
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 read-only paginated list tool with full schema coverage and rich annotations, the description covers the essentials. It is thin on what the returned callout objects contain and on pagination semantics, but no output schema exists to relieve that burden entirely.
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 all four parameters (ids, limit, offset, client_login) are already documented in the schema, including the fallback behavior of client_login. The description adds no parameter-level meaning beyond that 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?
States a specific verb and resource: returns a list of callouts from the adextensions library. The word 'список' plus the read framing distinguishes it from the sibling mutators add_callouts and delete_callouts, though those siblings are never named.
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 second sentence clarifies scope by pointing out that linking a callout to an ad happens in the Ads service, which implicitly bounds what this tool does. However, there is no explicit 'use this when... instead of add_callouts/delete_callouts' guidance or prerequisite note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creativesКреативыBRead-onlyIdempotent
Возвращает список креативов (смарт-баннеры, HTML5) из библиотеки креативов.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id креативов. | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the content type of the returned entities, not pagination behavior, result size limits, or auth/scope requirements beyond the client_login param.
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?
A single front-loaded sentence with no filler. It is appropriately sized, though extremely terse given the tool's filtering and pagination surface.
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 annotations covering safety and full schema coverage of parameters, the essentials are present. However, for a paginated list tool without an output schema, the description says nothing about return shape, ordering, or pagination semantics, leaving a modest gap.
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 all four parameters (ids, limit, offset, client_login) are already documented, including the login fallback chain. The description adds no additional parameter semantics, so the baseline 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 uses a clear verb+resource ('Возвращает список креативов') and clarifies the domain ('из библиотеки креативов') with examples of creative types (smart banners, HTML5). It is distinguishable from list_ads or get_ad_images, though it never names those siblings explicitly.
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?
There is no guidance on when to use this tool versus alternatives such as get_ad_images, get_ad_videos, or list_ads. The listing intent is implied only by the verb 'Возвращает список', leaving an agent to infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dictionariesСправочникиARead-onlyIdempotent
Возвращает справочники Яндекс Директа (валюты, часовые пояса, константы, категории объявлений, …). GeoRegions может быть очень большим — для поиска регионов лучше get_regions.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Названия нужных справочников. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds behavior the annotations do not: one dictionary (GeoRegions) is very large, which warns the agent about payload size and the need to avoid it. It says nothing about client_login resolution behavior or response shape, keeping it below a 5.
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?
Two tight sentences with zero filler; the capability statement comes first and the cautionary sibling reference second. Every clause carries usable 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 two-parameter read-only lookup with full schema coverage and annotations, the description supplies what an agent needs to choose and call it correctly. The only residual gap is that return structure is unaddressed and there is no output schema, though the enumerated dictionary kinds largely imply it.
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 both names and client_login are documented in the schema itself, setting the baseline at 3. The description's enumeration of dictionary kinds loosely mirrors the enum values but adds no syntax, limits, or semantics beyond what the schema states.
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?
States a concrete verb and resource ('Возвращает справочники Яндекс Директа') and enumerates representative contents (валюты, часовые пояса, константы, категории объявлений), so the agent knows exactly what kind of data comes back. It also contrasts itself with a sibling, making it distinguishable without opening the schema.
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?
Gives explicit routing for one important case: GeoRegions can be huge, so use get_regions for region lookup instead. That is real when-not guidance. It stops short of stating the general when-to-use framing (e.g. fetch currency/timezone codes before creating campaigns), so it is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quotaКвота APIARead-onlyIdempotent
Возвращает сегодняшнюю квоту баллов API (потрачено / осталось / лимит) из заголовка Units — чтобы не упереться в дневной лимит.
| Name | Required | Description | Default |
|---|---|---|---|
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: it discloses the data provenance (the Units response header) and the freshness scope (today's quota), which tells the agent this is a live per-day counter rather than a stored value.
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?
A single sentence that front-loads the returned payload (spent / remaining / limit) and then the motivation. No filler, nothing repeated from the schema or annotations.
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 output schema, the description carries the burden of describing return values and it does so by naming the three fields returned. It stops short of stating the return type or error behavior (e.g. what happens when the Units header is absent), which is a minor remaining gap for a zero-required-parameter read 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?
Schema description coverage is 100% and the client_login parameter already documents the fallback chain (explicit login → YANDEX_DIRECT_LOGIN → token's own account) in full. The description adds nothing about the parameter, so the baseline 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?
States a specific verb and resource: returns today's API point quota broken down as spent / remaining / limit. An agent can distinguish it from get_balance (money) and get_account_info by the 'баллов API' framing, though the description never names those siblings explicitly to reinforce the contrast.
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 trailing clause 'чтобы не упереться в дневной лимит' implies the tool should be consulted before heavy request bursts, which is useful implied usage. But there is no explicit when-to-use rule, no stated frequency, and no routing against the adjacent get_balance / get_account_info tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regionsПоиск регионовARead-onlyIdempotent
Ищет id регионов для таргетинга (те самые regionIds, которые нужны create_ad_group). Фильтр — подстрока названия; количество результатов ограничено limit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Максимум регионов в ответе. По умолчанию 50. | |
| query | No | Подстрока названия региона без учёта регистра, например 'Москва' или 'Moscow'. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds matching semantics (substring) and that output volume is bounded by limit, but says nothing about empty-result behavior or that client_login falls back to config — that fallback lives only in 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?
Two tight sentences, front-loaded with the purpose and then the filtering constraint; nothing is filler. The parenthetical aside is slightly dense but earns its place by linking to create_ad_group.
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 read-only lookup with no output schema, the agent learns what comes back conceptually (region ids usable for targeting), how filtering works, and how many results to expect. Missing only whether names/other fields accompany the ids, which would help the agent format results.
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%, so all three parameters are already documented in the schema, including the client_login fallback chain. The description merely restates substring filtering and the limit cap, adding no syntax or defaults beyond what the schema provides — baseline 3.
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?
States a specific verb and resource ('Ищет id регионов') and goes further by naming the exact artifact it produces ('те самые regionIds') and the sibling that consumes it (create_ad_group). An agent can tell instantly that this is a lookup helper for targeting, not a campaign/dictionary dump.
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?
Explains the trigger condition well: use it to obtain regionIds before calling create_ad_group, filtered by name substring and capped by limit. No explicit 'when not to use' or pointer to an alternative (e.g. get_dictionaries), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sitelinksНаборы быстрых ссылокBRead-onlyIdempotent
Читает наборы быстрых ссылок по id. API требует id наборов — их можно взять из поля SitelinkSetId объявлений.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id наборов быстрых ссылок (обязательны по требованию API). | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, openWorld=true and destructive=false, so the safety profile is covered. The description adds the API's mandatory-id constraint, but says nothing about pagination behaviour (limit/offset) or how the sets are returned, which is the remaining behavioral gap.
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?
Two tightly packed sentences with the core action first and the prerequisite second; nothing is wasted. It is arguably too terse for a tool an agent may need to page through, but there is no filler.
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 read-only lookup with rich schema descriptions and full annotations, the description is adequate. The main omission is that there is no output schema and the description doesn't indicate the shape of the returned sitelink sets or how pagination results accumulate.
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 every parameter including limit, offset and client_login is already documented. The description only reinforces that ids are mandatory and hints at their source, which is marginal added value beyond the schema — baseline 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?
States a specific verb and resource ('Читает наборы быстрых ссылок по id'), and the id-based lookup distinguishes it from create_sitelinks_set and delete_sitelinks in the sibling list. It doesn't explicitly name those siblings, so differentiation is implied rather than stated.
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?
Adds one genuinely useful usage fact: the API requires ids, and they come from the SitelinkSetId field of ads. That covers the main prerequisite, but there is no explicit when-to-use/when-not statement or reference to alternatives such as raw_request for bulk retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statisticsСтатистикаARead-onlyIdempotent
Запрашивает отчёт по эффективности через сервис Reports Яндекс Директа. По умолчанию отчёт АГРЕГИРОВАН за весь период (одна строка на объект) — добавлять "Date" в fieldNames только для динамики по дням или вопросов о трендах. Почасовой статистики в Reports нет: минимум — сутки, внутридневную динамику дают только повторные снимки TODAY. Готового ROAS нет — считать Revenue / Cost; GoalsRoi — это ROI ((Revenue − Cost) / Cost), не ROAS. Revenue, Profit, GoalsRoi и конверсии заполняются только по целям Метрики с ценностью. ALL_TIME без фильтра по кампаниям отклоняется для отчётов SEARCH_QUERY/CRITERIA: нужно передать campaignIds или ограниченный период. SEARCH_QUERY_PERFORMANCE_REPORT возвращает не сырые строки, а ВЫЧИСЛЕННУЮ СВОДКУ (итоги по ВСЕМ строкам + детализация top-N + свёртка хвоста + количество строк без кликов и без конверсий); её форму задают sortBy/topN/minCost/queryContains/zeroClicksOnly/zeroConversionsOnly, а для подсчётов по конверсиям нужно добавить Conversions в fieldNames. Остальные типы отчётов возвращают строки, разделённые табуляцией (без заголовка).
| Name | Required | Description | Default |
|---|---|---|---|
| topN | No | Максимум строк детализации в сводке (на сервере ограничено 100). По умолчанию 50. | |
| goals | No | Id целей Яндекс Метрики (не более 10). Без них Conversions и Revenue считаются по всем целям кампании; с ними колонки приходят как <поле>_<idЦели>_<модель> (по одной на цель × модель). Для SEARCH_QUERY_PERFORMANCE_REPORT — только одна цель и одна модель. | |
| order | No | Порядок сортировки строк детализации. По умолчанию desc. | |
| dateTo | No | Дата окончания YYYY-MM-DD (обязательна для CUSTOM_DATE). | |
| sortBy | No | Метрика для ранжирования строк детализации. По умолчанию Cost. | |
| filters | No | Произвольные условия SelectionCriteria.Filter, складываются с campaignIds по И. Например Clicks GREATER_THAN 0 или Device EQUALS MOBILE. | |
| minCost | No | Включать в детализацию только строки с Cost >= этого значения. | |
| dateFrom | No | Дата начала YYYY-MM-DD (обязательна для CUSTOM_DATE). | |
| fieldNames | No | Колонки отчёта (должны быть допустимы для его типа). Сверх базовых метрик: Conversions, ConversionRate, CostPerConversion, Revenue, Profit, GoalsRoi. Разрезы CUSTOM_REPORT: Date, Device, Age, Gender, LocationOfPresenceName, Placement, AdNetworkType, Slot и др. | |
| includeVat | No | Включать ли НДС в расход. По умолчанию true. | |
| reportType | No | Тип отчёта. По умолчанию CAMPAIGN_PERFORMANCE_REPORT. | |
| campaignIds | No | Ограничить отчёт этими id кампаний. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| dateRangeType | No | Предустановленный период. Если заданы dateFrom/dateTo, подставляется CUSTOM_DATE. | |
| queryContains | No | Включать только строки, где запрос или условие содержит эту подстроку (без учёта регистра). | |
| zeroClicksOnly | No | Включать в детализацию только строки с 0 кликов. | |
| attributionModels | No | Модели атрибуции для конверсий по целям из goals; без goals не применяются (API их тогда не принимает). По умолчанию LC (последний переход). | |
| zeroConversionsOnly | No | Только строки с clicks>0 и 0 конверсий (нужно Conversions в fieldNames). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, but the description adds substantial unreachable-from-schema behavior: default aggregation to one row per object, tab-separated row output without header for most report types, a computed summary (totals + top-N + tail rollup + zero-click/zero-conversion counts) for SEARCH_QUERY_PERFORMANCE_REPORT, and the precondition that Revenue/Profit/GoalsRoi are only populated for Metrica goals with a value. It also discloses a hard validation rule that rejects certain ALL_TIME calls.
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?
Front-loaded with the aggregation default and the Date advice first, then the return-format distinction, so the most decision-relevant facts come early. It is dense and long, but for an 18-parameter tool nearly every clause carries an operational constraint rather than filler.
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 18-param tool with no output schema, the description covers default behavior, hard validation rejections, per-report-type return formats, and metric computation semantics (ROAS vs GoalsRoi). Combined with the complete schema, an agent has what it needs to call this 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%, so 3 would be the baseline, but the description goes further: it explains that sortBy/topN/minCost/queryContains/zeroClicksOnly/zeroConversionsOnly jointly determine the shape of the SEARCH_QUERY summary, and that Conversions must be added to fieldNames for conversion counts to be usable. Minor gap: it doesn't tie the goals/attributionModels interaction to the description text beyond the schema's own note.
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?
Opens with a specific verb and resource ("Запрашивает отчёт по эффективности через сервис Reports Яндекс Директа") and immediately scopes what is and isn't in the data. No sibling tool covers reporting, and the description makes the tool's domain 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?
Explicit rules are given for when to add "Date" to fieldNames (only for daily dynamics/trend questions), that hourly stats do not exist (minimum is daily; use repeated TODAY snapshots), that ALL_TIME without campaignIds is rejected for SEARCH_QUERY/CRITERIA, and that ROAS must be computed as Revenue/Cost rather than GoalsRoi. These are the exact decisions an agent would otherwise get wrong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_actionДействие с ключевыми фразамиCDestructive
Выполняет действие над ключевыми фразами по id: suspend, resume или delete.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Id ключевых фраз, к которым применить действие. | |
| action | Yes | ||
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the action list: it does not say whether 'delete' is irreversible, whether 'suspend' can be undone via 'resume', what happens on a mixed batch of ids, or whether partial failures are reported. For a destructive batch operation, this is a meaningful gap.
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?
A single short sentence with the resource and action list front-loaded and no filler. It is efficiently written, though the brevity is partly the source of the gaps noted elsewhere.
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?
This is a destructive, non-idempotent batch mutation with no output schema, yet the description says nothing about the return value (affected counts, per-id errors), batch limits, or the irreversibility of delete. Given the tool's risk profile and three parameters, the description leaves out information an agent needs to invoke it safely.
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 67% – 'ids' and 'client_login' carry their own descriptions, but 'action' has only an enum. The description restates the enum values without explaining their semantics (what suspension does to a keyword vs deletion), so it adds only marginal meaning over the schema. Baseline 3 is appropriate given the moderate schema coverage.
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?
States a specific verb and resource ('Выполняет действие над ключевыми фразами по id') and enumerates the three supported actions, so an agent knows exactly what the tool mutates. It does not name sibling tools (list_keywords, add_keywords, set_keyword_bids), so differentiation is implied by the resource name rather than stated.
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?
There is no guidance on when to use this tool versus alternatives such as set_keyword_bids (bids) or delete_ad_groups-style sibling mutations, and no stated prerequisites. The action enum hints at usage, but an agent must infer that this is the only path for suspend/resume/delete on keywords.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_groupsСписок групп объявленийARead-onlyIdempotent
Возвращает список групп объявлений. Нужно передать campaignIds и/или ids — API Яндекс Директа требует хотя бы один критерий отбора.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id групп объявлений. | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи (сколько объектов пропустить). | |
| fieldNames | No | Какие поля группы вернуть. | |
| campaignIds | No | Фильтр по id кампаний. | |
| autoPaginate | No | Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём). | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description usefully discloses the API-level filter requirement, which is genuine behavioral context. However it says nothing about pagination behavior or how autoPaginate interacts with limit, which materially affects how results are returned.
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?
Two sentences, front-loaded with purpose before the requirement, and nothing is padded. However the second sentence only covers one parameter pair while six other parameters go unmentioned, so brevity comes partly at the cost of coverage.
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 read-only list tool with a fully documented schema and no output schema, the description supplies the one non-obvious calling rule. Details like the default page size or what autoPaginate returns per page are left to the schema, which is acceptable here.
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 every parameter including limit, offset, fieldNames, autoPaginate and client_login is already documented, establishing the baseline of 3. The description only reinforces the ids/campaignIds constraint and adds no semantics for the remaining five parameters.
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?
States a specific verb and resource ('Возвращает список групп объявлений'), which cleanly separates it from write siblings like create_ad_group and delete_ad_groups. It does not explicitly name a read alternative such as list_campaigns, so it stops short of the top mark.
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?
Adds a real precondition absent from the schema: at least one of campaignIds or ids must be supplied because the Yandex Direct API demands a selection criterion, with all parameters technically optional this would otherwise be a silent failure. It does not discuss when to prefer listing by campaign vs. by id, or how it relates to sibling list_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adsСписок объявленийARead-onlyIdempotent
Возвращает список объявлений. Нужно передать campaignIds, adGroupIds или ids — API Яндекс Директа требует хотя бы один из них; states и statuses только сужают выборку.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id объявлений. | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи (сколько объектов пропустить). | |
| states | No | Фильтр по состояниям объявлений. | |
| statuses | No | Фильтр по статусам модерации. | |
| adGroupIds | No | Фильтр по id групп объявлений. | |
| fieldNames | No | Какие поля объявления вернуть. Тексты и ссылки (Title, Title2, Text, Href, …) приходят в объекте TextAd. | |
| campaignIds | No | Фильтр по id кампаний. | |
| autoPaginate | No | Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём). | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's added value is the API-level rule that a filter id is mandatory despite the schema marking zero required params. That is a meaningful behavioral constraint an agent cannot infer from structured fields. It does not describe result shape or pagination behavior, keeping it at 4.
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?
Two sentences, zero filler, with the core requirement and the narrowing behavior front-loaded. Every clause earns its place.
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 10-parameter read tool with full schema coverage and annotations, the description supplies the one thing the schema omits (the mandatory filter). Minor gaps around autoPaginate/limit interaction and client_login precedence are already covered by the schema text.
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 baseline is 3, but the description adds semantics beyond the schema by grouping campaignIds/adGroupIds/ids as the required selector set and framing states/statuses as narrowing filters. This helps the agent understand parameter relationships rather than read each field in isolation.
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 first sentence states a specific verb and resource ('Возвращает список объявлений'), which is unambiguous and distinguishes it from sibling listers such as list_campaigns and list_ad_groups. It does not explicitly name alternatives to route against, so it falls short of a 5.
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 precondition — at least one of campaignIds, adGroupIds or ids must be supplied because the Yandex Direct API demands it — and clarifies that states/statuses only narrow the result. That is real when-to-use guidance, though it does not discuss alternatives like raw_request or get_creatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsСписок кампанийARead-onlyIdempotent
Возвращает список кампаний с необязательными фильтрами по id, типу, состоянию и статусу. Денежные поля (DailyBudget.Amount и Funds общего счёта — Sum, Balance, SumAvailableForTransfer, Spend) отдаются в валюте аккаунта.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id кампаний. | |
| limit | No | Максимум объектов на страницу. | |
| types | No | Фильтр по типам кампаний. | |
| offset | No | Смещение постраничной выдачи (сколько объектов пропустить). | |
| states | No | Фильтр по состояниям кампаний. | |
| statuses | No | Фильтр по статусам модерации. | |
| fieldNames | No | Какие поля кампании вернуть. Стратегии и настройки конкретного типа кампании здесь не запрашиваются. | |
| autoPaginate | No | Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём). | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds a non-obvious behavioral fact beyond them: monetary fields (DailyBudget.Amount, Funds Sum/Balance/SumAvailableForTransfer/Spend) are returned in the account currency, which prevents misreading values. It does not mention pagination shape or volume limits.
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?
Two dense sentences with no filler: capability and filters first, then the currency caveat that materially affects interpretation of results. Nothing is repeated from the schema.
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 nine-parameter read tool with no output schema, the description covers purpose, filters and a key return-value semantic (account currency). The remaining gap is the pagination contract (offset/limit vs autoPaginate walking LimitedBy), which is only documented in the schema, not in the description.
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 schema already documents all nine parameters, including enums and the fieldNames restriction. The description only echoes four filter names and adds no syntax or format detail beyond the schema, so baseline 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 names a specific verb and resource ("Возвращает список кампаний") and enumerates the filter dimensions (id, тип, состояние, статус), so the agent can tell this is a filtered read of campaigns. It does not explicitly distinguish itself from siblings like get_statistics or campaign_action, leaving that inference to the agent.
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?
Usage is only implied: the word "необязательными" signals that all filters are optional and that omitting them lists everything. There is no explicit statement of when to prefer this tool over list_ad_groups/get_statistics, nor any prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsКлиенты и кабинеты в управленииARead-onlyIdempotent
Перечисляет рекламодателей, с которыми может работать токен: клиентов агентства (AgencyClients.get) и кабинеты в управлении из YANDEX_DIRECT_CLIENTS. Логин из ответа передаётся в параметр client_login любого инструмента данных — так один сервер работает со всеми клиентами без перезапуска. accountType=agency — токен агентства: без client_login (и без YANDEX_DIRECT_LOGIN) инструменты видят собственный аккаунт агентства, где обычно нет кампаний. accountType=advertiser — обычный аккаунт: API не перечисляет кабинеты, где этот логин представитель, поэтому список есть только если его задали в YANDEX_DIRECT_CLIENTS. Архивные клиенты агентства по умолчанию скрыты. Сводка по всем клиентам сразу (баланс, кампании) — clients_overview.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько клиентов вернуть, 1–1000. По умолчанию 200. | |
| search | No | Фильтр по подстроке логина или названия клиента, без учёта регистра. | |
| includeArchived | No | Показать и архивных клиентов агентства. По умолчанию — только активных. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered; the description adds real behavioral context beyond them — archived agency clients hidden by default, and tools falling back to the agency's own account without client_login. It does not describe pagination or the response shape, which keeps it short of a 5.
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?
Front-loaded with the core purpose and the key handoff, then the account-type caveats and the alternative tool. Dense but each sentence carries meaning; slightly long for a three-optional-param list 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 token-scoped client listing with a fully documented schema, the description covers the agency/advertiser split, default filtering of archived clients, the login handoff, and the alternative tool. Nothing an agent needs to call it correctly 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?
Schema coverage is 100% and already documents limit, search, and includeArchived with defaults, so the description need not repeat them. It complements the schema by explaining the semantic meaning of the returned login (used as client_login in any data tool) rather than adding input-param detail, which is the expected 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?
States a specific verb (Перечисляет) and resource (рекламодателей/клиентов агентства + кабинеты в управлении), and names the API source (AgencyClients.get, YANDEX_DIRECT_CLIENTS). It is clearly separable from clients_overview, which is explicitly described as the summary tool.
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?
Gives explicit when-to-use context for both accountType=agency and accountType=advertiser, states why an advertiser may see an empty list, and routes the agent to clients_overview when a cross-client summary (balance, campaigns) is wanted instead. It also explains the downstream handoff of the returned login into client_login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keywordsСписок ключевых фразARead-onlyIdempotent
Возвращает список ключевых фраз. Нужно передать campaignIds, adGroupIds или ids — API Яндекс Директа требует хотя бы один из них. Bid и ContextBid отдаются в валюте аккаунта.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Фильтр по id ключевых фраз. | |
| limit | No | Максимум объектов на страницу. | |
| offset | No | Смещение постраничной выдачи (сколько объектов пропустить). | |
| adGroupIds | No | Фильтр по id групп объявлений. | |
| fieldNames | No | Какие поля ключевой фразы вернуть. | |
| campaignIds | No | Фильтр по id кампаний. | |
| autoPaginate | No | Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём). | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new behavioral facts: the mandatory-filter requirement enforced by the Yandex Direct API and the fact that Bid/ContextBid come back in account currency, which affects how results must be interpreted.
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 short sentences, each doing distinct work: what it returns, the validity constraint, and a return-value caveat. The most action-critical fact (the mandatory filter) is placed early with no filler.
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 8 optional parameters, no output schema and 100% schema coverage, the description supplies the missing pieces an agent needs before calling: a required filter and bid currency. It could still say more about pagination behavior (limit/offset vs autoPaginate), which is the one notable gap for a list 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?
Schema description coverage is 100% and every parameter carries its own Russian description, so the baseline is 3. The description adds one valuable cross-parameter rule (at least one filter id array is mandatory) that the schema does not express via 'required', plus currency semantics for bid fields, but nothing on fieldNames, limit/offset or autoPaginate interplay.
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?
States a specific verb and resource ('Возвращает список ключевых фраз'), which cleanly separates it from list_campaigns, list_ad_groups and list_ads among the siblings. It does not, however, explicitly contrast itself with keyword_action or add_keywords, so the read-vs-write distinction is left to the reader.
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 discloses a hard API constraint — at least one of campaignIds, adGroupIds or ids must be supplied — which tells the agent how to make a valid call. It gives no guidance on when to prefer this listing over keyword_action or how to combine filters, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutОтключить ДиректADestructive
Удаляет сохранённый токен Директа с диска. Токен, заданный переменной окружения YANDEX_DIRECT_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds specific details: it only removes the saved token, leaves the env var token untouched, and does not revoke access on Yandex side. This is valuable context beyond the generic destructive flag and fully aligns with 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 is three sentences long, with the core action front-loaded in the first sentence and important caveats in the following ones. It is concise, well-structured, and avoids redundancy, making it efficient for an agent to parse.
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 zero parameters and no output schema, the description covers all relevant aspects: what is deleted, what isn't, and what remains active. It is complete for an agent to understand the tool's behavior and side effects without needing further documentation.
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 takes no parameters, so the description does not need to explain parameter semantics. The empty schema is sufficient, and the description adds behavioral context but not parameter-specific information. Baseline for 0 parameters is 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 clearly states the action ('deletes the saved Direct token from disk') and specifies the resource, distinguishing it from the environment-variable token. It also notes that access remains active on Yandex side, further clarifying scope. This is precise and distinguishable from other auth-related 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?
The description does not explicitly state when to use this tool versus alternatives, but it does clarify what it does not do (env var token, revocation). It hints at an alternative (revoking via Yandex ID) but does not frame it as a tool choice or provide explicit when/when-not guidance. The purpose is clear, but usage guidance is minimal.
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
Универсальный запрос: вызывает напрямую любой сервис или метод API Яндекс Директа v5 (например service "bidmodifiers", method "get"). Нужен для сервисов, у которых нет отдельного инструмента. Деньги — в микроединицах (без конвертации). Методы чтения (get/has/check) выполняются свободно; любой другой метод считается записью и требует confirmWrite=true.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | Метод API, например get, add, update, delete, set, toggle, checkCampaigns. | |
| params | No | Объект params для метода — как есть. | |
| service | Yes | Путь сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, adextensions, changes, keywordsresearch. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| confirmWrite | No | Должен быть true для запуска метода записи (всё, кроме get/has/check). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false and non-idempotent, so the description doesn't need to restate danger; instead it contributes real behavioral detail: the read-vs-write classification (get/has/check vs everything else), the confirmWrite gate, and that monetary values are in micro-units with no conversion. It doesn't cover error behavior, rate limits, or payload limits of the raw endpoint, which for an open-world passthrough would be valuable.
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?
Four short sentences, front-loaded with the verb and scope, then the carve-out for dedicated tools, then the two facts (micro-units, write gating) that most affect correctness. Nothing redundant with the title or the schema.
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 generic, open-world passthrough with no output schema, the description supplies the three things the schema cannot: which services it exists for, how write gating works, and the micro-unit convention. Return-value shape and failure modes are unaddressed, which is the main remaining gap for a raw API escape hatch.
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%, so baseline is 3; the description goes beyond by defining which method values count as reads and by flagging that all monetary fields in params are micro-units without conversion — a semantic trap the schema never mentions. It adds no detail on the params object shape, but the schema already says params are passed as-is.
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?
States a specific verb and resource: a universal passthrough that calls any Yandex Direct v5 service or method, with a concrete example ("bidmodifiers"/"get"). It also explicitly scopes itself to services that lack a dedicated sibling tool, so an agent can tell it apart from the ~40 named siblings.
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?
Gives clear when-to-use ("для сервисов, у которых нет отдельного инструмента"), which implicitly routes the agent to dedicated siblings first, and adds the gating rule that read methods run freely while any other method needs confirmWrite=true. No explicit prohibition or listing of the dedicated alternatives, but the selection condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bid_modifiersИзменить корректировки ставокAIdempotent
Меняет процент существующих корректировок (bidmodifiers/set) по id корректировки. BidModifierSetItem принимает только Id и BidModifier; включить/выключить корректировку через API нельзя (метод bidmodifiers/toggle устарел и не поддерживается) — чтобы отключить корректировку, удалить её через delete_bid_modifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | Yes | В каждом элементе нужны id и percent. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a critical behavioral limitation: BidModifierSetItem accepts only Id and BidModifier, and the API cannot toggle enabled/disabled state. This is exactly the kind of constraint an agent needs before attempting a state change.
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 front-loaded: it starts with what the tool does, then immediately states the key limitation and the alternative. Every sentence carries operational value.
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 two-parameter mutation with no output schema, the description covers purpose, key constraint, deprecation note, and the correct alternative for disabling an adjustment. The schema already documents client_login and the percent field, so no important call-time context 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?
Schema description coverage is already 100%, so the baseline is 3, but the description adds meaningful constraint by clarifying that the item only accepts Id and BidModifier/percent and no toggle flag. The terminology differs slightly from the schema's 'percent' property, but the added semantic restriction is useful.
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 verb and resource: it changes the percentage of existing bid adjustments by adjustment id, and names the endpoint bidmodifiers/set. It also distinguishes the operation from toggling and deleting, so an agent can tell it apart from add_bid_modifier and delete_bid_modifiers.
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 gives explicit usage boundaries: use this to change percent, cannot enable or disable an adjustment, and to disable one must use delete_bid_modifiers. It even notes that bidmodifiers/toggle is deprecated and unsupported, which directly routes the agent to the correct sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_keyword_bidsЗадать ставки ключевых фразAIdempotent
Задаёт ручные ставки на поиске и в сетях для ключевых фраз либо для всех фраз указанных групп объявлений или кампаний (keywordbids/set). Ставки — в валюте аккаунта. Тип цели один на весь вызов: все элементы bids используют только keywordId, только adGroupId или только campaignId; для целей разных типов нужны отдельные вызовы.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | Yes | В каждом элементе ровно один целевой id (keywordId, adGroupId или campaignId) и хотя бы одно из полей bid/contextBid. Тип id одинаков во всех элементах: смешивать keywordId, adGroupId и campaignId в одном вызове нельзя. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only but idempotent, non-destructive, open-world mutation. The description adds genuinely useful behavior: bids are in account currency, the operation sets manual bids, and the target-type homogeneity rule means a call cannot partially apply across id types. It still omits whether existing/automatic bids are overwritten and what happens on partial failure.
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?
Two dense sentences, front-loaded with the verb and resource, then the call-structure constraint. Nothing is redundant given what the schema covers, and no sentence is filler.
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 mutation tool with full annotation coverage, a fully documented schema, and no output schema, the description supplies the essential operational facts (currency, one target type per call, separate calls). It could still state whether manual bids replace automated strategies or what the response contains, but nothing critical to correct invocation 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?
Schema description coverage is 100%, and the nested bids schema already documents bid/contextBid currency semantics, the exactly-one-target-id rule, and the homogeneous-id-type rule. The description restates these rather than adding new meaning, so the baseline 3 is correct.
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 names a specific verb and resource (sets manual search and network bids for keywords) and scopes it to individual keywords, all keywords of ad groups, or all keywords of campaigns, plus the API path keywordbids/set. This clearly separates it from bid-modifier and keyword-action siblings without requiring the schema to be opened.
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 a hard usage constraint: one target type per call, and separate calls for mixed target types. However, it never says when to prefer this over related tools such as set_bid_modifiers or keyword_action, nor does it mention prerequisites like a manual bidding strategy. Usage is implied rather than routed.
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 and idempotentHint, but the description adds meaningful behavioral detail: it returns a URL, the code is valid for 10 minutes, the code is useless to outsiders, and only this server can exchange it. This goes well beyond the structured 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 somewhat long but every sentence provides necessary guidance: the purpose, the returned OAuth link, user instructions, next step, expiration, and security note. It is front-loaded with the core purpose and remains efficient overall.
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 zero parameters, no output schema, and rich annotations, the description covers all needed context: what the tool returns, how to use that return value, the next tool to call, and important security/expiration details. Nothing an agent needs to invoke it correctly 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 there is no parameter documentation burden on the description. The baseline of 4 applies, and the description appropriately focuses on the tool's behavior and output rather than nonexistent 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 states a specific action: it is the first step of connecting Yandex Direct and returns a Yandex OAuth link. This clearly distinguishes it from finish_login, which is mentioned as the follow-up step, and from auth_status/logout.
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 explains when to use it: as the first step of the Direct connection flow, and explicitly directs the agent to pass the received code to finish_login. It does not explicitly discuss exclusions or alternative tools, but the step-by-step context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ad_groupОбновить группу объявленийBIdempotent
Обновляет название и/или регионы показа группы объявлений (adgroups/update).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id группы, которую нужно обновить. | |
| name | No | Новое название группы. | |
| regionIds | No | Новые id регионов показа. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| negativeKeywords | No | Заменяет минус-фразы группы; пустой массив очищает их. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds the useful partial-update signal 'и/или', but omits behaviours the annotations don't cover: that regionIds replaces the existing set and that an empty negativeKeywords array clears 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?
One short sentence, front-loaded with the verb and resource, with the endpoint appended for traceability. Nothing is wasted.
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?
A mutation tool with no output schema needs a bit more: the description does not say what happens to fields left unspecified, nor note that at least one of name/regionIds/negativeKeywords should be supplied. Annotations and the complete schema carry most of the load, so this is adequate but not 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?
Schema coverage is 100%, so the baseline is 3, but the description actively narrows the operation to two fields when the schema documents five, including negativeKeywords whose replace/clear semantics are important. An agent skimming the description could conclude negative keywords cannot be changed here.
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?
States a specific verb (Обновляет) plus the resource (группа объявлений) and even the API endpoint (adgroups/update), which clearly separates it from update_campaign or update_text_ad. However, it narrows the scope to 'название и/или регионы', omitting that the tool can also replace negative keywords.
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?
There is no explicit guidance on when to use this versus update_campaign, campaign_action or update_text_ad, and no mention of prerequisites such as needing an existing group id from list_ad_groups. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaignОбновить кампаниюAIdempotent
Обновляет название, дату окончания и/или дневной бюджет кампании (campaigns/update). API требует передавать режим бюджета (Mode) вместе с суммой, поэтому если dailyBudgetMode не задан, текущий режим кампании дочитывается через campaigns/get и сохраняется — смена суммы не меняет темп открутки.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id кампании, которую нужно обновить. | |
| name | No | Новое название кампании. | |
| endDate | No | Новая дата окончания в формате YYYY-MM-DD. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. | |
| dailyBudgetMode | No | Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. Если не задан, сохраняется текущий режим кампании. | |
| negativeKeywords | No | Заменяет минус-фразы кампании; пустой массив очищает их. | |
| dailyBudgetAmount | No | Дневной бюджет в валюте аккаунта. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent, non-destructive, non-read-only behavior, yet the description adds a non-obvious hidden side effect: an implicit campaigns/get to fetch the current budget mode before writing, plus the guarantee that changing the amount does not alter delivery pacing. Money-affecting semantics and a hidden read call are exactly the kind of context annotations cannot convey.
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?
Two sentences, both load-bearing: the first identifies the operation, the second covers the tricky parameter interaction and its user-visible consequence. No filler, no restatement of the title, useful detail 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?
With 7 parameters fully documented in the schema, annotations covering the safety profile, and no output schema to explain, the description fills the only real gap — the budget-mode read-and-preserve behavior. An agent can invoke this correctly without further information.
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%, so baseline would be 3; the description earns above that by explaining the coupling between dailyBudgetAmount and dailyBudgetMode (Mode must accompany the sum, otherwise the current one is re-read) — an interaction the per-field schema text does not make explicit. It says nothing about negativeKeywords being a full replacement, leaving that entirely to the 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?
States a specific verb and resource (updates campaign name, end date and/or daily budget) and even pins the underlying API method (campaigns/update), so the agent knows exactly what entity is being mutated. The enumeration reads as near-exhaustive yet omits negativeKeywords and client_login, which are real capabilities in the schema, so the scope is slightly under-stated.
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 one conditional usage rule (if dailyBudgetMode is absent, the current mode is read and preserved), which is genuinely useful. It never says when to pick this tool over sibling mutators like campaign_action or update_ad_group, nor does it state prerequisites such as needing id or an accessible client_login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_text_adОбновить текстовое объявлениеAIdempotent
Обновляет заголовок, текст или посадочную страницу текстового объявления (ads/update). Правка активного объявления отправляет его на повторную модерацию.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id объявления, которое нужно обновить. | |
| href | No | Новый URL посадочной страницы. | |
| text | No | Новый текст объявления, до 81 символа. | |
| title | No | Новый заголовок (Title 1), до 56 символов. | |
| title2 | No | Новый второй заголовок (Title 2), до 30 символов. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower; the description still adds the non-obvious side effect that editing an active ad sends it back to moderation. It does not clarify whether omitted fields are preserved (partial vs full update), which is the remaining behavioral ambiguity.
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?
Two short sentences, both load-bearing: the first identifies action and fields, the second delivers the moderation consequence. Nothing redundant and no buried 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?
Full schema plus annotations covering safety and idempotency mean the description only needed to add the moderation re-submission risk, which it does. The one gap is update semantics (whether unspecified fields are cleared or kept), which matters for an idempotent partial-update 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?
Schema description coverage is 100%, so the schema already documents every parameter including title2 limits and client_login fallback. The description adds no syntax, format, or fallback detail beyond what the schema provides, so the baseline 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?
States a specific verb ('Обновляет') and resource ('текстового объявления'), and enumerates the editable fields (заголовок, текст, посадочная страница), so it's clearly distinguishable from create_text_ad. It doesn't mention ad_action or otherwise position itself against siblings, which keeps it below a 5.
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 says what is updated but never states when to use this versus ad_action or update_ad_group, nor any prerequisites (e.g. ad must belong to the token's client). The only contextual hint is the moderation note, which is behavioral rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_ad_imageЗагрузить изображениеA
Загружает изображение в библиотеку изображений (adimages/add) и возвращает его AdImageHash — этот хеш подставляется в поле AdImageHash текстово-графического объявления. Изображение передаётся публичным URL (сервер сам скачает и закодирует) или в base64 через imageData. Яндекс принимает JPG/PNG/GIF до 10 МБ; текстово-графическому объявлению нужна горизонтальная картинка (минимум 1080×607).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Публичный URL изображения; сервер скачает его и закодирует в base64. Нужно передать это поле или imageData. | |
| name | Yes | Название изображения в библиотеке. | |
| imageData | No | Байты изображения в base64 (префикс data:-URL отбрасывается). Нужно передать это поле или url. | |
| client_login | No | Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover non-read-only, open-world, non-idempotent, and non-destructive behavior. The description adds useful operational details: the server downloads and encodes the URL, accepted formats and size limit, and the horizontal image requirement for text-graphic ads.
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 front-loaded: it first states the upload action and returned hash, then gives the supported input methods and image constraints. Every sentence contributes necessary 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 an upload tool with annotations and a fully described schema, the description is nearly complete: it explains the return value, input alternatives, and image requirements. Minor gaps remain around overwrite behavior and error handling, but these are not critical for correct 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?
Schema description coverage is 100%, so the parameters are already documented. The description reinforces the URL-vs-imageData choice and adds relevant image constraints, but does not significantly elaborate 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?
States the specific action (uploading an image to the ad image library via adimages/add), the result (AdImageHash), and how that result is used in a text-graphic ad. This clearly distinguishes it from sibling read tools such as get_ad_images.
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?
Explains the primary use case: obtaining an AdImageHash for a text-graphic ad, with the image supplied either by public URL or base64. It gives clear context and constraints, though it does not explicitly mention alternatives such as listing existing images with get_ad_images.
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.
13 tool updates
v1.11.0- Changed
add_callouts2 fields changed- changed
Input schema / properties / texts / descriptionPrevious value: -"Тексты уточнений, до 25 символов каждый."New value: +"Тексты уточнений, до 25 символов каждый, не более 1000 за вызов." - added
Input schema / properties / texts / maxItemsAdded value: +1000
- Changed
create_sitelinks_set6 fields changed- changed
Input schema / properties / sitelinks / items / properties / description / descriptionPrevious value: -"Описание быстрой ссылки (для некоторых типов объявлений)."New value: +"Описание быстрой ссылки, до 60 символов (показывается в расширенном формате объявления)." - added
Input schema / properties / sitelinks / items / properties / description / maxLengthAdded value: +60 - changed
Input schema / properties / sitelinks / items / properties / href / descriptionPrevious value: -"URL быстрой ссылки."New value: +"URL быстрой ссылки с протоколом и доменом, до 1024 символов." - added
Input schema / properties / sitelinks / items / properties / href / maxLengthAdded value: +1024 - changed
Input schema / properties / sitelinks / items / properties / title / descriptionPrevious value: -"Текст быстрой ссылки."New value: +"Текст быстрой ссылки, до 30 символов." - added
Input schema / properties / sitelinks / items / properties / title / maxLengthAdded value: +30
- Removed
create_vcard - Removed
delete_vcards - Changed
get_account_info1 field changed- added
Input schema / properties / fieldNames / items / enumAdded value: +[ + "AccountQuality", + "Archived", + "ClientId", + "ClientInfo", + "CountryId", + "CreatedAt", + "Currency", + "Grants", + "Bonuses", + "Login", + "Notification", + "OverdraftSumAvailable", + "Phone", + "Representatives", + "Restrictions", + "Settings", + "Type", + "Subtype", + "VatRate", + "ManagedLogins", + "ForbiddenPlatform", + "AvailableCampaignTypes", + "AvailableAdGroupTypes", + "ProductMode" +]
- Changed
get_statistics1 field changed- changed
Input schema / properties / attributionModels / descriptionPrevious value: -"Модели атрибуции для конверсий. По умолчанию LC (последний переход)."New value: +"Модели атрибуции для конверсий по целям из goals; без goals не применяются (API их тогда не принимает). По умолчанию LC (последний переход)."
- Removed
get_vcards - Changed
list_ad_groups1 field changed- added
Input schema / properties / fieldNames / items / enumAdded value: +[ + "Id", + "CampaignId", + "Status", + "Name", + "RegionIds", + "RestrictedRegionIds", + "NegativeKeywords", + "NegativeKeywordSharedSetIds", + "Type", + "TrackingParams", + "Subtype", + "ServingStatus" +]
- Changed
list_ads2 fields changed- changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Какие поля объявления вернуть."New value: +"Какие поля объявления вернуть. Тексты и ссылки (Title, Title2, Text, Href, …) приходят в объекте TextAd." - added
Input schema / properties / fieldNames / items / enumAdded value: +[ + "AdCategories", + "AgeLabel", + "AdGroupId", + "CampaignId", + "Id", + "State", + "Status", + "StatusClarification", + "Type", + "Subtype", + "Title", + "Title2", + "Text", + "Href", + "FinalUrl", + "DisplayDomain", + "DisplayUrlPath", + "Mobile", + "SitelinkSetId", + "VCardId", + "AdImageHash", + "AdExtensions", + "TurboPageId", + "BusinessId", + "ErirAdDescription" +]
- Changed
list_campaigns2 fields changed- changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Какие поля кампании вернуть."New value: +"Какие поля кампании вернуть. Стратегии и настройки конкретного типа кампании здесь не запрашиваются." - added
Input schema / properties / fieldNames / items / enumAdded value: +[ + "BlockedIps", + "ExcludedSites", + "Currency", + "DailyBudget", + "Notification", + "EndDate", + "Funds", + "ClientInfo", + "Id", + "Name", + "NegativeKeywords", + "RepresentedBy", + "StartDate", + "CreateTime", + "Statistics", + "State", + "Status", + "StatusPayment", + "StatusClarification", + "SourceId", + "TimeTargeting", + "TimeZone", + "Type" +]
- Changed
list_keywords1 field changed- added
Input schema / properties / fieldNames / items / enumAdded value: +[ + "Id", + "Keyword", + "State", + "Status", + "AdGroupId", + "CampaignId", + "Bid", + "AutotargetingSearchBidIsAuto", + "ContextBid", + "StrategyPriority", + "UserParam1", + "UserParam2", + "Productivity", + "StatisticsSearch", + "StatisticsNetwork", + "ServingStatus", + "AutotargetingCategories", + "AutotargetingBrandOptions", + "AutotargetingMode", + "AutotargetingBrief", + "AutotargetingBriefSuggests" +]
- Changed
raw_request1 field changed- changed
Input schema / properties / service / descriptionPrevious value: -"Путь сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch."New value: +"Путь сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, adextensions, changes, keywordsresearch."
- Changed
set_keyword_bids1 field changed- changed
Input schema / properties / bids / descriptionPrevious value: -"В каждом элементе нужен один целевой id и хотя бы одно из полей bid/contextBid."New value: +"В каждом элементе ровно один целевой id (keywordId, adGroupId или campaignId) и хотя бы одно из полей bid/contextBid. Тип id одинаков во всех элементах: смешивать keywordId, adGroupId и campaignId в одном вызове нельзя."
1 tool update
v1.5.2- Changed
get_statistics6 fields changed- added
Input schema / properties / attributionModelsAdded value: +{ + "description": "Модели атрибуции для конверсий. По умолчанию LC (последний переход).", + "items": { + "enum": [ + "FCCD", + "LC", + "LSCCD", + "AUTO" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / dateRangeType / enumPrevious value: -[ - "TODAY", - "YESTERDAY", - "LAST_7_DAYS", - "LAST_30_DAYS", - "THIS_MONTH", - "LAST_MONTH", - "ALL_TIME", - "CUSTOM_DATE" -]New value: +[ + "TODAY", + "YESTERDAY", + "LAST_3_DAYS", + "LAST_5_DAYS", + "LAST_7_DAYS", + "LAST_14_DAYS", + "LAST_30_DAYS", + "LAST_90_DAYS", + "LAST_365_DAYS", + "THIS_WEEK_MON_TODAY", + "THIS_WEEK_SUN_TODAY", + "LAST_WEEK", + "LAST_BUSINESS_WEEK", + "LAST_WEEK_SUN_SAT", + "THIS_MONTH", + "LAST_MONTH", + "ALL_TIME", + "CUSTOM_DATE", + "AUTO" +] - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Колонки отчёта (должны быть допустимы для его типа)."New value: +"Колонки отчёта (должны быть допустимы для его типа). Сверх базовых метрик: Conversions, ConversionRate, CostPerConversion, Revenue, Profit, GoalsRoi. Разрезы CUSTOM_REPORT: Date, Device, Age, Gender, LocationOfPresenceName, Placement, AdNetworkType, Slot и др." - added
Input schema / properties / filtersAdded value: +{ + "description": "Произвольные условия SelectionCriteria.Filter, складываются с campaignIds по И. Например Clicks GREATER_THAN 0 или Device EQUALS MOBILE.", + "items": { + "additionalProperties": false, + "properties": { + "field": { + "description": "Поле для фильтрации (должно быть допустимо для типа отчёта).", + "type": "string" + }, + "operator": { + "description": "Оператор сравнения.", + "enum": [ + "EQUALS", + "NOT_EQUALS", + "IN", + "NOT_IN", + "LESS_THAN", + "GREATER_THAN", + "STARTS_WITH_IGNORE_CASE", + "DOES_NOT_START_WITH_IGNORE_CASE", + "STARTS_WITH_ANY_IGNORE_CASE", + "DOES_NOT_START_WITH_ALL_IGNORE_CASE" + ], + "type": "string" + }, + "values": { + "description": "Значения; числа передавать строками, деньги — в валюте аккаунта.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "field", + "operator", + "values" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / goalsAdded value: +{ + "description": "Id целей Яндекс Метрики (не более 10). Без них Conversions и Revenue считаются по всем целям кампании; с ними колонки приходят как <поле>_<idЦели>_<модель> (по одной на цель × модель). Для SEARCH_QUERY_PERFORMANCE_REPORT — только одна цель и одна модель.", + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / reportType / enumPrevious value: -[ - "ACCOUNT_PERFORMANCE_REPORT", - "CAMPAIGN_PERFORMANCE_REPORT", - "ADGROUP_PERFORMANCE_REPORT", - "AD_PERFORMANCE_REPORT", - "CRITERIA_PERFORMANCE_REPORT", - "SEARCH_QUERY_PERFORMANCE_REPORT" -]New value: +[ + "ACCOUNT_PERFORMANCE_REPORT", + "CAMPAIGN_PERFORMANCE_REPORT", + "ADGROUP_PERFORMANCE_REPORT", + "AD_PERFORMANCE_REPORT", + "CRITERIA_PERFORMANCE_REPORT", + "SEARCH_QUERY_PERFORMANCE_REPORT", + "CUSTOM_REPORT" +]
42 tool updates
v1.6.0- Changed
ad_action1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
add_bid_modifier1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
add_callouts1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
add_keywords1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
campaign_action1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Added
clients_overview - Changed
create_ad_group1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
create_sitelinks_set1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
create_text_ad1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
create_text_campaign1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
create_vcard1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
delete_ad_groups1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
delete_bid_modifiers1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
delete_callouts1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
delete_sitelinks1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
delete_vcards1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_account_info1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_ad_images1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_ad_videos1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_balance1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_bid_modifiers1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_callouts1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_creatives1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_dictionaries1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_quota2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_regions1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_sitelinks1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_statistics1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
get_vcards1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
keyword_action1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
list_ad_groups1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
list_ads1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
list_campaigns1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Added
list_clients - Changed
list_keywords1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
raw_request1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
set_bid_modifiers1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
set_keyword_bids1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
update_ad_group1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
update_campaign1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
update_text_ad1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
- Changed
upload_ad_image1 field changed- added
Input schema / properties / client_loginAdded value: +{ + "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.", + "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$", + "type": "string" +}
43 tool updates
v1.5.1- Changed
ad_action1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Ad ids to act on."New value: +"Id объявлений, к которым применить действие."
- Changed
add_bid_modifier9 fields changed- changed
Input schema / properties / adGroupId / descriptionPrevious value: -"Target ad group id (use this OR campaignId)."New value: +"Id группы объявлений (либо это поле, либо campaignId)." - changed
Input schema / properties / campaignId / descriptionPrevious value: -"Target campaign id (use this OR adGroupId)."New value: +"Id кампании (либо это поле, либо adGroupId)." - changed
Input schema / properties / demographics / descriptionPrevious value: -"Demographic bid adjustments."New value: +"Корректировки по демографии." - changed
Input schema / properties / desktop / descriptionPrevious value: -"Desktop bid adjustment."New value: +"Корректировка для десктопа." - changed
Input schema / properties / mobile / descriptionPrevious value: -"Mobile bid adjustment."New value: +"Корректировка для мобильных." - changed
Input schema / properties / mobile / properties / os / descriptionPrevious value: -"Limit to IOS or ANDROID."New value: +"Ограничить IOS или ANDROID." - changed
Input schema / properties / mobile / properties / percent / descriptionPrevious value: -"Adjustment percent."New value: +"Процент корректировки." - changed
Input schema / properties / regional / descriptionPrevious value: -"Regional bid adjustments."New value: +"Корректировки по регионам." - changed
Input schema / properties / retargeting / descriptionPrevious value: -"Retargeting bid adjustments."New value: +"Корректировки по ретаргетингу."
- Changed
add_callouts1 field changed- changed
Input schema / properties / texts / descriptionPrevious value: -"Callout texts, up to 25 characters each."New value: +"Тексты уточнений, до 25 символов каждый."
- Changed
add_keywords5 fields changed- changed
Input schema / properties / adGroupId / descriptionPrevious value: -"Target ad group id."New value: +"Id группы объявлений." - changed
Input schema / properties / keywords / descriptionPrevious value: -"Keywords to add."New value: +"Ключевые фразы для добавления." - changed
Input schema / properties / keywords / items / properties / bid / descriptionPrevious value: -"Search bid in currency units."New value: +"Ставка на поиске в валюте аккаунта." - changed
Input schema / properties / keywords / items / properties / contextBid / descriptionPrevious value: -"Network bid in currency units."New value: +"Ставка в сетях в валюте аккаунта." - changed
Input schema / properties / keywords / items / properties / keyword / descriptionPrevious value: -"Keyword phrase, with operators if needed."New value: +"Ключевая фраза, при необходимости с операторами."
- Added
auth_status - Changed
campaign_action1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Campaign ids to act on."New value: +"Id кампаний, к которым применить действие."
- Changed
create_ad_group3 fields changed- changed
Input schema / properties / campaignId / descriptionPrevious value: -"Parent campaign id."New value: +"Id родительской кампании." - changed
Input schema / properties / name / descriptionPrevious value: -"Ad group name."New value: +"Название группы объявлений." - changed
Input schema / properties / regionIds / descriptionPrevious value: -"Target geo region ids, e.g. [225] for Russia."New value: +"Id регионов показа, например [225] — Россия."
- Changed
create_sitelinks_set4 fields changed- changed
Input schema / properties / sitelinks / descriptionPrevious value: -"1–8 sitelinks."New value: +"От 1 до 8 быстрых ссылок." - changed
Input schema / properties / sitelinks / items / properties / description / descriptionPrevious value: -"Sitelink description (for some ad types)."New value: +"Описание быстрой ссылки (для некоторых типов объявлений)." - changed
Input schema / properties / sitelinks / items / properties / href / descriptionPrevious value: -"Sitelink URL."New value: +"URL быстрой ссылки." - changed
Input schema / properties / sitelinks / items / properties / title / descriptionPrevious value: -"Sitelink title."New value: +"Текст быстрой ссылки."
- Changed
create_text_ad9 fields changed- changed
Input schema / properties / adGroupId / descriptionPrevious value: -"Parent ad group id."New value: +"Id родительской группы объявлений." - changed
Input schema / properties / href / descriptionPrevious value: -"Landing page URL."New value: +"URL посадочной страницы (обязателен для TextAdAdd)." - added
Input schema / properties / href / minLengthAdded value: +1 - added
Input schema / properties / mobile / defaultAdded value: +false - changed
Input schema / properties / mobile / descriptionPrevious value: -"Whether this is a mobile ad."New value: +"Мобильное ли это объявление. Поле в API устарело (значение принудительно NO), но остаётся обязательным." - changed
Input schema / properties / text / descriptionPrevious value: -"Ad body text, up to 81 characters."New value: +"Текст объявления, до 81 символа." - changed
Input schema / properties / title / descriptionPrevious value: -"Title (Title 1), up to 56 characters."New value: +"Заголовок (Title 1), до 56 символов." - changed
Input schema / properties / title2 / descriptionPrevious value: -"Second title (Title 2), up to 30 characters."New value: +"Второй заголовок (Title 2), до 30 символов." - changed
Input schema / requiredPrevious value: -[ - "adGroupId", - "title", - "text" -]New value: +[ + "adGroupId", + "title", + "text", + "href" +]
- Changed
create_text_campaign6 fields changed- changed
Input schema / properties / biddingStrategy / descriptionPrevious value: -"Full BiddingStrategy object {Search, Network}. Overrides the default."New value: +"Полный объект BiddingStrategy {Search, Network}. Заменяет значение по умолчанию." - changed
Input schema / properties / dailyBudgetAmount / descriptionPrevious value: -"Daily budget in account currency units (converted to micros)."New value: +"Дневной бюджет в валюте аккаунта (конвертируется в микроединицы)." - added
Input schema / properties / dailyBudgetMode / descriptionAdded value: +"Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. По умолчанию STANDARD." - changed
Input schema / properties / endDate / descriptionPrevious value: -"End date, format YYYY-MM-DD."New value: +"Дата окончания в формате YYYY-MM-DD." - changed
Input schema / properties / name / descriptionPrevious value: -"Campaign name."New value: +"Название кампании." - changed
Input schema / properties / startDate / descriptionPrevious value: -"Start date, format YYYY-MM-DD."New value: +"Дата начала в формате YYYY-MM-DD."
- Changed
create_vcard12 fields changed- changed
Input schema / properties / campaignId / descriptionPrevious value: -"Campaign the vCard belongs to."New value: +"Кампания, к которой относится визитка." - changed
Input schema / properties / city / descriptionPrevious value: -"City, e.g. Москва."New value: +"Город, например Москва." - changed
Input schema / properties / companyName / descriptionPrevious value: -"Company name."New value: +"Название организации." - changed
Input schema / properties / country / descriptionPrevious value: -"Country, e.g. Россия."New value: +"Страна, например Россия." - changed
Input schema / properties / extraMessage / descriptionPrevious value: -"Additional info shown on the card."New value: +"Дополнительная информация на визитке." - changed
Input schema / properties / ogrn / descriptionPrevious value: -"OGRN registration number."New value: +"ОГРН." - changed
Input schema / properties / phone / descriptionPrevious value: -"Contact phone."New value: +"Контактный телефон." - changed
Input schema / properties / phone / properties / cityCode / descriptionPrevious value: -"City/operator code, e.g. \"495\"."New value: +"Код города или оператора, например \"495\"." - changed
Input schema / properties / phone / properties / countryCode / descriptionPrevious value: -"Country code, e.g. \"+7\"."New value: +"Код страны, например \"+7\"." - changed
Input schema / properties / phone / properties / extension / descriptionPrevious value: -"Extension, if any."New value: +"Добавочный номер, если есть." - changed
Input schema / properties / phone / properties / phoneNumber / descriptionPrevious value: -"Local number."New value: +"Местный номер." - changed
Input schema / properties / workTime / descriptionPrevious value: -"Work time in API format, e.g. \"1#5#9#00#18#00\" = Mon–Fri 09:00–18:00."New value: +"Время работы в формате API, например \"1#5#9#00#18#00\" — пн–пт 09:00–18:00."
- Changed
delete_ad_groups1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Ad group ids to delete."New value: +"Id групп, которые нужно удалить."
- Changed
delete_bid_modifiers1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Bid modifier ids to delete."New value: +"Id корректировок, которые нужно удалить."
- Changed
delete_callouts1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Callout ids to delete."New value: +"Id уточнений, которые нужно удалить."
- Changed
delete_sitelinks1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Sitelink set ids to delete."New value: +"Id наборов, которые нужно удалить."
- Changed
delete_vcards1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"vCard ids to delete."New value: +"Id визиток, которые нужно удалить."
- Added
finish_login - Changed
get_account_info1 field changed- changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Client fields to return. Defaults to a common set."New value: +"Какие поля клиента вернуть. По умолчанию — типовой набор."
- Changed
get_ad_images3 fields changed- changed
Input schema / properties / hashes / descriptionPrevious value: -"Filter by image hashes."New value: +"Фильтр по хешам изображений." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
get_ad_videos3 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Video ids (required by the API)."New value: +"Id видео (обязательны по требованию API)." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
get_balance1 field changed- changed
Input schema / properties / logins / descriptionPrevious value: -"Account logins to fetch. Defaults to the token's own account."New value: +"Логины аккаунтов, по которым нужны данные. По умолчанию — собственный аккаунт токена."
- Changed
get_bid_modifiers5 fields changed- changed
Input schema / properties / adGroupIds / descriptionPrevious value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений." - changed
Input schema / properties / campaignIds / descriptionPrevious value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний." - changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by bid modifier ids."New value: +"Фильтр по id корректировок." - changed
Input schema / properties / levels / descriptionPrevious value: -"Levels to read. Defaults to both CAMPAIGN and AD_GROUP."New value: +"Уровни, на которых читать. По умолчанию оба: CAMPAIGN и AD_GROUP." - changed
Input schema / properties / types / descriptionPrevious value: -"Filter by adjustment types."New value: +"Фильтр по типам корректировок."
- Changed
get_callouts3 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by callout ids."New value: +"Фильтр по id уточнений." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
get_creatives3 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by creative ids."New value: +"Фильтр по id креативов." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
get_dictionaries1 field changed- changed
Input schema / properties / names / descriptionPrevious value: -"Dictionary names to fetch."New value: +"Названия нужных справочников."
- Changed
get_regions2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max regions to return. Default 50."New value: +"Максимум регионов в ответе. По умолчанию 50." - changed
Input schema / properties / query / descriptionPrevious value: -"Case-insensitive substring of the region name, e.g. 'Москва' or 'Moscow'."New value: +"Подстрока названия региона без учёта регистра, например 'Москва' или 'Moscow'."
- Changed
get_sitelinks3 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Sitelink set ids (required by the API)."New value: +"Id наборов быстрых ссылок (обязательны по требованию API)." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
get_statistics14 fields changed- changed
Input schema / properties / campaignIds / descriptionPrevious value: -"Limit the report to these campaign ids."New value: +"Ограничить отчёт этими id кампаний." - changed
Input schema / properties / dateFrom / descriptionPrevious value: -"Start date YYYY-MM-DD (required for CUSTOM_DATE)."New value: +"Дата начала YYYY-MM-DD (обязательна для CUSTOM_DATE)." - changed
Input schema / properties / dateRangeType / descriptionPrevious value: -"Predefined date range. Inferred as CUSTOM_DATE when dateFrom/dateTo are given."New value: +"Предустановленный период. Если заданы dateFrom/dateTo, подставляется CUSTOM_DATE." - changed
Input schema / properties / dateTo / descriptionPrevious value: -"End date YYYY-MM-DD (required for CUSTOM_DATE)."New value: +"Дата окончания YYYY-MM-DD (обязательна для CUSTOM_DATE)." - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Report columns (must be valid for the report type)."New value: +"Колонки отчёта (должны быть допустимы для его типа)." - changed
Input schema / properties / includeVat / descriptionPrevious value: -"Whether costs include VAT. Default true."New value: +"Включать ли НДС в расход. По умолчанию true." - changed
Input schema / properties / minCost / descriptionPrevious value: -"Only include rows with Cost >= this in the detail list."New value: +"Включать в детализацию только строки с Cost >= этого значения." - changed
Input schema / properties / order / descriptionPrevious value: -"Sort order for detail rows. Default desc."New value: +"Порядок сортировки строк детализации. По умолчанию desc." - changed
Input schema / properties / queryContains / descriptionPrevious value: -"Only include rows whose query/criterion contains this substring (case-insensitive)."New value: +"Включать только строки, где запрос или условие содержит эту подстроку (без учёта регистра)." - changed
Input schema / properties / reportType / descriptionPrevious value: -"Report type. Default CAMPAIGN_PERFORMANCE_REPORT."New value: +"Тип отчёта. По умолчанию CAMPAIGN_PERFORMANCE_REPORT." - changed
Input schema / properties / sortBy / descriptionPrevious value: -"Metric to rank the detail rows by. Default Cost."New value: +"Метрика для ранжирования строк детализации. По умолчанию Cost." - changed
Input schema / properties / topN / descriptionPrevious value: -"Max detail rows in the summary (server-capped at 100). Default 50."New value: +"Максимум строк детализации в сводке (на сервере ограничено 100). По умолчанию 50." - changed
Input schema / properties / zeroClicksOnly / descriptionPrevious value: -"Only include rows with 0 clicks in the detail list."New value: +"Включать в детализацию только строки с 0 кликов." - changed
Input schema / properties / zeroConversionsOnly / descriptionPrevious value: -"Only rows with clicks>0 and 0 conversions (needs Conversions in fieldNames)."New value: +"Только строки с clicks>0 и 0 конверсий (нужно Conversions в fieldNames)."
- Changed
get_vcards3 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"vCard ids (required by the API)."New value: +"Id визиток (обязательны по требованию API)." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
- Changed
keyword_action1 field changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Keyword ids to act on."New value: +"Id ключевых фраз, к которым применить действие."
- Changed
list_ad_groups6 fields changed- changed
Input schema / properties / autoPaginate / descriptionPrevious value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)." - changed
Input schema / properties / campaignIds / descriptionPrevious value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний." - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Ad group fields to return."New value: +"Какие поля группы вернуть." - changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
- Changed
list_ads9 fields changed- changed
Input schema / properties / adGroupIds / descriptionPrevious value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений." - changed
Input schema / properties / autoPaginate / descriptionPrevious value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)." - changed
Input schema / properties / campaignIds / descriptionPrevious value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний." - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Ad fields to return."New value: +"Какие поля объявления вернуть." - changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by ad ids."New value: +"Фильтр по id объявлений." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)." - changed
Input schema / properties / states / descriptionPrevious value: -"Filter by ad states."New value: +"Фильтр по состояниям объявлений." - changed
Input schema / properties / statuses / descriptionPrevious value: -"Filter by moderation statuses."New value: +"Фильтр по статусам модерации."
- Changed
list_campaigns8 fields changed- changed
Input schema / properties / autoPaginate / descriptionPrevious value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)." - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Campaign fields to return."New value: +"Какие поля кампании вернуть." - changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)." - changed
Input schema / properties / states / descriptionPrevious value: -"Filter by campaign states."New value: +"Фильтр по состояниям кампаний." - changed
Input schema / properties / statuses / descriptionPrevious value: -"Filter by moderation statuses."New value: +"Фильтр по статусам модерации." - changed
Input schema / properties / types / descriptionPrevious value: -"Filter by campaign types."New value: +"Фильтр по типам кампаний."
- Changed
list_keywords7 fields changed- changed
Input schema / properties / adGroupIds / descriptionPrevious value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений." - changed
Input schema / properties / autoPaginate / descriptionPrevious value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)." - changed
Input schema / properties / campaignIds / descriptionPrevious value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний." - changed
Input schema / properties / fieldNames / descriptionPrevious value: -"Keyword fields to return."New value: +"Какие поля ключевой фразы вернуть." - changed
Input schema / properties / ids / descriptionPrevious value: -"Filter by keyword ids."New value: +"Фильтр по id ключевых фраз." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max objects per page."New value: +"Максимум объектов на страницу." - changed
Input schema / properties / offset / descriptionPrevious value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
- Added
logout - Changed
raw_request4 fields changed- changed
Input schema / properties / confirmWrite / descriptionPrevious value: -"Must be true to run a write method (anything other than get/has/check)."New value: +"Должен быть true для запуска метода записи (всё, кроме get/has/check)." - changed
Input schema / properties / method / descriptionPrevious value: -"API method, e.g. get, add, update, delete, set, toggle, checkCampaigns."New value: +"Метод API, например get, add, update, delete, set, toggle, checkCampaigns." - changed
Input schema / properties / params / descriptionPrevious value: -"Raw params object for the method."New value: +"Объект params для метода — как есть." - changed
Input schema / properties / service / descriptionPrevious value: -"Lowercase service path, e.g. campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch."New value: +"Путь сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch."
- Changed
set_bid_modifiers5 fields changed- changed
Input schema / properties / bids / descriptionPrevious value: -"Each item needs an id and at least one of percent/enabled."New value: +"В каждом элементе нужны id и percent." - removed
Input schema / properties / bids / items / properties / enabledRemoved value: -{ - "description": "Enable or disable the adjustment.", - "type": "boolean" -} - changed
Input schema / properties / bids / items / properties / id / descriptionPrevious value: -"Bid modifier id."New value: +"Id корректировки." - changed
Input schema / properties / bids / items / properties / percent / descriptionPrevious value: -"New adjustment percent."New value: +"Новый процент корректировки." - changed
Input schema / properties / bids / items / requiredPrevious value: -[ - "id" -]New value: +[ + "id", + "percent" +]
- Changed
set_keyword_bids6 fields changed- changed
Input schema / properties / bids / descriptionPrevious value: -"Each item needs one target id and at least one of bid/contextBid."New value: +"В каждом элементе нужен один целевой id и хотя бы одно из полей bid/contextBid." - changed
Input schema / properties / bids / items / properties / adGroupId / descriptionPrevious value: -"Target all keywords in an ad group."New value: +"Применить ко всем фразам группы объявлений." - changed
Input schema / properties / bids / items / properties / bid / descriptionPrevious value: -"Search bid in currency units."New value: +"Ставка на поиске в валюте аккаунта." - changed
Input schema / properties / bids / items / properties / campaignId / descriptionPrevious value: -"Target all keywords in a campaign."New value: +"Применить ко всем фразам кампании." - changed
Input schema / properties / bids / items / properties / contextBid / descriptionPrevious value: -"Network bid in currency units."New value: +"Ставка в сетях в валюте аккаунта." - changed
Input schema / properties / bids / items / properties / keywordId / descriptionPrevious value: -"Target a single keyword."New value: +"Применить к одной ключевой фразе."
- Added
start_login - Changed
update_ad_group4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Ad group id to update."New value: +"Id группы, которую нужно обновить." - changed
Input schema / properties / name / descriptionPrevious value: -"New ad group name."New value: +"Новое название группы." - changed
Input schema / properties / negativeKeywords / descriptionPrevious value: -"Replace the ad group's negative keywords; pass an empty array to clear them."New value: +"Заменяет минус-фразы группы; пустой массив очищает их." - changed
Input schema / properties / regionIds / descriptionPrevious value: -"New target geo region ids."New value: +"Новые id регионов показа."
- Changed
update_campaign6 fields changed- changed
Input schema / properties / dailyBudgetAmount / descriptionPrevious value: -"Daily budget in account currency units."New value: +"Дневной бюджет в валюте аккаунта." - added
Input schema / properties / dailyBudgetMode / descriptionAdded value: +"Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. Если не задан, сохраняется текущий режим кампании." - changed
Input schema / properties / endDate / descriptionPrevious value: -"New end date, format YYYY-MM-DD."New value: +"Новая дата окончания в формате YYYY-MM-DD." - changed
Input schema / properties / id / descriptionPrevious value: -"Campaign id to update."New value: +"Id кампании, которую нужно обновить." - changed
Input schema / properties / name / descriptionPrevious value: -"New campaign name."New value: +"Новое название кампании." - changed
Input schema / properties / negativeKeywords / descriptionPrevious value: -"Replace the campaign's negative keywords; pass an empty array to clear them."New value: +"Заменяет минус-фразы кампании; пустой массив очищает их."
- Changed
update_text_ad5 fields changed- changed
Input schema / properties / href / descriptionPrevious value: -"New landing page URL."New value: +"Новый URL посадочной страницы." - changed
Input schema / properties / id / descriptionPrevious value: -"Ad id to update."New value: +"Id объявления, которое нужно обновить." - changed
Input schema / properties / text / descriptionPrevious value: -"New body text, up to 81 characters."New value: +"Новый текст объявления, до 81 символа." - changed
Input schema / properties / title / descriptionPrevious value: -"New Title (Title 1), up to 56 characters."New value: +"Новый заголовок (Title 1), до 56 символов." - changed
Input schema / properties / title2 / descriptionPrevious value: -"New second title (Title 2), up to 30 characters."New value: +"Новый второй заголовок (Title 2), до 30 символов."
- Changed
upload_ad_image3 fields changed- changed
Input schema / properties / imageData / descriptionPrevious value: -"Base64-encoded image bytes (a data: URL prefix is stripped). Provide this or url."New value: +"Байты изображения в base64 (префикс data:-URL отбрасывается). Нужно передать это поле или url." - changed
Input schema / properties / name / descriptionPrevious value: -"Image name shown in the library."New value: +"Название изображения в библиотеке." - changed
Input schema / properties / url / descriptionPrevious value: -"Public image URL; fetched and base64-encoded server-side. Provide this or imageData."New value: +"Публичный URL изображения; сервер скачает его и закодирует в base64. Нужно передать это поле или imageData."
9 tool updates
v0.1.1- Changed
get_ad_images1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Changed
get_ad_videos1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Added
get_balance - Changed
get_callouts1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Changed
get_creatives1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Changed
get_sitelinks1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Changed
get_statistics3 fields changed- removed
Input schema / properties / dateTo / $refRemoved value: -"#/properties/dateFrom" - added
Input schema / properties / dateTo / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / dateTo / typeAdded value: +"string"
- Changed
get_vcards1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -10000New value: +1000
- Changed
list_campaigns1 field changed- changed
Input schema / properties / types / items / enumPrevious value: -[ - "TEXT_CAMPAIGN", - "MOBILE_APP_CAMPAIGN", - "DYNAMIC_TEXT_CAMPAIGN", - "CPM_BANNER_CAMPAIGN", - "SMART_CAMPAIGN", - "MCBANNER_CAMPAIGN" -]New value: +[ + "TEXT_CAMPAIGN", + "MOBILE_APP_CAMPAIGN", + "DYNAMIC_TEXT_CAMPAIGN", + "CPM_BANNER_CAMPAIGN", + "SMART_CAMPAIGN", + "MCBANNER_CAMPAIGN", + "UNIFIED_CAMPAIGN" +]
39 tool updates
v0.1.0- First observed
ad_action - First observed
add_bid_modifier - First observed
add_callouts - First observed
add_keywords - First observed
campaign_action - First observed
create_ad_group - First observed
create_sitelinks_set - First observed
create_text_ad - First observed
create_text_campaign - First observed
create_vcard - First observed
delete_ad_groups - First observed
delete_bid_modifiers - First observed
delete_callouts - First observed
delete_sitelinks - First observed
delete_vcards - First observed
get_account_info - First observed
get_ad_images - First observed
get_ad_videos - First observed
get_bid_modifiers - First observed
get_callouts - First observed
get_creatives - First observed
get_dictionaries - First observed
get_quota - First observed
get_regions - First observed
get_sitelinks - First observed
get_statistics - First observed
get_vcards - First observed
keyword_action - First observed
list_ad_groups - First observed
list_ads - First observed
list_campaigns - First observed
list_keywords - First observed
raw_request - First observed
set_bid_modifiers - First observed
set_keyword_bids - First observed
update_ad_group - First observed
update_campaign - First observed
update_text_ad - First observed
upload_ad_image
TDQS
Scored across 43 tools
Each tool targets a distinct resource+operation (campaigns vs ad groups vs ads vs keywords vs bid modifiers vs sitelinks vs callouts vs libraries), and the descriptions explicitly differentiate the close pairs (add_bid_modifier vs set_bid_modifiers vs delete_bid_modifiers, campaign_action vs update_campaign). The only real overlaps are the client-related trio (list_clients, clients_overview, get_account_info) and raw_request acting as a catch-all for everything else, but both are clearly framed.
The dominant pattern is verb_noun (list_campaigns, create_text_ad, get_bid_modifiers, delete_callouts, upload_ad_image), with a consistent secondary family of <resource>_action (campaign_action, ad_action, keyword_action). Minor deviations exist — logout and auth_status break the pattern, and clients_overview/raw_request are noun-first — but overall the scheme is predictable.
43 tools is heavy and sits above the comfortable range, forcing an agent to scan a large surface. However, the domain (full Yandex Direct v5 advertising API: campaigns, groups, ads, keywords, bids, extensions, media libraries, reporting, clients, auth) genuinely spans this many distinct resources, so most tools do earn their place rather than being redundant.
Coverage is broad and lifecycle-oriented: create/list/update/action for campaigns, groups, and ads; add/list/action/bid-setting for keywords; add/get/set/delete for bid modifiers; create/get/delete for sitelinks and callouts; upload/get for images; plus reporting, balance, quota, clients, and auth. A few gaps remain (video/creative upload, image deletion, single-object getters) but raw_request is a documented escape hatch that prevents dead ends.
Maintenance
Related MCP Connectors
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
Google Ads analysis and operations — read performance, manage keywords, bids, and campaigns.
Yandex Direct, Metrika & Wordstat MCP for Russian digital marketing.
Read-only Yandex Metrika MCP. Query visits, sources, geo, devices and more in plain language.
Related MCP Servers
- AlicenseAqualityDmaintenanceIntegrates with Yandex Direct API v5 to manage ads via 20 tools, with dry-run protection preventing accidental spending.21MIT
- AlicenseNot gradedqualityBmaintenanceEnables interaction with Yandex advertising and analytics APIs (Direct, Metrika, Audience, Webmaster, AdMetrica) through MCP tools, resources, and prompts for campaign management and data retrieval.MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Yandex Direct advertising campaigns, ads, keywords, and reports via natural language using the Yandex Direct API v5.21MIT
- AlicenseAqualityCmaintenanceEnables AI agents to manage Yandex Direct advertising accounts via the API v5, including reports, bids, campaign management, and semantic analysis through natural language requests.4396 npmMIT