yandex-direct-mcp
This server provides tools to manage Yandex.Direct advertising campaigns from any MCP client (e.g., Claude, Cursor), covering campaigns, ad groups, ads, keywords, bids, negative keywords, statistics, and account balance.
Campaign Management
List campaigns with filtering by status and type
Get detailed info about a specific campaign (budget, status, dates, stats)
Create new campaigns (name, type, start date, daily budget)
Update campaigns (name, budget, or status: SUSPEND/RESUME/ARCHIVE/UNARCHIVE)
Ad Group Management
List ad groups for selected campaigns (names, regions, statuses)
Create ad groups within a campaign with regional targeting
Delete ad groups and set negative keywords (minus-phrases)
Ad Management
List ads within ad groups (titles, texts, links, statuses)
Create text ads (headline, body, second headline, URL)
Update ads and manage statuses (pause, archive, moderation, delete)
Keyword Management
List keywords in ad groups (phrases, bids, statuses)
Add keywords to an ad group
Set bids for search and ad networks
Set campaign-level negative keywords
Statistics & Account
Retrieve campaign performance reports for a date range (impressions, clicks, cost, CTR, CPC)
Check account balance
Access the regions directory
Additional Notes
Budgets and bids are in rubles; the server converts to API micro-units automatically
Supports sandbox mode (
YANDEX_DIRECT_SANDBOX=1) for safe testingSupports agency mode via
Client-Loginheader for managing client accounts
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-mcpList all active campaigns"
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.
🗄 Repository archived
Development has moved to theYahia/YaAll — a build where the entire Yandex layer lives in one place: official Yandex MCP servers, MCP for Direct and Metrika, the YaGEO skill, and the Wordstat gate.
The current version of what was here:
mcp/yandex-direct-mcp/Nothing is updated here anymore. Issues and pull requests — in YaAll.
Archived — development moved to theYahia/YaAll, a single repository bundling the whole Yandex stack. The current version of this package now lives at
mcp/yandex-direct-mcp/. Please open issues and pull requests there.
@theyahia/yandex-direct-mcp
MCP server for the Yandex.Direct API — manage contextual advertising from any MCP client (Claude, Cursor, etc.): campaigns, ad groups, ads, keywords, bids, negative keywords, statistics, balance. 20 tools.
Money is in rubles (budgets, bids on input and output); the server itself converts to API micro-units. Sandbox for safe testing and agency mode (Client-Login) are supported.
Related MCP server: yandex-mcp
Installation
Claude Desktop
{
"mcpServers": {
"yandex-direct": {
"command": "npx",
"args": ["-y", "@theyahia/yandex-direct-mcp"],
"env": {
"YANDEX_DIRECT_TOKEN": "ваш_токен"
}
}
}
}Claude Code
claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y @theyahia/yandex-direct-mcpConfiguration (environment variables)
Variable | Required | Purpose |
| yes | Yandex.Direct OAuth token |
| no |
|
| no | Client login for agency tokens ( |
How to get a token
The OAuth token is issued for an app registered in Yandex OAuth with access to the Direct API. Details — app registration and getting a token. API access must be requested in the Direct interface.
⚠️ Warning: real spending
The create_campaign, create_text_ad, add_keywords, set_keyword_bids and other tools modify a live advertising account and can spend money. For debugging scenarios, enable the sandbox (YANDEX_DIRECT_SANDBOX=1).
Tools (20)
Campaigns
Tool | Description |
| List of campaigns (filter by status/type, pagination) |
| Detailed campaign info by ID |
| Create a campaign (budget in rubles, strategy selection) |
| Update name/budget and/or status (SUSPEND/RESUME/ARCHIVE/UNARCHIVE) |
Ad groups
Tool | Description |
| Ad groups of selected campaigns |
| Create a group with region targeting |
| Delete groups by ID |
| Set group negative keywords |
Ads
Tool | Description |
| Ads in groups |
| Create a text ad (≤56/≤30/≤81) |
| Update headline/text/link |
| suspend/resume/archive/unarchive/moderate/delete |
Keywords and bids
Tool | Description |
| Keyword phrases in groups (bids in rubles) |
| Add keyword phrases |
| Set bids (search/network, rubles) on phrases/groups/campaigns |
| suspend/resume/delete |
| Set campaign negative keywords |
Statistics, account, reference data
Tool | Description |
| Statistics for a period (impressions, clicks, spend, CTR, CPC) |
| Account balance (Live API v4) |
| Region code reference (225 = Russia) |
Example requests
Покажи все активные рекламные кампании
Создай кампанию "Летняя распродажа" с бюджетом 5000 ₽/день, старт 2026-05-01
Установи ставку 25 ₽ на ключевые фразы 111 и 222
Добавь минус-фразы "бесплатно", "скачать" в кампанию 12345
Какая статистика у кампаний 12345 и 67890 за последнюю неделю?
Найди код региона для Новосибирска
Покажи баланс аккаунтаDevelopment
npm install
npm run build # tsc → dist/
npm test # vitest (моки fetch)
npm run dev # tsx src/index.tsLicense
MIT
Available Tools
20 toolsadd_keywordsДобавить ключевые словаB
Добавить ключевые фразы в группу объявлений.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | ID группы объявлений | |
| keywords | Yes | Массив ключевых фраз |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-enumerated values (openWorldHint=true). The description adds minimal behavioral detail, only that it adds keywords. It doesn't disclose whether existing keywords are affected or if there are 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?
The description is a single sentence, which is concise but in Russian, potentially limiting usefulness for non-Russian-speaking agents. It is front-loaded but lacks structured details.
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 tool is simple with only two parameters and no output schema, so the description is largely adequate. However, it does not explain return behavior (e.g., success response or error cases), leaving some 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?
Input schema provides 100% coverage with descriptions for both parameters. The description does not add additional meaning beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'add' and the resource 'key phrases to an ad group', effectively distinguishing it from sibling tools like 'create_ad_group' or 'list_keywords'. However, it lacks specificity on whether keywords are appended or replaced, which slightly reduces clarity.
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 such as 'manage_keywords', nor any prerequisites or restrictions. The description offers no context for appropriate usage.
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 |
|---|---|---|---|
| campaign_id | Yes | ID кампании | |
| name | Yes | Название группы объявлений | |
| region_ids | Yes | Коды регионов показа (например [225] = Россия). См. get_regions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true but the description adds minimal behavioral context. It does not disclose potential side effects, permissions required, or whether the operation is reversible. The description only confirms it creates an ad group, which is already 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?
The description is a single short sentence front-loaded with the action. No redundant or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters, no output schema, and openWorldHint annotations, the description lacks information about return values, error handling, or prerequisites. It is incomplete for a creation tool that may have side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are well-documented. The description adds a cross-reference to get_regions for region_ids, but does not provide new semantic meaning beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create', the resource 'ad group', and the context 'in a campaign with region targeting'. It distinguishes the tool from siblings like create_campaign or add_keywords, and references get_regions for region codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (creating ad groups with region targeting) and references get_regions, but does not explicitly exclude alternative scenarios or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignСоздать кампаниюA
Создать новую рекламную кампанию. Бюджет в рублях. ⚠️ Тратит реальные деньги — используйте sandbox для теста.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Название кампании | |
| type | No | Тип: TEXT_CAMPAIGN, DYNAMIC_TEXT_CAMPAIGN | TEXT_CAMPAIGN |
| start_date | Yes | Дата начала YYYY-MM-DD | |
| daily_budget | No | Дневной бюджет в рублях (напр. 1000 = 1000 ₽) | |
| search_strategy | No | Стратегия на поиске: HIGHEST_POSITION, WB_MAXIMUM_CLICKS, AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION, SERVING_OFF | HIGHEST_POSITION |
| network_strategy | No | Стратегия в сетях (РСЯ): SERVING_OFF, NETWORK_DEFAULT, MAXIMUM_COVERAGE, WB_MAXIMUM_CLICKS | SERVING_OFF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait beyond annotations: that the tool spends real money. Annotations only indicate readOnlyHint=false and openWorldHint=true, but the description explicitly warns about financial impact, which is highly valuable for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first states the purpose, the second adds critical information about budget currency and a warning. Every sentence is valuable and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 6 parameters fully described in the schema and no output schema, the description is mostly complete. It covers currency and the major risk (real money). However, it does not mention the return value (e.g., created campaign ID), which could be helpful but is not required given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds only a brief note about budget in rubles, which is already in the schema description. This adds marginal value 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 title and description clearly state the tool creates a new advertising campaign. It is distinct from sibling tools like update_campaign, list_campaigns, etc., and the verb 'create' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a critical usage guideline: '⚠️ Тратит реальные деньги — используйте sandbox для теста' (Spends real money - use sandbox for testing). This warns about serious consequences and guides safe use. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_adСоздать объявлениеB
Создать текстовое объявление: заголовок (≤56), второй заголовок (≤30), текст (≤81), ссылка.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | ID группы объявлений | |
| title | Yes | Заголовок (до 56 символов) | |
| title2 | No | Второй заголовок (до 30 символов) | |
| text | Yes | Текст объявления (до 81 символа) | |
| href | Yes | Ссылка на сайт |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and openWorldHint=true. The description adds no behavioral context beyond 'create' and repeats max lengths already in schema. No side effects, permissions, or error conditions are disclosed.
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, efficient sentence front-loading the purpose. All information 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 creation tool with 5 parameters and no output schema, the description is minimal. It fails to explain what the tool returns (e.g., the created ad's ID) or any prerequisites like ad_group_id existence. The schema covers param descriptions, but overall context is lacking.
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 each parameter described in the schema. The description merely lists the fields with lengths, adding no new semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Создать' (create) and the resource 'текстовое объявление' (text ad), listing the key fields. It distinguishes from siblings like update_text_ad by focusing on creation.
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 use for creating a new text ad but does not explicitly state when to use this tool versus alternatives like add_keywords or create_ad_group. No when-not-to-use guidance is provided.
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 |
|---|---|---|---|
| ad_group_ids | Yes | ID групп объявлений для удаления |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds the explicit warning '⚠️ Необратимо' (irreversible), reinforcing the destructive nature.
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, focused sentences with no unnecessary information. The warning is effectively highlighted.
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 destructive tool with one parameter and no output schema, the description covers the essential action and irreversibility. Adequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for ad_group_ids. The tool description adds no extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'ad groups', and specifies deletion by IDs. It effectively distinguishes from sibling tools like create_ad_group or list_ad_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as when to use list_ad_groups before deletion or any prerequisites. Only states the action.
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 | Логины аккаунтов (для агентств). По умолчанию — аккаунт токена (или YANDEX_DIRECT_LOGIN). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds marginal value by specifying the return fields (Amount, Currency) and API version. It does not disclose permissions, side effects, or behavior beyond what annotations provide, warranting a moderate score.
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 sentence that conveys the essential purpose without unnecessary words. It is front-loaded and structurally optimal for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, read-only annotations), the description adequately covers the core functionality. It lacks details like default behavior when 'logins' is omitted or the format of amount/currency, but these are minor given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'logins' is fully described in the schema (100% coverage), and the description does not add further semantic meaning. Baseline score of 3 is appropriate since the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves balance and financial information (Amount, Currency) via Live API v4. It uses a specific verb-resource pair, but does not explicitly differentiate from sibling tools, though the read-only nature distinguishes it from management siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool or when to avoid it. No alternatives are mentioned, and the parameter description for 'logins' is only in the schema. The absence of usage context leaves the agent to infer its application.
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: бюджет (руб), статус, даты, статистика.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID рекламной кампании |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true (safe read) and openWorldHint=true (results may vary). The description adds value by enumerating the returned fields (budget in RUB, status, dates, statistics), which goes beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that concisely conveys the tool's purpose and key output fields. No unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and rich annotations, the description covers the essential return fields. It does not mention error handling (e.g., invalid ID) but that is often implicit. The lack of output schema is compensated by describing output content.
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 clear description for campaign_id. The tool description does not add additional parameter semantics beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides detailed information (budget, status, dates, statistics) for a campaign by ID. It distinguishes from siblings like list_campaigns (which lists all campaigns) and update_campaign (which modifies). The verb 'get' is implicit but the resource and scope are 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 implies use when needing campaign details by ID, but does not explicitly specify when to use this tool versus alternatives like list_campaigns. No 'when not to' guidance is provided, though the context is straightforward.
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 = Россия.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Фильтр по названию региона (подстрока, регистронезависимо). Напр. 'москва' | |
| limit | No | Макс число регионов в ответе |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description carries less burden. It adds the ability to filter by name and the example '225 = Россия', but does not disclose other behaviors such as pagination, error handling, or response structure. A score of 3 is appropriate as annotations cover safety and the description adds some 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?
The description is extremely concise: two short sentences. Every phrase adds value—the directory's purpose, filtering capability, and a notable region code. No wasted words, and the structure is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 optional parameters, no output schema), the description explains the core functionality and filtering. It could be improved by explicitly mentioning that the response is a list of regions with codes and names, but the example '225 = Россия' hints at the return format. Overall, it is fairly complete for a simple lookup 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 parameters are already well-documented. The description mentions filtering by name, which matches the 'search' parameter, but adds no new meaning beyond the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a directory of region codes (GeoRegions) for targeting, with filtering by name. This clearly identifies the tool's purpose as a lookup/reference. The verb 'get' is implicit but the title 'Справочник' (directory) reinforces the read-only nature. It distinguishes from sibling tools which are mostly mutation/campaign management 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 implies usage for targeting with region filters, but does not explicitly state when to use this tool vs alternatives. No exclusions or alternative tool recommendations are given. Given the sibling tools are unrelated, the usage context is adequately implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statisticsСтатистикаARead-only
Статистика кампаний за период: показы, клики, расход (руб), CTR, CPC (ReportService, TSV).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_ids | Yes | ID кампаний для отчёта | |
| date_from | Yes | Дата начала YYYY-MM-DD | |
| date_to | Yes | Дата окончания YYYY-MM-DD | |
| fields | No | Поля отчёта (по умолчанию: Date, CampaignName, Impressions, Clicks, Cost, Ctr, AvgCpc). Деньги — в рублях. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds useful behavioral details: returns TSV from ReportService, which exceeds annotation scope without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with key info (purpose, metrics, source, format) front-loaded. No wasted words.
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, but description mentions TSV format, partially compensating. For a straightforward statistics retrieval, it provides sufficient context given annotations.
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% with descriptions for all parameters. Description adds no further parameter-level meaning beyond what schema provides, meeting 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?
Description clearly states 'campaign statistics for period' with specific metrics (impressions, clicks, cost, CTR, CPC) and source (ReportService, TSV). Unique among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly for retrieving campaign performance data over a date range. No explicit when-not-to-use, but no sibling alternative exists, making context clear.
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 |
|---|---|---|---|
| campaign_ids | Yes | ID кампаний для выборки групп | |
| limit | No | Сколько объектов вернуть (макс 10000) | |
| offset | No | Смещение выборки для пагинации (= LimitedBy предыдущей страницы) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) already indicate safety and dynamic results. The description adds that the tool returns names, regions, and statuses, providing a bit more detail beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single concise sentence that conveys the core functionality. However, it is in Russian, which may limit understanding for non-Russian agents. It could be more structured with bullet points.
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 is provided, and the description only hints at return fields (names, regions, statuses). It does not explain pagination (limit/offset usage), response format, or further details needed for an agent to fully use the 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?
Input schema has 100% description coverage with clear explanations for campaign_ids, limit, and offset. The description does not add any additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states that the tool returns ad groups for selected campaigns, including names, regions, and statuses. However, it does not use an explicit verb like 'list' or 'retrieve', and the title provides context. It could be more precise.
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 vs alternatives like list_ads or list_campaigns. The description implies usage for retrieving ad groups by campaign IDs but does not mention exclusions or when to choose another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adsСписок объявленийBRead-only
Объявления в группах: заголовки, тексты, ссылки, статусы.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_ids | Yes | ID групп объявлений | |
| limit | No | Сколько объектов вернуть (макс 10000) | |
| offset | No | Смещение выборки для пагинации (= LimitedBy предыдущей страницы) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true and openWorldHint=true. The description adds that it returns specific fields (titles, texts, links, statuses), which is useful but does not disclose pagination behavior or ordering. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the tool's purpose and the type of data returned. No redundant 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?
Given the simplicity of the tool and the presence of annotations (readOnlyHint, openWorldHint), the description is largely sufficient. It lacks details on pagination or status meanings, but for a list operation, the essential information 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 coverage is 100% with parameter descriptions. The description does not add any additional meaning to parameters like limit, offset, or ad_group_ids beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists ads in groups, specifying the fields returned (titles, texts, links, statuses). It distinguishes from sibling tools like list_ad_groups and list_keywords by focusing on ads and their contents.
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 (e.g., list_ad_groups for groups, get_statistics for metrics). The description implies usage for retrieving ad details but does not specify contexts or exclusions.
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
Список рекламных кампаний Яндекс.Директ с фильтрацией по статусу и типу. Бюджеты — в рублях.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Фильтр по статусу: ACCEPTED, DRAFT, MODERATION и т.д. | |
| types | No | Типы кампаний: TEXT_CAMPAIGN, DYNAMIC_TEXT_CAMPAIGN и т.д. | |
| limit | No | Сколько объектов вернуть (макс 10000) | |
| offset | No | Смещение выборки для пагинации (= LimitedBy предыдущей страницы) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is known. The description adds minimal behavioral context: budgets are in rubles and filtering by status/type is available. No mention of pagination behavior, default limit, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with only two sentences. The first sentence states the primary purpose and key features (filtering by status and type), and the second sentence adds a specific detail about budget currency. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations (readOnlyHint, openWorldHint), the description adequately covers the core functionality. However, there is no output schema and the description does not explain the return format, pagination behavior beyond the limit/offset parameters, or default ordering. Missing details on what fields are returned per campaign.
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 parameters. The description mentions filtering by status and type, which aligns with the parameters, but adds no new semantic details beyond what the schema provides (e.g., no examples of acceptable values or format expectations). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's purpose: listing Yandex.Direct advertising campaigns with filtering by status and type. It distinguishes itself from siblings like get_campaign (single campaign) and other list tools by emphasizing the filtering capabilities and the fact that budgets are in rubles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, mention prerequisites, or compared siblings like add_keywords, create_campaign, or get_statistics.
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
Ключевые фразы в группах объявлений: фразы, ставки (руб), статусы.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_ids | Yes | ID групп объявлений | |
| limit | No | Сколько объектов вернуть (макс 10000) | |
| offset | No | Смещение выборки для пагинации (= LimitedBy предыдущей страницы) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds minimal behavioral context beyond the return fields. It does not discuss pagination or other traits.
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 sentence that efficiently conveys the purpose. No wasted words, but could be structured more clearly.
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?
While the description lists some output fields, it lacks details on the full output structure (e.g., array, object shape). Given no output schema, more completeness would be beneficial.
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 parameters are already described. The description adds no additional meaning beyond defining the return data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists keywords in ad groups and specifies the data returned (phrases, bids, statuses). However, it does not explicitly differentiate from sibling tools like add_keywords or manage_keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like manage_keywords. The description only implies listing, but no when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_adsУправление объявлениямиADestructive
Действие над объявлениями: suspend/resume/archive/unarchive/moderate/delete. ⚠️ delete необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_ids | Yes | ID объявлений | |
| action | Yes | Действие: suspend/resume/archive/unarchive/moderate/delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (destructiveHint: true). The description adds a critical behavioral detail: '⚠️ delete необратимо' (delete is irreversible). This provides valuable context beyond annotations. No other behavioral traits (e.g., auth needs, side effects) are described, but the warning is sufficient for a score of 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a warning, very concise. It is front-loaded with the action list. Minor improvement could be using a bullet list for clarity, but overall it is efficient and to the point.
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 moderate complexity (6 actions, no output schema), the description is adequate but lacks details on the effects of each action (e.g., what 'suspend' vs 'archive' does). It warns about delete but does not explain behavior for other actions. With 2 parameters and annotations, more completeness would be helpful.
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% with parameter descriptions for both 'ad_ids' and 'action'. The description does not add new meaning to these parameters beyond listing the actions again. The baseline is 3 since schema already documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'manage' and resource 'ads', listing specific actions (suspend, resume, archive, etc.). This distinguishes it from sibling tools like 'delete_ad_groups' (different resource) and creation/edit 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 lists available actions, implying when to use the tool (when performing actions on ads). However, it does not explicitly specify when not to use it or provide comparisons to alternative tools (e.g., 'delete_ad_groups' for ad groups; no alternative for deleting ads). No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_keywordsУправление ключевыми словамиADestructive
Действие над ключевыми фразами: suspend/resume/delete. ⚠️ delete необратимо.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword_ids | Yes | ID ключевых фраз | |
| action | Yes | Действие: suspend/resume/delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds a clear warning that delete is irreversible, providing helpful behavioral context beyond the annotation.
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 concise: one sentence and a warning emoji. Every element serves a purpose, with key information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters, no output schema, and clear annotations, the description is largely adequate. It lacks details on side effects of suspend/resume but covers the main destructive action.
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% with descriptions for both parameters. The description adds no additional parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs actions (suspend/resume/delete) on keywords, which matches the resource (keywords) and differentiates from sibling tools like add_keywords or list_keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., add_keywords for creation, set_keyword_bids for bids). The description only lists the actions without context for selection.
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Минус-фразы группыAIdempotent
Задать минус-фразы на уровне группы объявлений (заменяет текущий список; пустой массив очищает).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | ID группы объявлений | |
| negative_keywords | Yes | Минус-фразы группы (пустой массив — очистить) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint true and readOnlyHint false. The description adds key behavioral details: it replaces the entire list and clearing with empty array. This exceeds the annotation's minimal info, providing full transparency for a mutation 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, well-structured sentence includes the core action and a parenthetical clarifying key behavior. No extra words, high efficiency.
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 write operation with no output schema, the description adequately covers the tool's purpose and behavior. It lacks details on return value or errors, but given the simplicity and annotations, it is sufficient for most use cases.
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 already explains both parameters (ad_group_id, negative_keywords with clearing behavior). The tool description does not add new meaning beyond the schema; 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?
Description clearly states it sets negative keywords at the ad group level, with the behavior of replacing the current list and clearing with an empty array. This distinguishes it from sibling tools like set_campaign_negative_keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (setting ad group negative keywords) and describes the replacement and clearing behavior. However, it does not explicitly mention when not to use or alternatives like set_campaign_negative_keywords, leaving some inference to the agent.
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Минус-фразы кампанииAIdempotent
Задать минус-фразы на уровне кампании (заменяет текущий список; пустой массив очищает).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID кампании | |
| negative_keywords | Yes | Минус-фразы кампании (пустой массив — очистить) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and readOnlyHint=false. The description adds behavioral context: replacement semantics and clearing behavior, which go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the key information with no wasted words.
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 simplicity (2 required params, no output schema, no enums, no nested objects) and the presence of annotations, the description provides sufficient context. It could mention success/failure behavior, but the core semantics are clear.
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% with each parameter described. The tool description adds the replacement/clearing behavior, but the parameter descriptions already include that context. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: setting negative keywords at the campaign level, with specific semantics (replaces current list, empty array clears). It distinguishes from sibling set_ad_group_negative_keywords by specifying campaign 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?
The description implies usage through the tool name and behavioral hint (replaces), but does not explicitly state when to use vs alternatives such as set_ad_group_negative_keywords or add_keywords.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| keyword_ids | No | ID ключевых фраз (ставки на уровне фраз) | |
| ad_group_ids | No | ID групп (ставки на все фразы групп) | |
| campaign_ids | No | ID кампаний (ставки на все фразы кампаний) | |
| bid | No | Ставка на поиске в рублях | |
| context_bid | No | Ставка в сетях (РСЯ) в рублях |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotent and open world hints. The description adds context about bid levels and currencies, but does not disclose whether bids are overwritten or merged, or mention any side effects beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and resource with no wasted words.
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?
Adequate for a mutating tool with annotations, but could mention that bids are overwritten and provide more context about the effect of setting bids at different levels. No output schema exists, so return values are not explained.
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 fully describes each parameter. The description only summarizes the purpose, adding no extra meaning 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 clearly states the verb (set), resource (bids), and scope (keyword, ad group, campaign levels) with currency and network context, distinguishing it from sibling tools like manage_keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., manage_keywords) or when not to use it. The description only explains what it does, not the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaignОбновить кампаниюAIdempotent
Обновить кампанию: название, бюджет (руб) и/или статус (SUSPEND/RESUME/ARCHIVE/UNARCHIVE).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ID кампании | |
| name | No | Новое название | |
| daily_budget | No | Новый дневной бюджет в рублях | |
| status | No | Действие со статусом: SUSPEND, RESUME, ARCHIVE, UNARCHIVE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, openWorldHint=true. The description adds no behavioral context beyond 'update,' such as whether changes are reversible, required permissions, or side effects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 parameters, no output schema, but schema has descriptions), the description covers the essential use case. It lacks details on partial updates or validation but is sufficient for basic usage.
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 describes each parameter in detail. The description merely restates the parameter names and adds that budget is in rubles and status values, providing no new semantic value 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 clearly states the tool updates a campaign's name, budget, and status. It uses specific verbs ('обновить') and resource ('кампанию'), and distinguishes from sibling tools like 'create_campaign' or 'delete_ad_groups'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (update campaign fields) but provides no guidance on alternatives, when not to use it, or prerequisites. It lists status enum values but does not explain their implications.
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 |
|---|---|---|---|
| ad_id | Yes | ID объявления для обновления | |
| title | No | Новый заголовок (до 56 символов) | |
| title2 | No | Новый второй заголовок (до 30 символов) | |
| text | No | Новый текст (до 81 символа) | |
| href | No | Новая ссылка на сайт |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and openWorldHint=true. The description adds valuable behavioral context: the changed ad goes to moderation. This is not in annotations and helps the agent understand consequences beyond the structured 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?
Two short sentences with clear, front-loaded purpose. Every word is informative with no fluff.
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 update tool with 5 parameters, annotations covering idempotency and open world, and no output schema, the description is mostly complete. It explains the moderation effect, which is crucial context. Minor gap: no mention of what happens to omitted fields (likely unchanged due to idempotentHint).
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 descriptions cover all 5 parameters with details (e.g., max lengths). The description repeats 'заголовок, текст, ссылка' but omits 'title2' and provides no additional semantic meaning beyond the schema. Since schema coverage is 100%, baseline is 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?
The description clearly states the verb 'обновить' (update) and the resource 'текстовое объявление' (text ad), listing the updatable fields (заголовок, текст, ссылка). It distinguishes from the sibling tool 'create_text_ad' by focusing on modification rather than creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (update an existing ad vs. create a new one) but does not explicitly state usage context, prerequisites, or when not to use. It lacks guidance on alternatives like delete or manage_ads.
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.
19 tool updates
v4.0.1- Changed
add_keywords1 field changed- added
Input schema / properties / keywords / minItemsAdded value: +1
- Changed
create_ad_group1 field changed- changed
Input schema / properties / region_ids / descriptionPrevious value: -"Коды регионов показа (например [225] = Россия)"New value: +"Коды регионов показа (например [225] = Россия). См. get_regions."
- Changed
create_campaign5 fields changed- changed
Input schema / properties / daily_budget / descriptionPrevious value: -"Дневной бюджет в у.е. (микро-единицы)"New value: +"Дневной бюджет в рублях (напр. 1000 = 1000 ₽)" - added
Input schema / properties / daily_budget / exclusiveMinimumAdded value: +0 - added
Input schema / properties / network_strategyAdded value: +{ + "default": "SERVING_OFF", + "description": "Стратегия в сетях (РСЯ): SERVING_OFF, NETWORK_DEFAULT, MAXIMUM_COVERAGE, WB_MAXIMUM_CLICKS", + "type": "string" +} - added
Input schema / properties / search_strategyAdded value: +{ + "default": "HIGHEST_POSITION", + "description": "Стратегия на поиске: HIGHEST_POSITION, WB_MAXIMUM_CLICKS, AVERAGE_CPC, AVERAGE_CPA, PAY_FOR_CONVERSION, SERVING_OFF", + "type": "string" +} - added
Input schema / properties / start_date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
create_text_ad4 fields changed- added
Input schema / properties / text / maxLengthAdded value: +81 - changed
Input schema / properties / title / descriptionPrevious value: -"Заголовок (до 35 символов)"New value: +"Заголовок (до 56 символов)" - added
Input schema / properties / title / maxLengthAdded value: +56 - added
Input schema / properties / title2 / maxLengthAdded value: +30
- Added
delete_ad_groups - Changed
get_account_balance2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / loginsAdded value: +{ + "description": "Логины аккаунтов (для агентств). По умолчанию — аккаунт токена (или YANDEX_DIRECT_LOGIN).", + "items": { + "type": "string" + }, + "type": "array" +}
- Added
get_regions - Changed
get_statistics6 fields changed- added
Input schema / properties / campaign_ids / minItemsAdded value: +1 - changed
Input schema / properties / date_from / descriptionPrevious value: -"Дата начала в формате YYYY-MM-DD"New value: +"Дата начала YYYY-MM-DD" - added
Input schema / properties / date_from / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - changed
Input schema / properties / date_to / descriptionPrevious value: -"Дата окончания в формате YYYY-MM-DD"New value: +"Дата окончания YYYY-MM-DD" - added
Input schema / properties / date_to / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - changed
Input schema / properties / fields / descriptionPrevious value: -"Поля отчёта (по умолчанию: Date, CampaignName, Impressions, Clicks, Cost, Ctr, AvgCpc)"New value: +"Поля отчёта (по умолчанию: Date, CampaignName, Impressions, Clicks, Cost, Ctr, AvgCpc). Деньги — в рублях."
- Changed
list_ad_groups2 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Сколько объектов вернуть (макс 10000)", + "exclusiveMinimum": 0, + "maximum": 10000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Смещение выборки для пагинации (= LimitedBy предыдущей страницы)", + "minimum": 0, + "type": "integer" +}
- Changed
list_ads2 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Сколько объектов вернуть (макс 10000)", + "exclusiveMinimum": 0, + "maximum": 10000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Смещение выборки для пагинации (= LimitedBy предыдущей страницы)", + "minimum": 0, + "type": "integer" +}
- Changed
list_campaigns4 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Сколько объектов вернуть (макс 10000)", + "exclusiveMinimum": 0, + "maximum": 10000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Смещение выборки для пагинации (= LimitedBy предыдущей страницы)", + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / status / descriptionPrevious value: -"Фильтр по статусу: ACCEPTED, DRAFT, MODERATION, etc."New value: +"Фильтр по статусу: ACCEPTED, DRAFT, MODERATION и т.д." - changed
Input schema / properties / types / descriptionPrevious value: -"Типы кампаний: TEXT_CAMPAIGN, DYNAMIC_TEXT_CAMPAIGN, etc."New value: +"Типы кампаний: TEXT_CAMPAIGN, DYNAMIC_TEXT_CAMPAIGN и т.д."
- Changed
list_keywords2 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Сколько объектов вернуть (макс 10000)", + "exclusiveMinimum": 0, + "maximum": 10000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Смещение выборки для пагинации (= LimitedBy предыдущей страницы)", + "minimum": 0, + "type": "integer" +}
- Added
manage_ads - Added
manage_keywords - Added
set_ad_group_negative_keywords - Added
set_campaign_negative_keywords - Added
set_keyword_bids - Changed
update_campaign3 fields changed- changed
Input schema / properties / daily_budget / descriptionPrevious value: -"Новый дневной бюджет"New value: +"Новый дневной бюджет в рублях" - added
Input schema / properties / daily_budget / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / status / descriptionPrevious value: -"Действие: SUSPEND, RESUME, ARCHIVE, UNARCHIVE"New value: +"Действие со статусом: SUSPEND, RESUME, ARCHIVE, UNARCHIVE"
- Added
update_text_ad
12 tool updates
v3.0.2- First observed
add_keywords - First observed
create_ad_group - First observed
create_campaign - First observed
create_text_ad - First observed
get_account_balance - First observed
get_campaign - First observed
get_statistics - First observed
list_ad_groups - First observed
list_ads - First observed
list_campaigns - First observed
list_keywords - First observed
update_campaign
TDQS
Scored across 20 tools
Each tool targets a distinct action and level (campaign, ad group, ad, keyword, etc.). There is no overlap in purpose; even similar tools like `add_keywords` and `set_keyword_bids` handle different aspects (adding phrases vs setting bids).
All tool names use a consistent verb_noun snake_case pattern (e.g., `create_campaign`, `list_ads`, `set_keyword_bids`). Verbs like create, get, list, update, delete, manage, set, add are used consistently across similar operations.
20 tools is appropriate for a Yandex Direct advertising platform. It covers account management, campaign/ad group/ad operations, keywords, negative keywords, bids, stats, and reference data without being excessive or too sparse.
Core workflows are covered, but notable gaps exist: no campaign delete, no update for ad groups, and no individual get tools for ad groups or keywords (only list). Missing management for ad types beyond text ads. These gaps may hinder some use cases.
Maintenance
Related MCP Connectors
Google Ads MCP server — manage campaigns, keywords, and metrics.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Google Ads, Meta Ads & GA4 MCP server - 250+ tools for campaigns, creatives, audiences & reports.
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for managing Yandex Direct advertising, Yandex Metrica analytics, Wordstat keyword research, and Yandex Webmaster SEO tools, with self-configuring OAuth; provides 153 tools for complete ad and search workflows from AI assistants.1006 npm3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Yandex Direct, Metrika, Wordstat, and Webmaster APIs, providing 132 tools to manage advertising campaigns, analytics, keyword research, and reporting through any MCP-compatible client.59MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives AI agents direct access to the Yandex Direct API to manage campaigns, groups, ads, keywords, bids, and reports via natural language.117 npm6Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for Yandex Direct, Yandex Metrika, and Wordstat with 120 tools to manage contextual advertising from AI assistants.MIT