yandex-direct-mcp-plus
One line: An MCP server that lets an assistant run Yandex Direct contextual advertising end-to-end from a chat — building campaigns, cleaning search queries, managing bids and reading spend (59 tools, 25 read-only) in Claude Code, Claude Desktop, Cursor or any MCP client.
Campaigns: list/get/create/update, suspend/resume/archive/unarchive/delete, strategies (manual, max clicks, average CPC/CPA, pay per conversion), priority goals, time targeting and schedules.
Ad groups & ads: create groups with region targeting, create/update text ads (≤56/≤30/≤81), suspend/resume/archive/delete, send to moderation.
Keywords & bids: add/update/manage phrases, set search and network bids in rubles, inspect the auction (positions, competitor bids, entry price).
Negative keywords: campaign and group level with explicit
mode(replace/add/remove), plus shared negative-keyword sets and linking them to campaigns/groups.Extensions & creatives: sitelinks, callouts, ad images (upload/get/delete), vcards (read/delete; creation limited by API).
Audiences, goals & feeds: retargeting lists, audience and dynamic targets with bids/priorities, product feeds.
Bid adjustments: devices, demographics, retargeting, regions, income grade, placement — create, modify, delete.
Analytics & account: statistics (impressions, clicks, cost, CTR, CPC), search-query reports for minus-phrasing, change tracking, account balance, business profiles, regions and time-zone references.
Safety & conventions: money in rubles both ways, IDs as strings (64-bit safety),
dry_runon every write tool,DESTRUCTIVEannotation on irreversible deletes, agent mode viaClient-Login, no telemetry, no test sandbox — live ads only.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yandex-direct-mcp-plusshow search queries for the past month and suggest negative keywords"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
yandex-direct-mcp-plus
Ведение контекстной рекламы Яндекс.Директа из диалога с ассистентом: собрать кампанию, разобрать поисковые запросы, вычистить минус-фразы, поправить ставки и посмотреть расход — не переключаясь между разделами кабинета. Работает в любом MCP-клиенте: Claude Code, Claude Desktop, Cursor и другие.
59 инструментов, из них 25 только читают. Кампании и стратегии, группы, объявления и модерация, ключевые фразы и ставки, минус-фразы и общие наборы, быстрые ссылки, уточнения, изображения, визитки, корректировки ставок, ретаргетинг, аудиторные и динамические цели, фиды, расписание показов, статистика, поисковые запросы, баланс и справочники.
Деньги — в рублях, на вводе и на выводе; в микроединицы API сервер переводит сам. Поддержан агентский режим (
Client-Login).ID — строками (
"1915016273214320641"): 64-битные идентификаторы Директа не помещаются в число JavaScript и молча теряют точность.Реклама боевая. Тестовой среды у Директа больше нет — какие инструменты тратят деньги и что удаляют необратимо, перечислено в разделе Что меняет данные.
Телеметрии нет. Сервер не отправляет никуда ничего, кроме запросов к API Яндекса.
Содержание
Что можно делать — примеры запросов обычным текстом
Установка — Claude Code, Claude Desktop, Cursor, из исходников
Токен — как получить и какие переменные окружения нужны
Что меняет данные — что тратит бюджет и что необратимо
Инструменты — полный список с описаниями
Разработка — сборка, тесты, архитектура
Related MCP server: Yandex MCP Server
Что можно делать
Обычным текстом в чате — инструменты сервер подставляет сам:
Собери кампанию «Летняя распродажа»: бюджет 5000 ₽/день, старт 1 мая, показы будни 9–21
Добавь минус-фразы «бесплатно» и «скачать» в кампанию 12345, не затерев остальные
Посмотри поисковые запросы за месяц и предложи, что заминусовать
Подними ставку до 25 ₽ там, где CTR выше 8%, а показов меньше сотни
Что изменилось в кампаниях со вчера?
Покажи расход по кампаниям за неделю и баланс аккаунта
Найди код региона для НовосибирскаПолный список — в разделе Инструменты.
Установка
Нужен Node.js 22+ и OAuth-токен Яндекс.Директа — как его получить.
Claude Code
claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y yandex-direct-mcp-plusClaude Desktop, Cursor и другие клиенты
{
"mcpServers": {
"yandex-direct": {
"command": "npx",
"args": ["-y", "yandex-direct-mcp-plus"],
"env": {
"YANDEX_DIRECT_TOKEN": "ваш_токен"
}
}
}
}Из исходников
git clone git@github.com:Pavelsiba/yandex-direct-mcp-plus.git
cd yandex-direct-mcp-plus
npm ci && npm run buildДальше тот же конфиг, но "command": "node" и путь к dist/app/index.js вместо npx.
Токен
OAuth-токен выпускается для приложения, зарегистрированного в Яндекс OAuth, с доступом к API Директа. Подробности — регистрация приложения и получение токена. Доступ к API нужно запросить в интерфейсе Директа — заявку рассматривают от часа до нескольких суток.
Переменная | Обязательна | Назначение |
| да | OAuth-токен Яндекс.Директ |
| нет | Логин клиента для агентских токенов (заголовок |
Что меняет данные
Тестовой среды у Яндекс.Директа больше нет: песочница отключена с июля 2026, и любой вызов идёт по боевому аккаунту. Отлаживать сценарии приходится на отдельной кампании, оставленной черновиком, — показов она не даёт и потому не тратит бюджет, пока не пройдёт модерацию и не будет включена.
У каждого пишущего инструмента есть параметр dry_run. С dry_run: true вызов проверяет параметры схемой, выполняет нужные ему чтения и возвращает тела запросов, которые ушли бы в Директ, ничего не отправляя.
Граница проходит не по «чтение или запись», а по скорости, с которой действие превращается в деньги.
Только читают все list_*, get_* и справочники. Вызвать их безопасно всегда.
Тратят бюджет или запускают показы:
Инструмент | Чем именно |
|
|
|
|
| Отправляет объявления на модерацию, после неё начнутся показы |
| Меняет дневной бюджет |
| Меняет ставки, то есть цену клика |
| Меняет стратегию — переписывает всю экономику кампании |
| Заводит корректировку: +N% к ставке на срезе аудитории |
| Меняет коэффициент существующей корректировки |
Удаляют необратимо — эти инструменты помечены аннотацией DESTRUCTIVE, и хороший MCP-клиент спросит подтверждение перед вызовом:
manage_campaigns (delete), manage_ads (delete), manage_keywords (delete), delete_ad_groups, delete_ad_extensions, delete_sitelinks, delete_vcards, delete_bid_adjustments, delete_retargeting_lists, manage_ad_images (delete), manage_dynamic_targets (delete), set_audience_targets (delete), manage_negative_keyword_shared_sets (delete).
Сюда же — set_campaign_negative_keywords и set_ad_group_negative_keywords в режиме replace: он затирает прежний список минус-фраз целиком. Именно поэтому у них нет режима по умолчанию — mode приходится назвать явно. Так же устроен set_priority_goals: replace и remove убирают цели стратегии, а любая смена целей перезапускает её обучение.
Остальные инструменты создают и правят объекты. Пока кампания не прошла модерацию и не включена, показов по ней нет и бюджет не расходуется.
Чего API не умеет. Смарт-баннеры и динамические объявления Директ через API не создаёт с 22 мая 2026, визитки — тоже: в WSDL методы есть, боевой API отвечает ошибкой 3500. Такие объекты заводятся в интерфейсе Директа, а дальше сервер с ними работает: кампании читает и правит, визитки читает и удаляет. Единую перфоманс-кампанию сервер пока только читает.
Инструменты
Кампании
Инструмент | Описание |
| Список кампаний (фильтр по статусу/типу, пагинация) |
| Детальная информация о кампании по ID |
| Создать текстово-графическую кампанию (бюджет в рублях, выбор стратегии, часовой пояс, UTM-разметка) |
| Обновить название/бюджет/UTM-разметку и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE) |
| suspend/resume/archive/unarchive/delete для списка кампаний |
| Получить стратегию текстово-графической кампании |
| Сменить стратегию: ручная, максимум кликов, средняя цена клика/конверсии, оплата за конверсию |
| Цели стратегии и их ценность в рублях: добавить, убрать или заменить список |
| Расписание показов: часовой пояс, часы по дням недели, праздники |
| Задать расписание показов и почасовые коэффициенты (заменяет целиком) |
Группы объявлений
Инструмент | Описание |
| Группы объявлений выбранных кампаний |
| Создать группу с таргетингом по регионам |
| Удалить группы по ID |
| Минус-фразы группы: |
Объявления
Инструмент | Описание |
| Объявления в группах |
| Создать текстовое объявление (≤56/≤30/≤81) |
| Обновить заголовок/текст/ссылку |
| suspend/resume/archive/unarchive/moderate/delete |
| Отправить объявления на модерацию |
Ключевые слова и ставки
Инструмент | Описание |
| Ключевые фразы в группах (ставки в рублях) |
| Добавить ключевые фразы |
| Изменить текст фразы и подстановочные переменные |
| Установить ставки (поиск/сети, рубли) на фразах/группах/кампаниях |
| Аукцион по фразам: ставки и списываемые цены по позициям, ставки конкурентов, цена входа (рубли) |
| suspend/resume/delete |
| Минус-фразы кампании: |
| Получить минус-фразы кампаний |
Быстрые ссылки, уточнения и корректировки
Инструмент | Описание |
| Получить наборы быстрых ссылок |
| Создать новый набор быстрых ссылок |
| Удалить наборы быстрых ссылок |
| Получить уточнения (callouts) |
| Создать уточнения |
| Удалить уточнения |
| Загрузить, получить или удалить изображения |
| Получить корректировки: устройства, пол и возраст, аудитории, регионы, платёжеспособность, размещение |
| Создать корректировки на кампаниях или группах |
| Изменить коэффициенты существующих корректировок |
| Удалить корректировки по ID |
Аудитории, цели и фиды
Инструмент | Описание |
| Получить условия ретаргетинга и подбора аудитории |
| Создать условие ретаргетинга |
| Изменить название, описание и правила условий (правила заменяются целиком) |
| Удалить условия ретаргетинга |
| Получить аудиторные цели |
| add/set_bids/suspend/resume/delete аудиторных целей |
| Получить динамические цели |
| add/set_bids/suspend/resume/delete динамических целей |
| Получить товарные фиды |
| Получить общие наборы минус-фраз |
| add/update/delete общих наборов |
| Привязать общие наборы к кампаниям и группам объявлений |
Статистика, аккаунт, справочники
Инструмент | Описание |
| Статистика за период (показы, клики, расход, CTR, CPC) |
| Фактические поисковые запросы для подбора минус-фраз |
| Проверить изменения кампаний, групп, объявлений и справочников |
| Получить виртуальные визитки |
| Удалить визитки по ID |
| Получить профили организаций Яндекс Бизнеса |
| Баланс аккаунта (Live API v4) |
| Справочник кодов регионов (225 = Россия), с вложенностью по запросу |
| Справочник часовых поясов для расписания показов |
Разработка
npm install
npm run build # tsc → dist/
npm test # vitest (моки fetch)
npm run dev # tsx --conditions=development src/app/index.ts
npm run lint # biome
npm run typecheck # tsc --noEmit
npm run lint:dead # knipСетевые тесты (npm run test:int) идут по боевому аккаунту и пишут только в кампанию-полигон, оставленную черновиком: её ID задаётся переменной YANDEX_DIRECT_POLYGON_CAMPAIGN_ID. Без переменной они пропускаются.
Код разложен по слоям app → tools → shared; инструмент — это каталог
src/tools/<домен>/ с schema.ts, handler.ts и tool.ts. Подробности —
в docs/architecture.md.
Происхождение и благодарности
Проект начат на коде theYahia/yandex-direct-mcp под лицензией MIT. Расширение с 20 до 48 инструментов и перевод ID на строки — работа Maxim (DrSeedon), PR #7; в npm эта версия не публиковалась. Дальше проект развивается самостоятельно и апстрим не отслеживает.
История до отделения от апстрима (версии 3.0.0–5.0.0, включая вклад DrSeedon) — в docs/CHANGELOG-upstream.md; дальнейшие изменения — в CHANGELOG.md.
Лицензия
MIT — см. LICENSE. Уведомление об авторских правах исходного проекта сохранено.
Available Tools
59 toolsadd_ad_extensionsСоздать уточненияC
Создать уточнения (callouts), каждый текст до 25 символов.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| callouts | Yes | Тексты уточнений, каждый до 25 символов |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and openWorldHint=true, so the agent knows this mutates remote state, but the description adds nothing behavioral. It does not say whether existing callouts are replaced or appended, whether the extension applies account-wide or to specific ads, or what happens on partial failure — important for a write 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 front-loaded sentence with no filler. However, its brevity reflects under-specification rather than disciplined brevity, which keeps it out of the top band.
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 and only two parameters, the description leaves critical context missing: the required callouts array is the only argument, yet nothing explains what entity the extensions attach to or whether the call is additive or replacing. The dry_run capability is only discoverable from the schema, not 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%: both the callouts array (1–25 chars) and the dry_run flag are fully documented in the schema, including the dry-run read behavior. The description only restates the 25-character limit already in 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 gives a specific verb and resource ("Создать уточнения (callouts)") and narrows the ambiguous tool name 'ad_extensions' down to callouts specifically. It does not distinguish itself from the sibling pair list_ad_extensions / delete_ad_extensions, but the scope of what is created is 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?
There is no guidance on when to create callouts versus other extension types (sitelinks, vcards) represented by sibling tools, nor any preconditions such as campaign/ad scope. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_bid_adjustmentsСоздать корректировки ставокB
Создать корректировки ставок на кампаниях или группах. Коэффициент — проценты от ставки: 100 ничего не меняет, 0 отключает показы среза.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| adjustments | Yes | Корректировки; каждая ставится каждому объекту из campaign_ids или ad_group_ids. Всего за вызов не больше 1000 корректировок — это цели, умноженные на виды | |
| ad_group_ids | No | Группы, которым добавляются корректировки; вместо campaign_ids | |
| campaign_ids | No | Кампании, которым добавляются корректировки; вместо ad_group_ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds valuable domain semantics for the modifier value (100 = unchanged, 0 = disables impressions for the segment). It says nothing about permissions, reversibility, or whether existing adjustments are overwritten — and the 100 semantics largely duplicates the bid_modifier schema field.
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 no filler, and the core action plus the counterintuitive coefficient convention (0 disables, not zeroes the bid) 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?
The rich schema covers all four parameters, but for a mutation tool with no output schema the description should still say when to use it versus set_bid_adjustments and whether repeated calls overwrite. Adequate but with real gaps around the sibling boundary.
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 nested type/gender/region/income fields are already fully documented in the schema. The description's coefficient explanation adds marginal value beyond that, warranting the baseline 3 rather than more.
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+resource: creating bid adjustments on campaigns or ad groups. The scope is clear enough to act on, but it never distinguishes itself from the closely named siblings set_bid_adjustments and get_bid_adjustments, leaving the create-vs-update boundary ambiguous.
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 when-to-use guidance and no named alternative, despite three sibling tools (set_bid_adjustments, get_bid_adjustments, delete_bid_adjustments) operating on the same resource. An agent must guess whether to call this or set_bid_adjustments when a coefficient already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_keywordsДобавить ключевые словаC
Добавить ключевые фразы в группу объявлений.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| keywords | Yes | Ключевые фразы; минус-слова внутри фразы записываются через дефис | |
| ad_group_id | Yes | ID группы, в которую добавляются фразы |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (a mutation) and openWorldHint=true, covering the safety profile. The description adds nothing beyond the action itself: no note that keywords are appended rather than replacing, no mention of dry_run validation mode, and no auth/rate-limit context. It does not contradict the annotations but contributes no behavioral 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 front-loaded sentence with no waste. It is efficient, though arguably too sparse for a mutation tool with a notable dry_run parameter.
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, the description is thin: it does not explain return behavior, the effect of dry_run, or how appended keywords interact with existing ones. The rich schema covers parameters, but the description leaves behavioral completeness largely 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 description coverage is 100%, so the schema already documents ad_group_id, keywords (including the minus-word hyphen convention), and the dry_run behavior. The description adds no parameter-level meaning beyond the schema, which is the baseline-3 case when the schema does the heavy lifting.
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 clear verb and resource ("Добавить ключевые фразы" = add key phrases) plus the target ("в группу объявлений" = to an ad group). It is understandable in isolation, but it does not distinguish itself from close siblings such as update_keywords, manage_keywords, or add_negative_keyword_shared_sets, so the agent cannot tell precisely when this is the right tool versus those.
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, no preconditions (e.g. the target ad group must exist), and no mention of the dry_run capability. The agent is left to infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_retargeting_listСоздать список ретаргетингаC
Создать условие ретаргетинга из целей Метрики, сегментов или интересов.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название условия ретаргетинга | |
| type | No | RETARGETING — по целям Метрики, AUDIENCE — по сегментам Яндекс.Аудиторий | RETARGETING |
| rules | Yes | Правила условия; между собой они соединяются логическим И | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| description | No | Описание условия — видно только в интерфейсе, на показы не влияет |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so the write/open-world nature is covered. The description adds nothing behavioral: no mention of the dry_run preview path, permissions, or side effects on existing lists. For a mutation tool it leaves the operational profile entirely to 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?
A single front-loaded sentence with no filler. It is efficiently sized, though its brevity is as much under-specification as conciseness.
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?
The rich schema carries most of the load, but a create-style mutation tool benefits from stating prerequisites and the dry_run preview option, neither of which appears in the description. The definition is adequate but not complete for the operation it performs.
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 detailed enum semantics for type, operator, and membership_life_span, so the baseline is 3. The description only loosely gestures at the type parameter ('целей Метрики, сегментов или интересов') and adds no format or constraint 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?
The description states a specific verb ('Создать') and resource ('условие ретаргетинга'), and names the sources (Метрика goals, segments, interests), which aligns with the sibling set. It does not, however, distinguish itself from the other retargeting siblings (update_retargeting_lists, delete_retargeting_lists), so sibling differentiation is only implicit via the verb.
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 says what the tool does but gives no when-to-use guidance, no prerequisites (e.g. account context), and never mentions alternatives such as update_retargeting_lists or set_audience_targets. An agent must infer routing from the name alone.
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
Создать группу объявлений в кампании с таргетингом по регионам (см. get_regions).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название группы | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| region_ids | Yes | Регионы показа, коды из get_regions: ["225"] — Россия, ["225","-213"] — Россия кроме Москвы, ["0"] — все регионы. Минус-регионы нельзя сочетать с 0 и нельзя отправлять одни, без обычного региона | |
| campaign_id | Yes | ID кампании, в которой создаётся группа |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give readOnlyHint=false and openWorldHint=true. The description carries the rest of the burden for a mutation tool but says nothing about side effects, permission/auth requirements, rate limits, or what happens on partial failure. It never mentions the dry_run safety path that the schema exposes.
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 essential verb+resource+scope comes first. It is terse to the point of omitting useful invocation context, but 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 mutation tool with no output schema and thin annotations, the description is only minimally sufficient. The schema fully documents parameters, but the description omits mutation semantics, the dry_run option, and any preconditions an agent would want before writing.
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. The description only reinforces the region_ids/get_regions link already documented in the schema and adds no syntax, constraint, or interaction detail beyond it.
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+resource ('Создать группу объявлений в кампании') and adds a scope qualifier (region targeting). It is identifiable against siblings like create_campaign or create_text_ad, though it doesn't explicitly name a near alternative.
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 parenthetical '(см. get_regions)' implies you must fetch region codes first, which is usable guidance. However, there is no when-to-use/when-not statement, no mention of required preconditions such as an existing campaign or dry_run for validation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignСоздать кампаниюA
Создать новую текстово-графическую кампанию. Бюджет в рублях. Смарт-баннеры и динамические объявления Директ через API не создаёт с 22.05.2026, единую перфоманс-кампанию этот сервер пока не создаёт: такие кампании заводятся в интерфейсе Директа, дальше их можно читать и править здесь. ⚠️ Тестовой среды у Директа нет: кампания создаётся в боевом аккаунте. Деньги она начнёт тратить после модерации и включения, поэтому созданную для проверки оставляйте черновиком.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название кампании | |
| type | No | Тип кампании. Через API создаётся только текстово-графическая: смарт-баннеры и динамические объявления Директ через API не создаёт | TEXT_CAMPAIGN |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| time_zone | No | Часовой пояс показов, например Europe/Moscow (по умолчанию). Список — в справочнике list_time_zones; на даты отчётов не влияет, они всегда по Москве | |
| start_date | Yes | Дата начала показов, YYYY-MM-DD | |
| daily_budget | No | Дневной бюджет в рублях, например 1000 — это 1000 ₽ | |
| search_strategy | No | Стратегия показов на поиске; SERVING_OFF отключает показы на поиске | HIGHEST_POSITION |
| tracking_params | No | UTM-разметка, дописывается к ссылкам всех объявлений кампании. Без ведущего «?»: utm_source=yandex&utm_campaign={campaign_id}. Допустимы подстановки Директа в фигурных скобках. null снимает разметку | |
| network_strategy | No | Стратегия показов в сетях (РСЯ); SERVING_OFF отключает показы в сетях | SERVING_OFF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only readOnlyHint=false and openWorldHint=true; the description adds the crucial behavioral facts the annotations do not: there is no sandbox, the campaign is created in a live account, and it will only spend money after moderation and enabling. It does not describe error modes or what a dry_run response actually contains, so it falls just 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 action, then constraints, then the safety warning — every sentence carries information. It is somewhat dense and the warning block could be tightened, but nothing 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 9-parameter mutation tool with no output schema and open-world annotations, the description supplies the missing risk context (production account, spend after moderation, dry_run flag, draft guidance) that an agent needs to call 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 description coverage is 100%, so the schema already documents all nine parameters (including dry_run, time_zone and tracking_params semantics). The description only adds the currency unit for budget ("Бюджет в рублях") and restates the type restriction already in the schema's type description.
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+resource ("Создать новую текстово-графическую кампанию") and immediately narrows scope to text-graphic campaigns only, which cleanly separates it from update_campaign, manage_campaigns and create_ad_group. An agent knows exactly what artifact this produces.
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 states explicit when-not conditions: smart banners, dynamic ads and unified performance campaigns cannot be created via this API/server and must be made in the Директ UI. It also gives an operating instruction (keep test-created campaigns as drafts) that directly shapes how the tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_adСоздать объявлениеC
Создать текстовое объявление: заголовок (≤56), второй заголовок (≤30), текст (≤81), ссылка.
| Name | Required | Description | Default |
|---|---|---|---|
| href | Yes | Ссылка на сайт | |
| text | Yes | Текст объявления, до 81 символов | |
| title | Yes | Заголовок объявления, до 56 символов | |
| title2 | No | Второй заголовок, до 30 символов | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| ad_group_id | Yes | ID группы, в которой создаётся объявление |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, and the description adds nothing beyond restating schema constraints. It does not say what happens on success, what errors look like, whether the operation is reversible, or what dry_run accomplishes (already documented 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?
A single, front-loaded line with no filler and the verb leading. It is efficient, though the field listing duplicates schema content rather than adding 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?
With annotations covering safety and 100% schema coverage, the description only needs to complete the picture, but it omits where the ad sits (ad_group_id), whether title2 is optional, and any usage context. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including lengths and dry_run. The description simply mirrors the title/title2/text/href constraints, adding no syntax or semantic detail 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?
States a specific verb (Создать) and resource (текстовое объявление), and enumerates the content fields, so an agent can distinguish it from update_text_ad and the campaign/ad-group creators. It lacks an explicit contrast with sibling tools, keeping it 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?
There is no when-to-use guidance, no mention of prerequisites (an existing ad group), and no reference to alternatives like update_text_ad or manage_ads. The agent must infer the entire context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ad_extensionsУдалить уточненияBDestructive
Удалить уточнения по ID. ⚠️ Необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| ad_extension_ids | Yes | Уточнения, которые будут удалены безвозвратно |
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 externally covered. The description adds the 'Необратимо' (irreversible) warning, which reinforces but does not go far beyond the destructive hint, and says nothing about permissions, batch limits, or the dry_run option.
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 the destructive warning front-loaded via an emoji flag; nothing is redundant. It is efficient, though arguably too terse for a destructive operation.
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 cover the safety profile and the schema fully documents both params, so structural coverage is adequate. However, for a destructive, open-world delete with no output schema, the description omits any usage context or mention of the dry_run safeguard, leaving a clear 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 both parameters (ad_extension_ids, dry_run) are already fully documented in the schema. The description only restates 'по ID' and adds no syntax, batching, or dry_run semantics beyond the structured data, making baseline 3 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?
States a specific verb (Удалить) and resource (уточнения) with scope (по ID), so the agent knows exactly what is removed. It does not explicitly differentiate itself from siblings like add_ad_extensions or list_ad_extensions, but the verb makes the intent 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?
No when-to-use guidance and no reference to alternatives such as list_ad_extensions or add_ad_extensions. The available dry_run safety path is not surfaced in the description at all, leaving the agent no routing or precondition guidance.
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. ⚠️ Необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| ad_group_ids | Yes | Группы, которые будут удалены безвозвратно |
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 covered. The description adds the explicit warning '⚠️ Необратимо' (irreversible), which reinforces destructiveness but is largely redundant; it does not mention dry_run availability, authorization requirements, or batch limits beyond what the schema provides.
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, front-loaded sentences with zero waste. The core action and the critical irreversible warning are delivered immediately without unnecessary elaboration.
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 a simple delete operation, full schema coverage, and annotations that already declare destructiveness, the description provides the essential context (what is deleted, permanence). It could mention dry_run or usage scenarios, but the structured fields cover those adequately for a basic call.
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%, with both ad_group_ids and dry_run fully documented in the schema. The description only restates 'by their ID' which is already covered, so the baseline of 3 applies when structured fields do the heavy lifting.
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 ('Удалить' / delete) and resource ('группы объявлений' / ad groups) and clarifies the scope ('по их ID' / by their ID). It clearly distinguishes this tool from siblings like list_ad_groups, create_ad_group, or other delete_* tools for different resources.
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 offers no guidance on when to use this tool versus alternatives, nor does it mention the dry_run parameter or any prerequisites. It only states what the tool does and that it is irreversible, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bid_adjustmentsУдалить корректировки ставокADestructive
Удалить корректировки по их ID. Ставка среза возвращается к базовой; отменить удаление нельзя.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| adjustment_ids | Yes | Корректировки, которые нужно удалить; ID берутся из get_bid_adjustments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows the operation is destructive. The description adds genuinely new behavioral context beyond that: the bid slice reverts to its base value and the deletion is irreversible. It does not mention auth requirements or batch limits, but for a delete tool this is solid added 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?
Two short sentences, front-loaded with the action, and every clause carries information (what is deleted, by what key, side effect, irreversibility). 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 destructive, no-output-schema tool whose annotations and schema are already rich, the description covers the critical irreversible side effect. It omits any note on dry_run as the safe pre-check and on partial-failure behavior across a large ID list, which are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are fully documented in the schema, including the dry_run semantics and the source of adjustment_ids. The description only restates that deletion is by ID, adding no meaning 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?
States a specific verb+resource (delete bid adjustments) with the keying method ('по их ID'), which is unambiguous. It does not explicitly name siblings like set_bid_adjustments or add_bid_adjustments, but 'delete' is distinct enough to separate it from the other bid-adjustment 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 gives no when-to-use guidance, no mention of the dry_run verification path, and no prerequisites or alternatives. The only routing hint ('ID берутся из get_bid_adjustments') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_retargeting_listsУдалить списки ретаргетингаADestructive
Удалить условия ретаргетинга и подбора аудитории по ID; удаление необратимо. Отказ по отдельному условию приходит строкой ❌ в ответе, остальные при этом удалены.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| retargeting_list_ids | Yes | Условия, которые нужно удалить; ID берутся из list_retargeting_lists |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so credibility goes to what's added beyond them: irreversibility and a non-obvious partial-failure model where an individual failure returns a ❌ string while the remaining IDs are still deleted. This response-shape disclosure is valuable, especially with 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?
Two tight clauses, front-loaded with the action and scope, followed by the two highest-value caveats (irreversibility, partial failure). 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 destructive batch delete with no output schema, the description adequately covers the irreversible nature and the surprising error behavior. It stops short of noting the dry_run alternative or bounds (maxItems 1000), but those live in 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 description coverage is 100%, so the schema already documents both dry_run and retargeting_list_ids, including that IDs come from list_retargeting_lists. The description confirms the ID-based targeting but adds no syntax or bounds 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?
States a specific verb+resource ('Удалить условия ретаргетинга и подбора аудитории по ID') that an agent can immediately distinguish from the list_/add_/update_retargeting_lists siblings. Scope (by ID) is explicit.
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 delete action against retargeting/audience conditions is self-evident, and the source of IDs is implied via the schema. However, the description never states when to reach for this tool vs. update_retargeting_lists or list_retargeting_lists, nor any prerequisites, so it only implies usage.
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 |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| sitelink_set_ids | Yes | Наборы, которые нужно удалить; ID берутся из list_sitelinks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds a non-obvious behavioral constraint beyond the annotations: deletion fails if the set is attached to an ad. It doesn't describe the return shape, but that is acceptable for a delete tool with 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?
Two tight sentences with the action stated first and the key caveat second. No filler, nothing 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 delete with no output schema, the description covers the operation and the main failure condition, and annotations cover the risk profile. It could go further by pointing to list_sitelinks for ID discovery, which the schema mentions but the description itself omits.
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 (sitelink_set_ids and dry_run, including a 1–1000 item bound) are fully documented in the schema. The description only echoes 'by ID' and adds no syntax or format detail beyond what the schema already provides, 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 states a specific verb and resource (delete sitelink sets by ID), which unambiguously distinguishes it from its siblings list_sitelinks and set_sitelinks. An agent can immediately tell this is the removal operation for sitelink sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an important exclusion — Direct won't allow deleting a set that is bound to an ad — which is genuine usage guidance. However, it never names alternatives (e.g. unlink via update, or use list_sitelinks first to find IDs) nor explicitly states the when-to-use condition, so guidance is implied rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vcardsУдалить визиткиADestructive
Удалить визитки по ID; удаление необратимо. Отказ по отдельной визитке приходит строкой ❌ в ответе, остальные при этом удалены.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| vcard_ids | Yes | Визитки, которые нужно удалить; ID берутся из list_vcards |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds real behavioral context beyond them: deletion is irreversible, and a per-vcard failure returns a ❌ string while the remaining vcards are still deleted. This partial-failure semantics is exactly what an agent needs and is not in 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?
Two sentences, zero filler, with the irreversible-deletion fact front-loaded ahead of the failure-mode detail. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and annotations covering only the safety profile, the description usefully discloses the response shape on partial failure (❌ string) and the irreversibility. Only the dry_run parameter behavior is left entirely 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 description coverage is 100%, so the baseline is 3. The description mentions ID-based targeting but adds no detail on the dry_run parameter or ID format beyond what 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?
The description states a specific verb+resource ('Удалить визитки по ID') and its scope, clearly distinguishing it from the sibling list_vcards and the many non-delete siblings. An agent can identify the operation 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?
Usage is implied by the verb 'delete' and the 'по ID' qualifier, and the schema points to list_vcards as the ID source, but the description itself names no alternative or explicit when-to-use/when-not condition. Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_balanceБаланс аккаунтаBRead-only
Баланс и финансовая информация аккаунта (Amount, Currency) через Live API v4.
| Name | Required | Description | Default |
|---|---|---|---|
| logins | No | Логины аккаунтов для агентского токена; по умолчанию — аккаунт самого токена |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows the safety profile without the description. The description adds that data comes through Live API v4 and what fields are returned, but says nothing about auth requirements, rate limits, or behavior for multiple logins.
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 compact sentence with the resource front-loaded and no filler. It is perhaps slightly terse to the point of omitting useful context, but 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?
With no output schema, the description does useful work by naming the returned fields (Amount, Currency). However, for a financial-query tool it omits how the optional logins array affects the response shape and any limits on how many accounts can be queried at once.
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 single optional 'logins' parameter is documented in the schema itself (agency-token logins, defaults to the token's own account). The description adds nothing about parameter semantics, 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 even names the returned fields (Amount, Currency), which is more than most sibling names imply. It does not explicitly differentiate itself from sibling read tools such as get_statistics, but the resource is 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?
No indication of when this tool should be used versus alternatives, no prerequisites, and no note about whether an agency token context changes the call. The only usage hint is buried in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bid_adjustmentsКорректировки ставокBRead-only
Получить корректировки ставок кампании или группы: устройства, пол и возраст, аудитории, регионы, платёжеспособность, размещение.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| types | No | Фильтр по типу корректировки | |
| levels | Yes | Уровни корректировок: CAMPAIGN и/или AD_GROUP | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| ad_group_ids | No | Группы, корректировки которых нужно получить | |
| campaign_ids | No | Кампании, корректировки которых нужно получить | |
| adjustment_ids | No | Конкретные корректировки по их ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds that results span several targeting dimensions, but says nothing about pagination, default limits, or ordering, which is the behavior an agent would still wonder about.
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 opens with the action and immediately lists what is returned. Efficient, though the trailing category enumeration is somewhat long.
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 paginated read with no output schema, the description covers the domain well but omits pagination behavior and how the levels/ad-group/campaign parameters interact. Annotations cover safety, and the schema covers parameter mechanics, so the gap is moderate rather than severe.
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 seven parameters are already documented in the schema. The description's category list loosely maps to the types enum but adds no syntax or format detail beyond it, 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 names a specific verb (Получить = Get) and resource (bid adjustments), and scopes it to campaign or ad-group level while enumerating the adjustment families (devices, gender/age, audiences, regions, income, placement). The read verb implicitly separates it from set/add/delete siblings, though it never names them 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?
It states only what is returned, with no indication of when to call this versus add_bid_adjustments/set_bid_adjustments/delete_bid_adjustments or any workflow context such as reading current adjustments before modifying them. Usage is left entirely to inference from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignКампания по IDARead-only
Детальная информация о кампании по ID: бюджет (руб), статус и пояснение к нему, даты, статистика, UTM-разметка, цели и их ценность (PriorityGoals), счётчики Метрики, модель атрибуции и прочие настройки. Реальные ID целей — PriorityGoals.Items[].GoalId; GoalId 13 в стратегии — служебное «ключевые цели», то есть оптимизация по этим PriorityGoals. Пустой ответ по ID из веб-интерфейса не значит, что номер неверный: кампании «Баннер на поиске» (MCBANNER) API не отдаёт, по ID они приходят пустыми.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID рекламной кампании, десятичная строка |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses non-obvious behavior: MCBANNER campaigns come back empty by ID, empty results do not mean an invalid ID, and the GoalId 13 strategy sentinel semantics. These are exactly the caveats that prevent misdiagnosis of a successful 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?
Purpose is front-loaded and the field list plus caveats each carry information; nothing is filler. It is somewhat dense and long, but the length is justified by the domain-specific edge cases.
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 must carry the return shape, and it does so comprehensively (fields returned, nested PriorityGoals semantics, attribution, counters). Combined with the empty-response and MCBANNER caveats, an agent has everything needed to call and interpret this 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?
Only one parameter and schema coverage is 100%, so the schema already documents campaign_id fully (pattern, decimal string). The description's ID-related notes concern interpreting output (PriorityGoals.Items[].GoalId) rather than adding syntax for the input, 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?
States a specific verb+resource ('детальная информация о кампании по ID') and then enumerates the returned content (budget, status, dates, stats, UTM, PriorityGoals, Metrica counters, attribution). The 'по ID' scope makes it clearly distinct from list_campaigns in the sibling 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?
Gives clear context for when results appear empty (MCBANNER campaigns are not returned by the API) and warns that an empty response does not imply a bad ID, which is real usage guidance. It does not, however, explicitly route the agent to list_campaigns to obtain an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaign_negative_keywordsПолучить минус-фразы кампанийCRead-only
Получить текущие минус-фразы кампаний по их ID.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_ids | Yes | Кампании, минус-фразы которых нужно прочитать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read. The description adds only the word 'текущие' (current), which hints the result reflects live state, but says nothing about pagination, result size, or what happens with unknown IDs.
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, front-loaded sentence with no waste. It is tightly scoped, though its brevity borders on under-specification for a retrieval 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 one parameter, 100% schema coverage, and annotations covering the safety profile, the essentials are present. However, with no output schema, the description leaves the agent guessing about the shape and volume of the returned negative-keyword data.
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 there is a single well-documented parameter, so the baseline is 3. The phrase 'по их ID' merely restates the campaign_ids parameter without adding format or constraint 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?
The description states a specific verb and resource ('получить минус-фразы кампаний'), so an agent knows it reads campaign-level negative keywords. It is distinguishable from the sibling set_campaign_negative_keywords, though it never names that sibling 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 when-to-use guidance, no mention of prerequisites (e.g., needing campaign IDs that already exist), and no routing to alternatives such as list_keywords or set_campaign_negative_keywords. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesИзменения объектовBRead-only
Проверить изменения кампаний, групп и объявлений начиная с указанного времени, а также изменения справочников (mode=dictionaries) и текущее время сервера Директа.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | campaigns — какие кампании менялись целиком; objects — что изменилось внутри выбранных объектов; dictionaries — менялись ли справочники регионов, часовых поясов и интересов | |
| ad_ids | No | Объявления для mode=objects | |
| timestamp | No | Момент, начиная с которого искать изменения: YYYY-MM-DDThh:mm:ssZ. Обязателен для campaigns и objects; для dictionaries без него возвращается только текущее время сервера | |
| field_names | No | Какие изменения интересуют; по умолчанию — соответствующие переданным ID | |
| ad_group_ids | No | Группы для mode=objects | |
| campaign_ids | No | Кампании для mode=objects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that dictionaries mode returns only the current server time when timestamp is omitted — but omits return shape, limits (e.g. maxItems 50000) or rate-limit behavior.
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 leads with the primary resource set and appends the dictionaries special case. No filler, though cramming three distinct modes into one clause reduces scannability slightly.
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 6-parameter, mode-driven tool with no output schema and no return-value documentation, the description covers the modes but not what the response contains or how field_names interacts with the ID filters. Adequate but leaves meaningful gaps for a polling/change-detection 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 mode, timestamp requirement per mode, and each ID list. The description largely restates the mode=dictionaries behavior rather than adding new semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Проверить изменения') and the resources covered (campaigns, groups, ads, dictionaries), and explicitly names mode=dictionaries. It is distinguishable from siblings like get_statistics or list_campaigns, though the mapping to the 'objects' mode is left 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 implied: use it to poll for changes since a given time. However, it never says when to prefer this over sibling reads such as get_campaign/get_statistics, nor does it state exclusions or prerequisites (e.g. that it is a change-feed rather than a full fetch).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_auctionАукцион по фразамARead-only
Сколько стоит показ: ставки и списываемые цены по позициям, ставки конкурентов, минимальная цена входа. Всё в рублях. Позиции — P11–P14 (спецразмещение над выдачей) и P21–P24 (гарантия под выдачей); у каждой Bid — сколько надо поставить, Price — сколько спишется на деле. Отбор по одному уровню: фразы, группы или кампании. Цену аукциона показывает для любой кампании, но ставкой она управляется только при ручном управлении: на автостратегии (любая WB_*, AVERAGE_CPA, AVERAGE_CPC и прочие) ставки назначает Директ, и set_keyword_bids там ничего не даст. Стратегию кампании проверяйте через get_strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| keyword_ids | No | Аукцион по указанным фразам | |
| ad_group_ids | No | Аукцион по всем фразам указанных групп | |
| campaign_ids | No | Аукцион по всем фразам указанных кампаний |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint. The description adds real behavioral context beyond them: all values are in rubles, what Bid vs Price mean, and the critical caveat that autostrategy campaigns (WB_*, AVERAGE_CPA/CPC) make bidding inapplicable. It does not discuss pagination behavior, which is a minor 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?
Dense and front-loaded, leading with what is returned before scoping and caveats. It is long, but nearly every clause carries operational value; the position-range enumeration is the only slightly verbose stretch.
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 burden of explaining return fields (Bid, Price, positions, currency) and does so thoroughly, plus it covers the manual-vs-autostrategy prerequisite. 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%, so the baseline is 3, but the description adds meaning the schema does not: the three ID-array parameters are mutually exclusive by level ('отбор по одному уровню'), which tells the agent not to combine keyword_ids, ad_group_ids, and campaign_ids.
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 resource and scope: auction pricing (Bid/Price) per position P11–P14 and P21–P24, competitor bids and minimum entry price. It also distinguishes itself from set_keyword_bids and get_strategy by naming them and the condition that separates them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says selection works at one level (keywords, groups, or campaigns), that price is viewable for any campaign but bidding only applies under manual management, and routes the agent to get_strategy to check, noting set_keyword_bids is useless under autostrategies. When-to-use, when-not, and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regionsСправочник регионовARead-only
Справочник кодов регионов (GeoRegions) для таргетинга. Фильтр по названию, 225 = Россия. with_parents=true показывает вложенность и различает одноимённые города.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько регионов вернуть, максимум 500 | |
| search | No | Фильтр по названию региона: подстрока без учёта регистра, например «москва» | |
| with_parents | No | Показать, во что вложен регион (Новосибирск → Новосибирская область, Россия) — так различаются одноимённые города. По умолчанию выключено; требует search. Ищет при этом сам Директ — по похожему названию, а не подстрокой, как кэшированный справочник |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint and openWorldHint already declare the safe, external-read nature, so the safety profile is covered. The description adds useful domain facts beyond annotations — the magic code 225 = Россия and that with_parents distinguishes same-named cities — but return/pagination behavior is left to be inferred.
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, front-loaded fragments with no filler: resource first, then filter hint, then the with_parents behavior. Efficient and easy to scan, though telegraphic rather than fully structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only reference lookup with 100% schema coverage and no output schema, the description supplies enough context (what the regions are, the key code, the special with_parents toggle). Nothing essential to a correct call is missing, though a note on result shape would round it out.
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 are already documented in the schema, making 3 the baseline. The description largely restates the with_parents semantics already present in the schema; the 225 = Россия fact is extra context but not tied to a specific parameter.
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 the resource concretely — a reference of region codes (GeoRegions) — and frames its purpose (для таргетинга), so an agent knows this is a lookup tool rather than a campaign mutator. It does not explicitly contrast itself with any sibling, but the resource is clear enough to disambiguate from the surrounding campaign 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?
Usage is only implied: 'для таргетинга' and 'Фильтр по названию' suggest when the tool is relevant, but there is no explicit when-to-use/when-not and no named alternative (e.g. get_time_targeting or get_campaign). Adequate but leaves the agent to infer the trigger conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_queriesПоисковые запросыARead-only
Отчёт по фактическим поисковым запросам для анализа и добавления минус-фраз.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Поля отчёта; по умолчанию Query, CampaignId, CampaignName, AdGroupId, AdGroupName, Criterion, Impressions, Clicks, Cost | |
| date_to | Yes | Последний день периода включительно, YYYY-MM-DD | |
| date_from | Yes | Первый день периода, YYYY-MM-DD | |
| campaign_ids | Yes | Кампании, по которым нужен отчёт о поисковых запросах |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds only that queries are 'actual' but omits pagination, authentication, response format, or other behavioral traits beyond what annotations provide.
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 filler or redundancy. Every word contributes to stating the tool's purpose and use case.
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 report tool with fully documented parameters and safety annotations, the description conveys the core purpose. However, it omits usage details and expected output information, and since there is no output schema, more context could have been provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all four parameters, including the optional fields list and date formats. The description provides no additional parameter meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (report) and resource (actual search queries) with its analysis purpose, distinguishing it from keyword-management siblings. However, it does not explicitly name alternative tools for related tasks, 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 a clear use case: for analyzing search queries and adding negative phrases. It provides context but does not mention when to use alternatives or any exclusions, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statisticsСтатистикаBRead-only
Статистика кампаний за период: показы, клики, расход (руб), CTR, CPC (ReportService, TSV).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Поля отчёта; по умолчанию Date, CampaignName, Impressions, Clicks, Cost, Ctr, AvgCpc. Деньги приходят в рублях | |
| date_to | Yes | Последний день периода включительно, YYYY-MM-DD | |
| date_from | Yes | Первый день периода, YYYY-MM-DD | |
| campaign_ids | Yes | Кампании, по которым строится отчёт |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read nature is covered structurally. The description adds useful context beyond that: money is returned in rubles, output is TSV, and the backing service is ReportService. It does not disclose limits on campaign count, date-range constraints, or any rate 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?
A single dense sentence with the resource and metric list front-loaded and no filler. The trailing '(ReportService, TSV)' parenthetical is compact and informative, though slightly implementation-flavored for a description.
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 does double duty and partially covers it by listing the metric columns and the TSV format. However, it omits how many campaigns can be queried at once, any date-range limits, and whether results are aggregated or per-day, leaving gaps for a reporting 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% (all four parameters documented, including default fields and the ruble note), so the schema carries the parameter burden. The description's 'расход (руб)' only echoes what the schema already states about currency. 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?
States a specific verb+resource ('Статистика кампаний за период') and enumerates the metrics returned (показы, клики, расход, CTR, CPC). It is clearly distinguishable from sibling tools like get_campaign or list_campaigns, which manage entities rather than report metrics. No explicit sibling differentiation is needed here since none of the siblings are statistics 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?
There is no statement of when to use this tool versus alternatives, no prerequisites (e.g. campaign must exist), and no exclusions. The period and campaign scope are implied only by the required parameters, not by the description text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_strategyСтратегия кампанииARead-only
Получить текущую стратегию показов текстово-графической кампании вместе с целями (PriorityGoals), счётчиками и моделью атрибуции. Реальные ID целей Метрики, по которым работает кампания, — TextCampaign.PriorityGoals.Items[].GoalId (рядом их ценность Value в рублях), счётчики — CounterIds. GoalId внутри BiddingStrategy бывает служебным: 13 — «оптимизировать по ключевым целям», то есть по тем же PriorityGoals; 12 — «Вовлечённые сессии». Названий целей API Директа не отдаёт — они есть только в Метрике.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID текстово-графической кампании |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description goes further with non-obvious domain behavior: that GoalId in BiddingStrategy can be a service value (13 = key goals, 12 = engaged sessions) and that the Direct API never returns goal names. This is real added context 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 purpose is front-loaded in the first sentence, followed by dense but relevant detail on return fields and the service-GoalId gotcha. Slightly long for a one-parameter read, but every sentence carries domain value 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?
With no output schema, the description carries the burden of explaining returns and does so with concrete field paths (TextCampaign.PriorityGoals.Items[].GoalId, CounterIds) and the Value-in-rubles detail. Coverage is strong; pagination/error behavior is not addressed but is minor for this call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single campaign_id parameter, so the schema already documents it fully. The description adds nothing about the parameter itself, matching the baseline-3 rule when the schema does the work.
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 (current impression strategy of a text-graphic campaign) and enumerates what comes with it: PriorityGoals, counters, attribution model. An agent can immediately tell this apart from set_strategy and from get_campaign.
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: it reads the current strategy, so it is the read-side counterpart of set_strategy. There is no explicit when-to-use/when-not guidance and no named alternative for the cases where get_campaign would suffice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_targetingРасписание показов кампанииBRead-only
Временной таргетинг кампании: часовой пояс, часы показов по дням недели, почасовые коэффициенты и настройка праздников.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID кампании, десятичная строка |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that — no mention of permissions, rate limits, or response shape — but it does scope what the resource contains, which is mild added 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 compact sentence with the resource stated first and no filler. It is well front-loaded, though as a fragment it stops short of fully specifying the tool's 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?
With no output schema, the description usefully enumerates the fields the resource exposes (time zone, weekday hours, hourly coefficients, holidays), effectively standing in for a return-value description. For a one-parameter read-only getter this is close to complete; only the retrieval framing 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% with a single documented campaign_id parameter (pattern and format included), so the schema already carries the semantics. The description adds nothing about the parameter, 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 names a specific resource (campaign time targeting) and enumerates its components: time zone, display hours per weekday, hourly coefficients, and holiday settings. Combined with the get_ prefix it is distinguishable from the sibling set_time_targeting, but the description never states the retrieval action explicitly — it is a noun phrase describing the resource rather than a verb+resource statement.
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 set_time_targeting or the other campaign getters, and no prerequisites (e.g. needing campaign_id to exist) are mentioned. The read-only nature must be inferred entirely from the name and annotations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_negative_keyword_setsПривязать общие минус-фразыAIdempotent
Заменить привязки общих наборов минус-фраз у кампаний и/или групп объявлений. Привязка к кампании действует на все её группы. Пустой set_ids очищает привязки.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| set_ids | Yes | Полный новый список наборов объекта — прежние привязки затираются. Пустой массив снимает все | |
| ad_group_ids | No | Группы, которым назначаются наборы | |
| campaign_ids | No | Кампании, которым назначаются наборы. Привязка на уровне кампании действует на все её группы. Тип кампании сервер читает сам — это дополнительный вызов API; общие наборы поддерживают TEXT_CAMPAIGN, DYNAMIC_TEXT_CAMPAIGN, MOBILE_APP_CAMPAIGN и UNIFIED_CAMPAIGN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds real behavior beyond that: links are overwritten wholesale, a campaign-level link cascades to all ad groups, and an empty set_ids removes all links. It doesn't mention permission requirements or error behavior, keeping it from 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?
Three short sentences, front-loaded with the action and scope, then the cascade rule and the clearing rule. Every sentence carries distinct information with zero 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 no output schema, the description covers overwrite semantics, the campaign-to-ad-group cascade, and the clearing case, and annotations cover the safety profile. Gaps remain around permissions and failure behavior, but nothing essential to calling 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 description coverage is 100%, so the schema already documents set_ids, campaign_ids, ad_group_ids, and dry_run (including the 'empty array clears all' semantics). The description's 'Пустой set_ids очищает привязки' largely restates what the schema says, adding little. Baseline 3 is appropriate when the schema does the heavy lifting.
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: replace ('Заменить') the links ('привязки') of shared negative keyword sets ('общих наборов минус-фраз') on campaigns and/or ad groups. That distinguishes it from manage_negative_keyword_shared_sets (manages the sets themselves) and set_campaign_negative_keywords. It stops short of naming those siblings explicitly, 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?
It gives the key usage semantics (campaign-level link cascades to all its ad groups; empty set_ids clears links), which implies when the tool applies. However, it never states when to prefer this over set_campaign_negative_keywords / set_ad_group_negative_keywords or manage_negative_keyword_shared_sets, so routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_extensionsСписок уточненийBRead-only
Получить уточнения (callouts) с их статусами и текстом.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| states | No | Фильтр по состоянию уточнения | |
| statuses | No | Фильтр по статусу модерации уточнения | |
| ad_extension_ids | No | Конкретные уточнения; без них возвращаются все |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that returned items include statuses and text, but says nothing about pagination behavior despite limit/offset parameters, leaving a meaningful gap for a list tool with 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 short, front-loaded sentence with no filler. It is efficient, though arguably too terse to earn full marks given the tool's five-parameter 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?
For a five-parameter, zero-required list tool with no output schema and only readOnly/openWorld annotations, the description is minimal. It hints at return content (statuses and text) but omits pagination behavior and the relationship between the states and statuses filters, leaving the agent to rely wholly on 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 description coverage is 100%, so every parameter (limit, offset, states, statuses, ad_extension_ids) is already documented in the schema. The description adds no syntax, format, or filter semantics beyond that, 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 states a specific verb ('Получить') and resource ('уточнения (callouts)'), and the bilingual gloss disambiguates the term. It does not explicitly distinguish itself from the add_ad_extensions/delete_ad_extensions siblings, but the read/list nature is clear from the name and description together.
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 offers no guidance on when to use this tool versus alternatives such as add_ad_extensions, delete_ad_extensions, or the sitelink listers. No prerequisites or exclusions are stated; usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_groupsСписок группBRead-only
Группы объявлений выбранных кампаний: названия, регионы, статусы.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| campaign_ids | Yes | Кампании, группы которых нужно выбрать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read nature is covered by structured data. The description adds that results are scoped to selected campaigns and enumerates returned fields, which is modest extra context but doesn't discuss pagination or result size limits beyond what the schema covers.
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 resource and scope. Nothing wasted, though the field list is a bit thin for the space allotted.
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 list tool with full schema coverage and annotations covering safety, the description is minimally adequate. It lacks explicit guidance on pagination behavior, expected result volume, or how it relates to sibling list tools, but nothing essential for a correct call 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%, so all three parameters (campaign_ids, limit, offset) are already documented in the schema, including pagination semantics for offset. The description adds no parameter-level detail beyond what the schema provides, 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?
States verb+resource: lists ad groups of selected campaigns and the fields returned (names, regions, statuses). Clear purpose, though it doesn't explicitly distinguish itself from sibling list tools like list_campaigns or list_ads beyond the resource name itself, which is fairly self-evident.
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?
No when-to-use guidance, no prerequisites, no mention of alternatives. The agent must infer from the name alone that this is the read-side complement to create_ad_group/delete_ad_groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adsСписок объявленийARead-only
Объявления в группах: заголовки, тексты, ссылки, статусы, тип и подтип объявления, привязанные сайтлинки, визитка и изображение. Причина отказа модерации приходит в StatusClarification. Отбор только по группам — по ID объявления не ищет. Архивные приходят наравне с активными. Список может быть неполным: объявления, тексты которых генерирует нейросеть Яндекса, через API недоступны и в выдачу не попадают, а по ответу это никак не видно. Поэтому «в группе только эти объявления» из ответа не следует — ни из пустого, ни из непустого; для полноты картины сверяйтесь с интерфейсом Директа.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| ad_group_ids | Yes | Группы, объявления которых нужно выбрать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses two non-obvious behavioral traits: the result set silently omits ads whose copy is neural-network generated (and no signal of this appears in the response), and the moderation rejection reason surfaces in StatusClarification. This is exactly the kind of context annotations cannot carry, and it warns the agent not to infer absence from the output.
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?
Dense but front-loaded: the returned fields come first, then the filtering constraint, then the incompleteness caveat. Every sentence carries information, though the paragraph is heavy and the caveat about neural-network ads could be tightened without losing meaning.
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 return-value burden and does so: it names the fields, where the rejection reason lives, and critically warns that the list can be incomplete in a way invisible to the caller. An agent has everything needed to call and correctly interpret the result.
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 schema already documents limit, offset and ad_group_ids. The description adds a genuine constraint not in the schema: ad_group_ids is the only selector and ad-ID lookup is not supported, which clarifies how the parameter must be used.
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+resource (listing ads within ad groups) and enumerates the returned fields (titles, texts, links, statuses, type/subtype, sitelinks, vcard, image). It is clearly distinguishable from write-oriented siblings like manage_ads, moderate_ads and create_text_ad, and from list_ad_groups by its resource scope.
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 scoping rules — selection is by group only, not by ad ID, and archived ads are returned alongside active ones — plus a caution to cross-check the Direct UI for completeness. It stops short of explicitly naming a sibling alternative for other lookup modes, but the context for when this tool applies is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audience_targetsАудиторные целиBRead-only
Получить условия нацеливания на аудиторию по ID кампании, группы, ретаргетинга или интереса.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| states | No | Фильтр по состоянию: ON или SUSPENDED | |
| ad_group_ids | No | Условия выбранных групп | |
| campaign_ids | No | Условия выбранных кампаний | |
| interest_ids | No | Условия, построенные на этих интересах | |
| audience_target_ids | No | Конкретные условия нацеливания | |
| retargeting_list_ids | No | Условия, построенные на этих списках ретаргетинга |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further — no pagination behavior, no indication of whether multiple filter IDs are combined with AND or OR, and no note on result size.
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 wasted words; the verb and the filter dimensions arrive immediately.
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 8-parameter listing tool with no output schema, the description omits how results are returned, how paging works (the offset/limit pair is only explained inside the schema), and whether supplying no filter IDs is valid. Given no annotations beyond read/open-world, this is under-specified.
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 (limit, offset, states, and the five ID-array filters) is already documented in the schema. The description's mention of campaign/group/retargeting/interest IDs mirrors the schema rather than extending it, 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 ("условия нацеливания на аудиторию"), plus the four ID dimensions it can be queried by. It does not explicitly name the sibling set_audience_targets, but the get-vs-set distinction is readable from the name and title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites (e.g. at least one filter ID), and no pointer to set_audience_targets for modifications or to list_retargeting_lists for resolving list IDs. 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.
list_businessesПрофили организацийBRead-only
Получить доступные профили организаций из Яндекс Бизнеса.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| business_ids | No | Конкретные профили; без них возвращаются все доступные |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds only that profiles are 'доступные' (available), which hints at access scoping, but does not disclose pagination, rate limits, or return format. With annotations covering the basics, this is a minimal addition. Score 3.
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 with no wasted words, front-loading the verb and resource. Appropriately sized for the tool's simplicity. Score 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?
For a list tool with three optional parameters, no output schema, and annotations covering safety, the description is adequate but minimal. It does not explain pagination or the shape of returned profiles, leaving some gaps. Score 3.
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 are already documented in the input schema. The description adds no parameter-level meaning beyond what the schema provides. 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 ('доступные профили организаций из Яндекс Бизнеса'), making the tool's purpose clear. It does not explicitly differentiate from sibling tools, but the domain (business profiles) is unique among the siblings. Score 4.
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?
No guidance is provided on when to use this tool versus alternatives or in what contexts. The description only says what it does, not when to invoke it. Score 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsСписок кампанийARead-only
Список рекламных кампаний Яндекс.Директ с фильтрацией по статусу и типу. Бюджеты — в рублях. По умолчанию возвращается узкий набор полей; нужны другие (Funds, TimeZone, NegativeKeywords и прочие из CampaignFieldEnum) — перечислите их в fields. Кампаний «Баннер на поиске» (MCBANNER) API не отдаёт вовсе: их нет в списке, и это граница API, а не ошибка логина или фильтра — такие кампании видны только в веб-интерфейсе.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| types | No | Фильтр по типам кампаний | |
| fields | No | Какие поля вернуть; по умолчанию Id, Name, Status, StatusClarification, State, DailyBudget, StartDate, Type, Statistics | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| status | No | Фильтр по статусу модерации кампании |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), so the description goes beyond by disclosing a non-obvious behavioral boundary: MCBANNER campaigns are absent by API design, not by filter or auth failure — an important trap for an agent. It also discloses currency units and the default projection, though it says nothing about rate limits or result caps beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose then progressively adding field behavior and the API-boundary caveat. Each sentence carries information, though the default-field enumeration slightly overlaps the schema 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?
With no output schema, the description compensates by stating what is returned by default, how to widen the projection, and which campaigns will never appear. For a 5-parameter, read-only list tool this covers everything an agent needs to invoke 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 baseline is 3, but the description adds real meaning: budgets are denominated in rubles (relevant to DailyBudget/Funds), the default returned field set, and the purpose of 'fields'. The default-field list is partly duplicated from the schema, keeping it from a 5.
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 ("Список рекламных кампаний Яндекс.Директ") plus the supported filter dimensions (status and type). The plural 'список' clearly separates it from the singular get_campaign sibling without needing further 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?
Explains how to operate the tool: default field set applies, and other CampaignFieldEnum fields must be requested explicitly via 'fields'. It also sets expectations that MCBANNER campaigns are never returned. It lacks explicit when-to-use-vs-alternative routing (e.g. vs get_campaign or manage_campaigns), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dynamic_targetsДинамические целиCRead-only
Получить условия нацеливания динамических текстовых объявлений.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| states | No | Фильтр по состоянию: ON или SUSPENDED | |
| ad_group_ids | No | Цели выбранных групп | |
| campaign_ids | No | Цели выбранных кампаний | |
| dynamic_target_ids | No | Конкретные динамические цели |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context such as pagination behavior, authentication needs, rate limits, or what happens with large limits/states filters. It only restates the purpose.
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 and resource with no filler, repetition, or wasted words. It is appropriately sized for its scope.
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 six-parameter list tool with no output schema, the description lacks routing information to separate it from manage_dynamic_targets and does not summarize return content or filtering behavior. Although the schema and annotations provide structured details, the description itself is too thin to fully guide selection and 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 all six parameters (limit, offset, states, ad_group_ids, campaign_ids, dynamic_target_ids) are fully documented in the schema. The description does not mention any parameters or add semantic meaning beyond what the schema provides, warranting the baseline score.
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 'Получить' (get) and a clear resource 'условия нацеливания динамических текстовых объявлений' (targeting conditions of dynamic text ads). It does not explicitly differentiate from the sibling manage_dynamic_targets beyond the tool name, but the purpose is otherwise clear.
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?
No guidance on when to use this tool versus manage_dynamic_targets or list_audience_targets. There are no exclusions, prerequisites, or context signals in the description; usage must be inferred entirely from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedsСписок фидовBRead-only
Получить товарные фиды, их источники, статусы обработки и связанные кампании.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| feed_ids | No | Конкретные фиды; без них возвращаются все фиды аккаунта |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context about what data is returned (sources, processing statuses, related campaigns), but says nothing about pagination, filtering behavior, or result limits beyond what the schema implies.
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, efficient sentence with no filler and the resource front-loaded. It is appropriately sized, though minimal enough that it leaves room for additional usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations covering safety and 100% schema coverage, the essentials are present. However, with no output schema, the description's brief enumeration of returned fields is thin and pagination behavior (offset/LimitedBy) is left 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 description coverage is 100%, so limit, offset, and feed_ids are already fully documented in the schema. The description adds no additional parameter meaning or syntax, matching the baseline 3 when the schema does the heavy lifting.
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 what it returns (sources, processing statuses, related campaigns). No sibling tool covers feeds, so there is no alternative to disambiguate from, but the scope is clear.
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 offers no when-to-use guidance, prerequisites, or conditions. It only describes output content, leaving the agent to infer that this is the unfiltered account-level feed listing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keywordsСписок ключевых словBRead-only
Ключевые фразы в группах объявлений: фразы, ставки (руб), статусы. По умолчанию возвращается узкий набор полей; нужны другие (StatisticsSearch, StatisticsNetwork, Productivity, ServingStatus и прочие из KeywordFieldEnum) — перечислите их в fields.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| fields | No | Какие поля вернуть; по умолчанию Id, Keyword, CampaignId, AdGroupId, Status, State, Bid, ContextBid | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| ad_group_ids | Yes | Группы, ключевые фразы которых нужно выбрать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavior beyond that: a narrow default field set is returned unless the caller expands it via fields. It does not mention pagination or return shape, but with annotations present a 3 is appropriate.
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 with the resource and purpose front-loaded, followed by the field-selection caveat. No wasted words, though the parenthetical field examples are borderline redundant against the enum in 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 read-only filtered-list tool with full schema coverage and no output schema, the essentials are present. However, it omits pagination/offset behavior and does not clarify how results relate to sibling listing tools, leaving modest gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both the fields enumeration and the default field list are already documented in the schema. The description reinforces this by naming KeywordFieldEnum and example fields, but adds little the schema does not already provide. 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: keywords ("ключевые фразы") in ad groups, with the returned data types (phrases, bids in rubles, statuses). It is clearly a read/list operation distinguishable from add_keywords/update_keywords, though it does not call out 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 guidance or reference to alternatives. The agent must infer that this is the read counterpart to add_keywords/update_keywords/manage_keywords purely from the verb in the name; the description provides no conditions, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_retargeting_listsСписки ретаргетингаCRead-only
Получить условия ретаргетинга и подбора аудитории с правилами и областью применения.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| types | No | Фильтр по типу: RETARGETING — цели Метрики, AUDIENCE — сегменты Аудиторий | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| retargeting_list_ids | No | Конкретные условия; без них возвращаются все |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, potentially unbounded read. The description adds little beyond restating that it retrieves rules and scope, but doesn't contradict annotations. It fails to disclose pagination limits (though maxItems hints at 10000), rate limits, or output structure.
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, reasonably concise sentence with no wasted words. However, it is under-specified and front-loads only the general purpose, leaving key details (filtering, pagination) to the schema. It's efficient but lacks informative structure.
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 list tool with full schema coverage and no output schema, the description covers the basic purpose but omits important context: that it supports filtering by type and specific IDs, and that it may paginate. Given the sibling tools include update/delete/add variants, more guidance on distinguishing this as the 'list' operation would improve completeness.
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 fully documents all four parameters including limit, types enum, offset, and retargeting_list_ids. The description adds no parameter-specific information, which is acceptable given the high coverage. 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 verb ('Получить') and resource ('условия ретаргетинга и подбора аудитории'), which gives a general sense of retrieval. However, it doesn't differentiate from siblings like list_audience_targets, list_dynamic_targets, or list_negative_keyword_shared_sets, all of which are also list operations. The scope is vague about what 'область применения' means in practice.
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?
No guidance on when to use this tool versus alternatives like list_audience_targets or list_dynamic_targets. There's no mention of prerequisites, pagination behavior, or when filtering by types is appropriate. The agent is left to infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitelinksСписок быстрых ссылокCRead-only
Получить все или выбранные наборы быстрых ссылок.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| sitelink_set_ids | No | Конкретные наборы; без них возвращаются все наборы аккаунта |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on pagination behavior, result volume, or permissions. It does not contradict the annotations, but contributes very little behavioral context.
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 that is front-loaded with the action and contains no filler. It is efficient, though its brevity is partly the source of the missing usage and behavioral detail.
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 list tool with zero required parameters, fully documented schema, and no output schema, the description is minimally sufficient. Annotations cover the safety profile, but nothing addresses result ordering or pagination beyond the offset parameter's own 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 limit, offset, and sitelink_set_ids are fully documented in the schema itself. The description's 'all or selected sets' mirrors the optional sitelink_set_ids filter but adds no syntax or format detail. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clarifies the all-vs-selected scope. It separates itself from write operations like set_sitelinks/delete_sitelinks by verb alone, but never explicitly names a sibling, 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?
There is no guidance on when to use this tool versus alternatives such as list_ad_extensions or set_sitelinks, no prerequisites, and no conditions. The 'all or selected' phrasing hints at filtering but is a description of scope, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_time_zonesСправочник часовых поясовBRead-only
Справочник часовых поясов (TimeZones) для set_time_targeting и create_campaign. Фильтр по коду или названию.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько часовых поясов вернуть, максимум 500 | |
| search | No | Фильтр по коду или названию пояса: подстрока без учёта регистра, например «moscow» или «Екатеринбург» |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the consumer context (set_time_targeting, create_campaign) and the filter capability; it does not cover the 50-item default limit behavior, pagination, or result size, which would be valuable given the maximum of 500.
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, front-loaded with the resource and followed by the filter capability. Efficient, though the consumer list could be integrated more tightly and the sentence stops short of stating the retrieval action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with no output schema, the essentials (resource, filter, consumers) are present. But the description omits the default limit of 50 and the maximum of 500, which materially affect how an agent should call it, and does not clarify its relationship to get_regions.
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%, with both limit (default 50, max 500) and search (substring, case-insensitive, examples) fully documented in the schema. The description merely echoes the filter capability ('Фильтр по коду или названию') without adding format or syntax 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 a specific resource (time zone reference list) and its consumers (set_time_targeting, create_campaign), which helps position it against siblings like get_regions. However, it describes itself as a 'справочник' (reference/directory) rather than clearly stating the verb (list/retrieve), leaving the action 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?
Naming set_time_targeting and create_campaign implies this is a lookup to support those operations, giving useful context. But there is no explicit when/when-not guidance, no mention of the read-only nature in prose, and no differentiation from get_regions, which is a closely related sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vcardsСписок визитокARead-only
Получить виртуальные визитки по ID или найти их через объявления выбранных кампаний. Создавать визитки Директ через API не даёт — новая визитка заводится в интерфейсе Директа.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| vcard_ids | No | Конкретные визитки по их ID | |
| campaign_ids | No | Найти визитки, привязанные к объявлениям этих кампаний |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true, safety is covered. The description adds a key behavioral constraint: vCards cannot be created via API and must be created in the Direct interface. It does not detail pagination or return behavior.
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 and retrieval modes, followed by the creation limitation. No redundant text; 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 list tool with no output schema and read-only annotations, the description covers purpose, retrieval modes, and creation limitation. It lacks return format or pagination details, but the schema already handles all parameters.
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 documents all four parameters including limit/offset and the ID arrays. The description mentions IDs and campaign associations in prose but adds no syntax or format beyond what the schema already provides. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Получить'/'найти') and resource ('виртуальные визитки'), and clarifies the two retrieval modes (by ID or via campaign ads). It does not name sibling tools to differentiate, but the resource is distinct.
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 two retrieval paths (by ID or via campaign ads) and explicitly notes that creation is not possible via API, directing the agent to the Direct interface. This gives clear when-to-use context and a when-not for creation, though it does not compare against sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_ad_imagesУправление изображениямиADestructive
Загрузить, получить или удалить изображения объявлений (AdImages). Для add данные передаются в base64.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько объектов вернуть (максимум 10000) | |
| action | Yes | Что сделать: add, get или delete (необратимо) | |
| images | No | Изображения для загрузки; обязателен при action=add | |
| offset | No | Смещение выборки: сюда передаётся LimitedBy предыдущей страницы | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| associated | No | Фильтр при action=get: YES — только привязанные к объявлениям, NO — только свободные | |
| ad_image_hashes | No | Хеши изображений: фильтр при action=get, обязателен при action=delete |
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 safety expectations are covered structurally. The description adds only that add operations carry base64 data, but does not disclose that delete is irreversible, what dry_run does behaviorally, or other operational traits beyond what annotations and schema already provide.
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 compact sentence that front-loads the core operations before the add-specific detail. There is no wasted wording or redundant preamble.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema coverage and destructive/open-world annotations, the description is minimally adequate: it identifies the actions and notes the base64 requirement for add. However, it provides no usage guidance, no return-value context for get, and no behavioral notes on delete irreversibility or dry_run.
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 input schema already documents all 7 parameters, including action, images, filters, dry_run, and pagination. The description repeats that add data is base64, which the schema also states, adding no extra semantic meaning.
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 specific verbs (load, retrieve, delete) and a specific resource (ad images / AdImages), so an agent can distinguish it from sibling tools such as manage_ads or manage_campaigns. It covers all three action modes in the tool name and 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?
The description does not say when to prefer this tool over alternatives like manage_ads or list_ads, nor does it state when not to use it. It only notes that add requires base64 data, which is an operational detail 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.
manage_adsУправление объявлениямиBDestructive
Действие над объявлениями: suspend/resume/archive/unarchive/moderate/delete. ⚠️ delete необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Действие: suspend, resume, archive, unarchive, moderate или delete (необратимо) | |
| ad_ids | Yes | Объявления, над которыми выполняется действие | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is known. The description adds per-action specificity — that only 'delete' is irreversible while suspend/archive are presumably reversible — which is genuinely useful beyond the blanket destructiveHint, but it says nothing about preconditions, quotas, or partial-failure behavior across multiple ad_ids.
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 terse fragments, action list front-loaded and the irreversible delete warning placed last for emphasis. Nothing is wasted, though it is arguably too sparse given the destructive, multi-action nature of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-action tool with no output schema, the description is minimum viable: it names the actions and the one irreversible case. It omits dry_run's value as a preview mechanism (only in the schema), batch-size limits, and failure semantics, so an agent must lean entirely on structured fields.
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%: the action enum, ad_ids pattern, and dry_run semantics (including that reads still occur) are all documented in the schema itself. The description merely repeats the action list, adding no format or interaction detail beyond what the schema provides, 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?
States a clear verb+resource ('Действие над объявлениями') and enumerates the six operations, so the agent knows this is a multi-action mutation tool. However it never distinguishes itself from the sibling 'moderate_ads', which overlaps with the 'moderate' action listed here, leaving an ambiguity an agent must resolve on its own.
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 guidance and no routing to alternatives: nothing says when to use manage_ads.moderate versus the standalone moderate_ads tool, and nothing clarifies whether the batch ad_ids should be handled here rather than via list_ads. The irreversibility warning is a caution, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_campaignsУправление кампаниямиADestructive
Запустить, остановить, архивировать, разархивировать или удалить кампании. ⚠️ delete необратимо и недоступен кампании с накопленной статистикой — такую только архивировать.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Действие: suspend, resume, archive, unarchive или delete (необратимо) | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| campaign_ids | Yes | ID кампаний, над которыми выполняется действие |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, so the warning is partly pre-covered, but the description goes beyond them: it pinpoints that delete is the irreversible action and that campaigns with accumulated statistics cannot be deleted at all. This is genuine operational context not derivable from the annotation 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?
Two short sentences: the action list first, then the destructive-constraint warning with a warning glyph. Zero filler and the riskiest information is deferred only slightly and clearly marked.
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 3-parameter mutation tool with full schema coverage, annotations, and no output schema, the definition covers purpose and the key destructive constraint. It does not mention dry_run semantics or batch size limits, which are left entirely to the schema, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so action enum, campaign_ids pattern/limits and dry_run are all documented in the schema. The description only re-states that delete is irreversible, adding no new parameter detail; 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?
Names a specific verb set (suspend/resume/archive/unarchive/delete) applied to the resource 'кампании', so the agent knows exactly which operations are covered. It does not differentiate itself from siblings such as update_campaign or create_campaign, though the enumerated action list makes overlap unlikely.
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 implicitly tells the agent to use archive instead of delete when a campaign has accumulated statistics — a real routing rule. However it gives no guidance on when to pick this bulk-action tool over update_campaign, list_campaigns, or get_campaign, and no preconditions for the other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_dynamic_targetsУправление динамическими целямиCDestructive
Создать, изменить ставки, остановить, возобновить или удалить динамические цели.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | No | Новые ставки и приоритеты; обязателен при action=set_bids | |
| action | Yes | Что сделать: add, set_bids, suspend, resume или delete (необратимо) | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| targets | No | Цели для добавления; обязателен при action=add | |
| dynamic_target_ids | No | Цели для suspend, resume или delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that and the action enum: it omits the irreversibility of delete (only stated in the schema), the dry_run preview behavior, and any permission or rate-limit context.
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, well-formed sentence with no filler, and the operation list is front-loaded. It is efficient, though the extremely terse packaging leaves little for the agent to anchor on beyond the verb list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with five parameters and action-conditional inputs, the description does not explain which parameters pair with which action, though the schema and annotations largely fill that gap and there is no output schema to worry about. Adequate but with a clear gap around action-to-parameter coupling.
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%, with every parameter, enum and constraint documented inline, so the schema does the heavy lifting and baseline 3 is appropriate. The description adds no additional meaning about how bids, targets or dynamic_target_ids are conditioned on the chosen action.
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 clear resource (динамические цели) and enumerates the concrete verbs (create, bid-change, stop, resume, delete) it supports, so an agent immediately knows this is the mutating counterpart to list_dynamic_targets. It is essentially the natural-language form of the action enum, so it does not distinguish itself from siblings beyond that, but the purpose is 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?
No when-to-use guidance is given: there is no mention of picking this over manage_campaigns, nor of the fact that action-specific arguments (bids for set_bids, targets for add, dynamic_target_ids for suspend/resume/delete) must be supplied. The description offers no context or prerequisites for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_keywordsУправление ключевыми словамиBDestructive
Действие над ключевыми фразами: suspend/resume/delete. ⚠️ delete необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Действие: suspend, resume или delete (необратимо) | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| keyword_ids | Yes | Фразы, над которыми выполняется действие |
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 largely covered. The description adds the useful '⚠️ delete is irreversible' warning, but says nothing about the dry_run preview path or bulk/atomicity behavior, which would be valuable for a destructive batch operation.
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?
Extremely front-loaded single sentence: resource, operations, then the irreversibility warning. Nothing wasted, though it is arguably under-specified rather than merely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 3-param mutation with no output schema, the description covers the operations and the irreversible-delete caveat but omits the dry_run safety valve and any indication of scope or auth requirements. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents keyword_ids, action enum and dry_run semantics. The description merely restates the action values and does not add format, ID-source or dry_run guidance beyond the schema 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 clear resource (keywords) plus the three concrete operations (suspend/resume/delete), which is far more than a tautology. It does not, however, distinguish itself from near-neighbors like update_keywords, set_keyword_bids or add_keywords, so an agent must infer it is the state-change 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?
No when-to-use or when-not-to-use guidance, and no alternatives named. The reader must infer from the verb list alone that this is for lifecycle state changes rather than edits or lots of other keyword tools in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderate_adsОтправить объявления на модерациюCIdempotent
Отправить выбранные объявления на модерацию.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_ids | Yes | Объявления, отправляемые на модерацию | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=true, so the mutation and idempotency profile is covered without the description. The description adds nothing beyond that: it does not say what moderation triggers, whether it is reversible, what authorization or account state is required, or how partial failures across a batch are handled.
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 short sentence, but its brevity comes from duplication of the title rather than editing — it earns almost nothing on its own. There is no front-loaded constraint or behavioral detail to justify the minimalism.
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 bulk mutation tool accepting up to 10,000 IDs with no output schema, the description should at least explain what moderation means operationally and how results are reported. Neither is present, leaving a significant gap for an agent deciding whether to invoke 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 coverage is 100%, so both ad_ids and dry_run are fully documented in the schema, including the 10,000-item cap and the dry-run semantics. The description contributes no additional parameter meaning, 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 gives a clear verb+resource ('отправить объявления на модерацию'), but it is essentially a verbatim restatement of the title and adds no scope or differentiation. An agent cannot tell from the text how this relates to siblings like manage_ads or update_text_ad, which also touch individual ads.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as manage_ads. The 'выбранные' (selected) wording lightly implies the caller must first pick ad IDs, but nothing routes the agent between this tool and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ad_group_negative_keywordsМинус-фразы группыADestructive
Минус-фразы на уровне группы объявлений. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Обязателен. replace — заменить список целиком (пустой массив очищает, прежние фразы теряются), add — дописать к текущим, remove — убрать перечисленные. add и remove сначала читают текущий список, это дополнительный вызов API. Фразы сравниваются так же, как их сравнивает Директ: без учёта регистра, буквы ё и е равны, краевые и повторные пробелы не учитываются, операторы закрепления ! и + игнорируются | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| ad_group_id | Yes | ID группы объявлений | |
| negative_keywords | Yes | Минус-фразы группы: при mode=replace — полный новый список взамен прежнего, при add — что дописать, при remove — что убрать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description usefully augments this by spelling out the destruction semantics ('прежние фразы теряются', empty array clears) and the side effect that add/remove read the current list itself, i.e. an extra API call. This adds genuine context beyond the structured fields, though it omits auth/permission or rate-limit information.
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 the purpose front-loaded and the critical destruction warning prominent. Minor redundancy: the add-vs-replace point is made twice (once enumerating modes, once in the closing sentence), which slightly dilutes conciseness.
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, the description covers the key behaviors an agent needs: mode semantics, list-preservation implications, and the self-reading behavior of add/remove. The dry_run parameter is left to the schema, which is acceptable given the otherwise complete operational picture.
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 schema's own mode description already details replace/add/remove plus normalization rules, so the schema carries the burden. The description largely restates the mode behavior rather than extending it, landing at the baseline of 3 for high-coverage schemas.
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 (negative keywords) and scopes it explicitly to 'на уровне группы объявлений', which implicitly distinguishes it from campaign-level siblings like set_campaign_negative_keywords. It is clear what the tool does, though it never names the sibling alternative explicitly, so sibling differentiation rests on the level qualifier rather than a stated 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?
It gives strong when-to-use guidance at the mode level: replace wipes the list, add appends, remove deletes, and it explicitly warns that to add to an existing set you must use add because replace with a single phrase will erase the rest. It does not, however, address when to prefer this tool over its siblings (e.g., campaign-level or shared-set tools), so tool-level alternative guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_audience_targetsУправление аудиторными целямиBDestructive
Добавить, остановить, возобновить, удалить аудиторные цели или изменить их ставки.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | No | Новые ставки и приоритеты; обязателен при action=set_bids | |
| action | Yes | Что сделать: add, set_bids, suspend, resume или delete (необратимо) | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| targets | No | Условия для добавления; обязателен при action=add | |
| audience_target_ids | No | Условия для suspend, resume или delete |
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 covered. The description adds little beyond restating the operations; it omits useful behavioral context such as the irreversibility of delete and the existence of dry_run, which the schema alone carries.
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 compact sentence with the core operations front-loaded and no filler. It is efficient, though its brevity contributes to 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?
For a destructive, multi-action mutation tool with no output schema, the description is minimally adequate: it lists the operations but does not explain the action-to-payload coupling, the dry_run verification option, or irreversibility. Annotations cover safety, but the workflow guidance remains thin.
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 fully documents all five parameters (including action, dry_run, targets and bids). The description adds no parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (аудиторные цели) and enumerates the concrete operations (add, stop, resume, delete, change bids), so an agent understands the tool's scope. It does not explicitly distinguish itself from the sibling list_audience_targets, but the write-oriented wording implies it.
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/when-not guidance, no prerequisites, and no reference to alternatives like list_audience_targets. Usage is only implied by the enumerated action verbs, and the action-to-required-parameter coupling is left entirely to the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bid_adjustmentsИзменить корректировки ставокBIdempotent
Изменить коэффициенты существующих корректировок по их ID.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| adjustments | Yes | Корректировки и их новые коэффициенты |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds no behavioral context beyond that: it says nothing about dry_run preview behavior, batch limits, validation semantics, or what happens to omitted fields.
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 or redundancy. It is appropriately terse for the tool, though its brevity means it is also doing little structural work beyond naming the operation.
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?
The input schema and annotations are thorough, and no output schema exists, so the description need not explain return values. However, for a mutation tool with a dry_run preview and bulk array of up to 1000 adjustments, the description omits important usage context, making it merely minimum viable.
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%, with rich parameter docs for dry_run, adjustment_id, and the bid_modifier range (0–1300). The description mentions ID and coefficients but adds no syntax, format, or constraint detail beyond what the schema already provides, 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?
States a specific verb (Изменить) and resource (коэффициенты существующих корректировок) scoped by ID. The word 'существующих' distinguishes it from add_bid_adjustments and delete_bid_adjustments, though it does not name those alternatives 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?
Implies use only when existing adjustment IDs are known and their coefficients need changing. It gives no explicit when-not guidance and never mentions the sibling tools (add_bid_adjustments, delete_bid_adjustments) or the dry_run preview option, leaving selection between related tools to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_campaign_negative_keywordsМинус-фразы кампанииADestructive
Минус-фразы на уровне кампании. Режим mode обязателен: replace заменяет список целиком (прежние фразы теряются, пустой массив очищает), add дописывает к текущим, remove убирает названные — читать список перед этим не нужно, add и remove делают это сами. Чтобы добавить фразу к существующим, нужен add: replace с одной фразой сотрёт остальные.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Обязателен. replace — заменить список целиком (пустой массив очищает, прежние фразы теряются), add — дописать к текущим, remove — убрать перечисленные. add и remove сначала читают текущий список, это дополнительный вызов API. Фразы сравниваются так же, как их сравнивает Директ: без учёта регистра, буквы ё и е равны, краевые и повторные пробелы не учитываются, операторы закрепления ! и + игнорируются | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| campaign_id | Yes | ID кампании | |
| negative_keywords | Yes | Минус-фразы кампании: при mode=replace — полный новый список взамен прежнего, при add — что дописать, при remove — что убрать |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description reinforces this with concrete consequences ('прежние фразы теряются', 'пустой массив очищает'). It adds real value beyond the annotation flags, though it does not discuss permissions or rate 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?
Front-loads the resource and scope, then concentrates on mode semantics. Slightly repetitive with the schema's mode description, but every sentence is relevant and 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 destructive mutation tool with annotations and no output schema, the description covers mode behavior, data loss, and the read-before-write nuance well. Permissions/response details are not covered but are not critical 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 the schema description already documents each mode exhaustively, so the baseline is 3. The description's mode explanation largely restates the schema, adding only the worked example about a single-phrase replace.
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+resource (setting campaign-level negative keywords) and scopes it with 'на уровне кампании', which distinguishes it from the ad-group sibling. It does not name the alternative tool explicitly, so it falls just 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?
Explicitly distinguishes replace vs add vs remove, tells the agent it need not pre-read the list, and warns that replace with one phrase erases the rest and that add is required to append. The condition selecting each mode is spelled out, so nothing is left to inference.
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
Установить ставки (поиск/сети, в рублях) на уровне фраз, групп или кампаний (сервис Bids). Работает только при ручном управлении ставками: на автостратегии Директ назначает ставки сам, вызов пройдёт без ошибки, но на показы не повлияет. Сначала get_strategy, затем get_keyword_auction — сколько стоит нужная позиция.
| Name | Required | Description | Default |
|---|---|---|---|
| bid | No | Ставка на поиске в рублях | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| context_bid | No | Ставка в сетях (РСЯ) в рублях | |
| keyword_ids | No | Ставки на уровне фраз | |
| ad_group_ids | No | Ставки на все фразы указанных групп | |
| campaign_ids | No | Ставки на все фразы указанных кампаний |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a non-obvious silent-no-op failure mode under autostrategy, which is exactly the behavioral context annotations cannot convey, and it is consistent with readOnlyHint=false and idempotentHint=true. It stops short of covering permissions/auth requirements or confirmation behavior, so not a full 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 purpose, then the key behavioral caveat, then the prerequisite chain in a tight, readable sequence. Every sentence earns its place; only slight density in the final clause 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?
For a mutation tool with no output schema, it covers purpose, the critical when-it-does-nothing condition, and the prerequisite workflow. It does not describe what partial parameter combinations do or confirmation of applied bids, 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 the schema already documents bid, context_bid, keyword_ids, ad_group_ids, campaign_ids and dry_run. The description's 'поиск/сети, в рублях' and level scope add only marginal meaning 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?
States a specific verb (установить) plus resource (ставки) with explicit scope: phrase/group/campaign level, search/network, rubles. The mention of manual vs. auto strategy context and the prerequisite tools clearly separates it from siblings like set_strategy and set_bid_adjustments.
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 ('работает только при ручном управлении ставками') and when-not (autostrategy assigns bids itself; the call succeeds but has no effect on impressions). It also routes the agent through prerequisites: get_strategy first, then get_keyword_auction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_priority_goalsЦели стратегииADestructive
Задать цели стратегии кампании (PriorityGoals) и их ценность в рублях — по ним автостратегия оптимизирует ставки, в том числе «максимум конверсий» со служебным GoalId 13. Режим mode обязателен: add добавляет цели или меняет ценность уже заданных, remove убирает названные, replace заменяет список целиком (пустой массив очищает). Текущий список сервер читает сам. Чтобы добавить цель к существующим, нужен add: replace с одной целью сотрёт остальные. ⚠️ Смена целей перезапускает обучение стратегии. Поддерживаются текстово-графические, динамические, смарт и единые перфоманс-кампании; ID целей — из Метрики.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Обязателен. replace — заменить список целиком (прежние цели теряются), add — добавить цели или поменять ценность уже заданных, remove — убрать перечисленные. Текущий список сервер читает сам, это дополнительный вызов API | |
| goals | Yes | Цели: при mode=replace — полный новый список взамен прежнего (пустой массив очищает), при add — что добавить или чью ценность поменять, при remove — что убрать | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| campaign_id | Yes | ID кампании: текстово-графической, динамической, смарт или единой перфоманс-кампании |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it warns that changing goals restarts strategy training (⚠️), that replace is lossy ('прежние цели теряются', empty array clears), and that the server reads the current list itself. These are exactly the destructive-behavior details the destructiveHint annotation 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?
Front-loads purpose, then layers mode semantics, the destructive pitfall, and the training-restart warning. Dense and mostly waste-free, though the mode explanation is somewhat redundant with the schema and could be trimmed.
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 mutation tool with no output schema, the description covers purpose, per-mode behavior, destructive edge cases, a training-restart side effect, and supported campaign types. An agent has everything needed to invoke it correctly and 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 100%, so the baseline is 3. The description adds real value on top: it spells out the add-vs-replace pitfall for mode and clarifies the service GoalId semantics (13 for maximum conversions). It does not cover dry_run or the goal_id pattern, leaving the schema to do that work.
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 precise verb and resource: 'Задать цели стратегии кампании (PriorityGoals) и их ценность в рублях', and explains what those goals are for (the autostrategy optimizes bids by them). It also names supported campaign types, which distinguishes it from the broader set_strategy sibling.
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 conditional guidance per mode and an actionable exclusion: use add to append because 'replace с одной целью сотрёт остальные'. It also lists supported campaign types. It stops short of naming when this tool should be chosen over set_strategy, so it is strong context rather than full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sitelinksСоздать быстрые ссылкиB
Создать новый набор из 1–8 быстрых ссылок. Возвращает ID набора для привязки к объявлению.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| sitelinks | Yes | Новый набор из 1–8 быстрых ссылок |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and openWorldHint=true, so the write/external-effect nature is already covered. The description adds the 1–8 cardinality constraint and the returned set ID, which is useful, but adds nothing about account mutation scope, dry_run support, or whether an existing set is replaced — and it contradicts nothing.
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 zero padding, front-loading the create action and ending with the return value. Efficient, though it is so terse that it omits guidance a mutation tool would benefit from.
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 mutation tool with a fully documented schema, the description covers the action, the cardinality bound, and the return value (no output schema exists, so naming the returned ID matters). Missing only workflow context and any note that dry_run validation is available.
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%: both parameters, including nested title/href/description fields and the dry_run flag, are documented inline. The description only restates the 1–8 range already expressed by minItems/maxItems, so it does no work 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 specific verb and resource: 'Создать новый набор из 1–8 быстрых ссылок' (create a new set of 1–8 sitelinks), and notes the returned set ID for binding to an ad. It is clearly distinguishable from list_sitelinks and delete_sitelinks by the verb, 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?
No explicit when-to-use guidance and no alternatives named. The phrase 'Возвращает ID набора для привязки к объявлению' hints at the create-then-bind workflow, but the agent gets no condition telling it why to pick this over add_ad_extensions or manage_ads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_strategyИзменить стратегию кампанииBIdempotent
Изменить стратегию текстово-графической кампании: ручная, максимум кликов, средняя цена клика или конверсии, оплата за конверсию. Цены — в рублях, цель Метрики — goal_id.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| goal_id | No | ID цели Метрики для AVERAGE_CPA, PAY_FOR_CONVERSION и WB_MAXIMUM_CONVERSION_RATE; для оплаты за конверсию обязателен. Для WB_MAXIMUM_CONVERSION_RATE допустимо служебное 13 — оптимизация по ключевым целям кампании (PriorityGoals); Директ принимает его, только если в PriorityGoals есть цель, кроме 12 «Вовлечённые сессии»; сами цели задаёт set_priority_goals | |
| average_cpa | No | Средняя цена конверсии в рублях; обязательна для AVERAGE_CPA | |
| average_cpc | No | Средняя цена клика в рублях; обязательна для AVERAGE_CPC | |
| bid_ceiling | No | Максимальная ставка в рублях для WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE и AVERAGE_CPA | |
| campaign_id | Yes | ID текстово-графической кампании | |
| search_type | Yes | Стратегия на поиске: HIGHEST_POSITION (ручная), WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE (максимум конверсий за недельный бюджет), AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION или SERVING_OFF | |
| network_type | Yes | Стратегия в сетях: NETWORK_DEFAULT (по настройкам поиска), MAXIMUM_COVERAGE, WB_MAXIMUM_CLICKS, WB_MAXIMUM_CONVERSION_RATE, AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION или SERVING_OFF | |
| conversion_price | No | Цена конверсии в рублях для PAY_FOR_CONVERSION: списывается за конверсию, а не за клик | |
| weekly_spend_limit | No | Недельный бюджет в рублях; обязателен для WB_MAXIMUM_CLICKS и WB_MAXIMUM_CONVERSION_RATE, для остальных автостратегий необязателен | |
| network_limit_percent | No | Доля расходов в сетях для NETWORK_DEFAULT, проценты |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a write operation (readOnlyHint=false) that is idempotent and open-world, so the safety profile is covered. The description adds only that prices are in rubles and goal_id refers to a Metrica goal — both of which are already restated in the schema — while omitting that the call replaces the existing strategy wholesale.
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, front-loaded with the action and its resource, with no filler. It is efficient, though it spends most of its length listing values the enum already enumerates.
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 11-parameter mutation tool the description is thin: it omits return behavior (no output schema exists) and the conditional dependencies between parameters, relying almost entirely on the schema for correctness. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter documentation baseline is 3. The description's mentions of 'Цены — в рублях' and goal_id duplicate what the schema already states and add no additional syntax or constraint 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+resource ('Изменить стратегию текстово-графической кампании') and enumerates the strategy families (ручная, максимум кликов, цена клика/конверсии, оплата за конверсию). It scopes the tool to text-graphic campaigns, which helps separate it from campaign-level tools, but never explicitly differentiates itself from the read-side sibling get_strategy.
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 never says when to use this tool versus get_strategy or set_priority_goals, nor what prerequisites (e.g. an existing goal or PriorityGoals) must be met. Usage is only inferable from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_targetingЗадать расписание показовAIdempotent
Задать расписание показов кампании: дни, часы, почасовые коэффициенты, праздники и часовой пояс. ⚠️ Расписание заменяется целиком: часы вне переданных правил показов не получат.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| schedule | Yes | Правила показов. Часы, не покрытые ни одним правилом, показов не получают — расписание задаётся целиком, а не дополняется. Правила применяются по порядку, последнее переопределяет предыдущие | |
| time_zone | No | Часовой пояс кампании, например Europe/Moscow. Допустимые значения — в справочнике list_time_zones. Не задан — остаётся прежним | |
| campaign_id | Yes | ID кампании, десятичная строка | |
| holiday_end_hour | No | Час окончания показов в праздники, не включая его, 1–24 | |
| holiday_start_hour | No | Час начала показов в праздники включительно, 0–23 | |
| holiday_bid_percent | No | Коэффициент к ставке в праздники, % от текущей: 10–200 с шагом 10. Ноль запрещён — показы отключает suspend_on_holidays | |
| suspend_on_holidays | No | true — в праздники показов нет; false — идут по правилам holiday_*. Не задан — праздники отдельно не настраиваются | |
| consider_working_weekends | No | Показывать ли в рабочие выходные по расписанию переносимого буднего дня; false — по расписанию выходного |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and openWorldHint=true, so safety/idempotency is covered. The description adds the critical non-obvious trait beyond annotations: the schedule is replaced wholesale and uncovered hours receive no impressions. It omits auth/permission prerequisites, so not a full 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, front-loaded with the action and its scope, followed by the destructive-replacement warning flagged with an emoji. No filler; 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 9-parameter mutation tool with a fully documented schema and no output schema, the description supplies the essential replace-all semantics and the configurable dimensions. It lacks any note on return behavior/permission requirements, but annotations and schema cover most of the remaining burden.
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 each parameter (dry_run, schedule, time_zone, holiday_*, suspend_on_holidays, consider_working_weekends) is already fully documented in the schema. The description only restates the configurable facets at a high level, adding no syntax or format detail beyond the schema — 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?
Specific verb (set / задать) plus resource (расписание показов кампании) with an enumeration of the configurable facets (days, hours, hourly coefficients, holidays, time zone). The write verb cleanly distinguishes it from the read-side sibling get_time_targeting without opening a 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?
The description implies usage (setting a campaign schedule) and warns that the schedule is replaced entirely, but never states when to reach for this tool versus alternatives such as get_time_targeting (inspect first) or update_campaign. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaignОбновить кампаниюAIdempotent
Обновить кампанию: название, бюджет (руб), UTM-разметку и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE). Разметка действует на ссылки всех объявлений кампании.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Новое название | |
| status | No | Действие со статусом показов: SUSPEND (остановить), RESUME, ARCHIVE, UNARCHIVE | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| campaign_id | Yes | ID кампании, десятичная строка | |
| daily_budget | No | Новый дневной бюджет в рублях | |
| tracking_params | No | UTM-разметка, дописывается к ссылкам всех объявлений кампании. Без ведущего «?»: utm_source=yandex&utm_campaign={campaign_id}. Допустимы подстановки Директа в фигурных скобках. null снимает разметку |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, openWorldHint=true), the description discloses a genuine cross-entity side effect: the tracking markup is applied to the links of ALL ads in the campaign, and null removes it. This is exactly the kind of non-obvious consequence annotations cannot express, though it omits permission/auth requirements and the consequences of ARCHIVE.
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 verb and resource, with zero filler. The enumeration of fields partially duplicates the schema, which is the only minor 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 mutation tool with no output schema, the description plus full schema coverage and safety annotations cover the essentials, and it adds the important cross-entity UTM effect. It stops short of explaining permission requirements or whether ARCHIVE/UNARCHIVE is reversible, so it is strong but not exhaustive.
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%: every parameter (campaign_id pattern, status enum, dry_run semantics, budget minimum, tracking_params format and null behavior) is already fully documented in the schema. The description only restates the field list, adding no syntax or format detail 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+resource ('Обновить кампанию') and enumerates exactly which fields can change: name, budget, UTM tracking, status. It is clear what the tool does, but it never distinguishes itself from the ambiguous sibling 'manage_campaigns', so an agent must still guess which updater to pick.
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 when-to-use guidance, no prerequisites, and no naming of alternatives such as manage_campaigns. The partial-update nature ('и/или') is implied but the tool never says under what conditions an agent should choose it over the sibling campaign manager.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_keywordsИзменить ключевые словаA
Изменить текст ключевых фраз и подстановочные переменные {param1}/{param2}. Правка текста может привести к появлению фразы с новым ID или к её удалению как дубликата — сверьтесь с list_keywords после вызова. Ставки меняет set_keyword_bids, статус — manage_keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| keywords | Yes | Фразы и их новые значения; поля, которые не переданы, остаются прежними |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses a non-obvious destructive side effect: a text edit can produce a phrase with a new ID or delete it as a duplicate, and it instructs the agent to verify via list_keywords. This is exactly the kind of mutation risk the 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?
Three tight sentences, front-loaded with purpose, then the behavioral warning, then the sibling routing. No filler and each sentence carries distinct 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?
With no output schema, the description compensates by telling the agent to re-check via list_keywords and clarifying the alternatives for bids/status. Everything needed to invoke the mutation correctly and safely 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%, so keyword_id, keyword, user_param1 and user_param2 are already fully documented in the schema. The description only alludes to the {param1}/{param2} variables, adding no syntax or format detail beyond structured data, 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 the exact resource fields it touches: the phrase text plus the {param1}/{param2} substitution variables. It also distinguishes itself from sibling tools by naming set_keyword_bids (bids) and manage_keywords (status), so an agent can route correctly without opening schemas.
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 carves out the when-to-use boundary: this tool is for text/variable edits, while set_keyword_bids handles bids and manage_keywords handles status. This is the textbook when-not/alternative pattern and leaves nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_retargeting_listsИзменить списки ретаргетингаA
Изменить название, описание и правила условий ретаргетинга. Переданные правила заменяют прежние целиком: сначала прочитайте условие через list_retargeting_lists.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. | |
| retargeting_lists | Yes | Условия и их новые значения; поля, которые не переданы, остаются прежними |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Аннотации покрывают только write-природу (readOnlyHint=false, openWorldHint=true). Описание добавляет ключевую поведенческую деталь — переданные правила полностью заменяют прежние, а не дополняют их, — что важно для предотвращения потери данных. Не упомянуты права доступа, лимиты и последствия ошибок, поэтому не максимум.
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?
Два предложения без лишних слов: сначала назначение и изменяемые поля, затем критичная семантика полной замены и рекомендация предварительного чтения. Информация выстроена от главного к деталям.
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?
Для мутирующего инструмента без output-схемы описание сообщает главное: что меняется, что правила заменяются целиком и что сначала нужно прочитать текущее условие. Схема берёт на себя параметры и dry_run, поэтому серьёзных пробелов для корректного вызова нет.
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?
Покрытие описаний схемы — 100%, поэтому базовый уровень 3. Описание перечисляет изменяемые поля (название, описание, правила), совпадая со схемой, но не добавляет синтаксиса или деталей сверх неё (dry_run, частичность обновления описаны в схеме).
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?
Ставит конкретный глагол (изменить) с конкретным ресурсом (условия ретаргетинга) и перечисляет изменяемые поля: название, описание, правила. Агент сразу понимает назначение и легко отличает инструмент от list_retargeting_lists, add_retargeting_list и delete_retargeting_lists.
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?
Даёт явную рекомендацию по порядку действий — «сначала прочитайте условие через list_retargeting_lists» — и тем самым называет альтернативу для чтения. Однако не оговорено, когда этот инструмент не следует применять (например, при создании или удалении условия), так что явных исключений нет.
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
Обновить текстовое объявление: заголовок, текст, ссылка. Изменённое объявление уходит на модерацию.
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Новая ссылка на сайт | |
| text | No | Новый текст объявления | |
| ad_id | Yes | ID обновляемого объявления | |
| title | No | Новый заголовок | |
| title2 | No | Новый второй заголовок | |
| dry_run | No | true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false and idempotentHint=true, but the description adds a genuinely useful consequence: the edited ad is sent back to moderation ("уходит на модерацию"), which explains a delayed/non-immediate effect. It does not mention permission requirements or what happens to fields left unset.
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. The action and affected fields come first, and the moderation consequence is a targeted second sentence that 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 schema coverage, annotations, and no output schema, the description covers intent and the moderation side effect adequately. Missing are prerequisites and any note that modified ads may need re-approval before serving, but nothing critical blocks a correct call.
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 six parameters, including dry_run's preview semantics and the maxLength constraints. The description's partial field list (title, text, link) adds little and even omits title2, so the 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 names a specific verb and resource ("Обновить текстовое объявление") and enumerates the mutable fields, so an agent knows exactly what the tool touches. It does not differentiate itself from ambiguous siblings such as manage_ads or moderate_ads, and it omits title2, which the schema exposes.
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 tool versus create_text_ad, manage_ads, or moderate_ads, nor any precondition (ad must exist, must belong to the account, editing limits after moderation). The agent is left to infer everything about context.
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.
35 tool updates
v1.7.0- Changed
add_ad_extensions1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
add_bid_adjustments1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
add_keywords1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
add_retargeting_list1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Removed
add_vcard - Changed
create_ad_group1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
create_campaign4 fields changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +} - added
Input schema / properties / type / constAdded value: +"TEXT_CAMPAIGN" - changed
Input schema / properties / type / descriptionPrevious value: -"Тип кампании: текстово-графическая или динамические объявления"New value: +"Тип кампании. Через API создаётся только текстово-графическая: смарт-баннеры и динамические объявления Директ через API не создаёт" - removed
Input schema / properties / type / enumRemoved value: -[ - "TEXT_CAMPAIGN", - "DYNAMIC_TEXT_CAMPAIGN" -]
- Changed
create_text_ad1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_ad_extensions1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_ad_groups1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_bid_adjustments1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_retargeting_lists1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_sitelinks1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
delete_vcards1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
link_negative_keyword_sets1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_ad_images1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_ads1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_campaigns1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_dynamic_targets1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_keywords1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
manage_negative_keyword_shared_sets1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
moderate_ads1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_ad_group_negative_keywords1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_audience_targets2 fields changed- changed
Input schema / properties / bids / items / properties / context_bid / descriptionPrevious value: -"Ставка в сетях в рублях; 0 — снять ста��ку"New value: +"Ставка в сетях в рублях; 0 — снять ставку" - added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_bid_adjustments1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_campaign_negative_keywords1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_keyword_bids1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_priority_goals1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_sitelinks1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_strategy1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
set_time_targeting1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
update_campaign1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
update_keywords1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
update_retargeting_lists1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
- Changed
update_text_ad1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "description": "true — ничего не менять: проверить параметры и вернуть тела запросов, которые ушли бы в Директ. Чтение при этом выполняется.", + "type": "boolean" +}
60 tool updates
v1.6.1- First observed
add_ad_extensions - First observed
add_bid_adjustments - First observed
add_keywords - First observed
add_retargeting_list - First observed
add_vcard - First observed
create_ad_group - First observed
create_campaign - First observed
create_text_ad - First observed
delete_ad_extensions - First observed
delete_ad_groups - First observed
delete_bid_adjustments - First observed
delete_retargeting_lists - First observed
delete_sitelinks - First observed
delete_vcards - First observed
get_account_balance - First observed
get_bid_adjustments - First observed
get_campaign - First observed
get_campaign_negative_keywords - First observed
get_changes - First observed
get_keyword_auction - First observed
get_regions - First observed
get_search_queries - First observed
get_statistics - First observed
get_strategy - First observed
get_time_targeting - First observed
link_negative_keyword_sets - First observed
list_ad_extensions - First observed
list_ad_groups - First observed
list_ads - First observed
list_audience_targets - First observed
list_businesses - First observed
list_campaigns - First observed
list_dynamic_targets - First observed
list_feeds - First observed
list_keywords - First observed
list_negative_keyword_shared_sets - First observed
list_retargeting_lists - First observed
list_sitelinks - First observed
list_time_zones - First observed
list_vcards - First observed
manage_ad_images - First observed
manage_ads - First observed
manage_campaigns - First observed
manage_dynamic_targets - First observed
manage_keywords - First observed
manage_negative_keyword_shared_sets - First observed
moderate_ads - First observed
set_ad_group_negative_keywords - First observed
set_audience_targets - First observed
set_bid_adjustments - First observed
set_campaign_negative_keywords - First observed
set_keyword_bids - First observed
set_priority_goals - First observed
set_sitelinks - First observed
set_strategy - First observed
set_time_targeting - First observed
update_campaign - First observed
update_keywords - First observed
update_retargeting_lists - First observed
update_text_ad
TDQS
Scored across 59 tools
Most tools target a distinct resource, but there is genuine overlap: manage_campaigns sets status while update_campaign also changes status (SUSPEND/RESUME/ARCHIVE/UNARCHIVE); manage_ads includes a 'moderate' action that duplicates the dedicated moderate_ads; and manage_keywords overlaps with update_keywords/set_keyword_bids. The verbose but accurate descriptions mitigate much of this, yet an agent can still reasonably pick the wrong tool.
Names follow a consistent verb_noun snake_case convention (list_campaigns, create_text_ad, delete_ad_groups, set_strategy) throughout. The only deviation is the catch-all 'manage_*' family (manage_ads, manage_campaigns, manage_keywords), which is still readable and part of the same scheme.
59 tools is far beyond the 3–15 sweet spot and heavy for any agent to navigate reliably, even for a complex ad platform. Several catch-all manage_* tools appear designed to consolidate actions, but the surface is still largely one-tool-per-operation and bloated.
Coverage spans campaigns, ad groups, texts ads, keywords, bids, bid adjustments, negative keywords, retargeting, audience/dynamic targets, extensions, sitelinks, vcards, images, statistics and reference data (regions, time zones) — a thorough lifecycle. A few gaps exist (e.g., creating vcards is an API limitation), but these are documented rather than hidden.
Maintenance
Related MCP Connectors
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
Google Ads MCP server — manage campaigns, keywords, and metrics.
Google Ads MCP: reports, search terms, negatives, budgets, campaigns. Approval on every write.
Manage Apple Ads campaigns and reporting in chat.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables managing Yandex Direct PPC campaigns, ad groups, ads, and keywords, plus pulling performance statistics via the Yandex Direct API v5.44105 npm1MIT
- 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.417 npmMIT