Skip to main content
Glama
askads

Yandex Direct MCP

Yandex Direct MCP

npm CI Glama License: MIT

Yandex Direct MCP connects an AI app to your Yandex Direct advertising account. Ask in plain language where your ad budget is going, compare campaigns, ads, and keywords, then prepare or make the changes you need without switching between account sections. Setup starts right in the conversation: no need to create a token or edit configuration in advance.

  • 44 tools. Campaigns, ad groups, ads, keywords, bids, adjustments, extensions, statistics, balance, reference books, and account connection right in the conversation.

  • Two ways to connect. A remote server by URL requires no manual token retrieval and is read-only; a local one via npx gives full access to the account.

  • In-chat connection. Yandex opens a sign-in page; after the code from the chat you can start working with ads right away, and access is renewed automatically.

  • Money in a readable format. Convenient tools show budgets, bids, and balance in the account currency rather than API micro-units.

  • Real advertising. Local changes are applied to the live account and can affect spending. For testing, Yandex Direct sandbox is available.

Try it with your first message:

Show me the campaigns in my account and last week's spend by ad group.

Connect the server · See scenarios · Open technical documentation


See it working in a minute

You: Connect Yandex Direct.

Assistant: Gives you a link to sign in to Yandex. Open it under the account with access to the desired advertising account, confirm access, and send back the code shown.

You: Sends the code from the Yandex page.

Assistant: Connects Direct and shows the account. No need to restart the app.

You: Show me the campaigns in my account and last week's spend by ad group.

Assistant: Finds the campaigns, builds a report by ad group, and shows spend in the account currency.

Related MCP server: Yandex MCP Server

Table of contents

Quick start

  1. Choose a connection method and add the server to your AI app using the instructions below.

  2. Open a new conversation and ask: "Show me the campaigns in my account and last week's spend by ad group."

Analysis without getting a token yourself — by URL

The remote server https://mcp.askads.ru/mcp connects through an app that supports MCP by URL. Sign in to Yandex in your browser and confirm access: no token needs to be passed in the config. This option is read-only — for statistics, audits, and viewing objects; it does not change ad settings.

In Claude Code you can add it with the command:

claude mcp add --transport http yandex-direct https://mcp.askads.ru/mcp

After connecting, open /mcp and complete authorization. In other apps that support HTTP MCP, add the same URL through the app interface.

Full access — locally via npx

Creating and modifying objects requires Node.js 20+. npx downloads the server on first launch — no separate package installation needed. No need to obtain a token in advance — connection starts right in the conversation:

  1. Add the server to your AI app — an example for Codex is open below; other apps are collected in collapsible instructions.

  2. Write: "Connect Yandex Direct" — the assistant will walk you through signing in to Yandex and show the account.

For CI and agent setups — a ready-made token and YANDEX_DIRECT_LOGIN, see Connection and configuration.

Through the app interface:

  1. Open Settings → Plugins → MCP servers.

  2. Click Add server.

  3. Add the launch command npx -y mcp-yandex-direct@latest.

Through the command line:

codex mcp add yandex-direct -- npx -y mcp-yandex-direct@latest

Check the connection:

codex mcp list

Official Codex instructions

claude mcp add --transport stdio --scope user yandex-direct -- npx -y mcp-yandex-direct@latest

Check the connection: claude mcp list.

Open Settings → Developer → Edit Config and add to claude_desktop_config.json:

{
  "mcpServers": {
    "yandex-direct": {
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct@latest"]
    }
  }
}

If there is no Developer section, open the file manually: macOS — ~/Library/Application Support/Claude/claude_desktop_config.json, Windows — %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop.

Open ~/.cursor/mcp.json to connect the server in all projects, or .cursor/mcp.json in a specific project. Add:

{
  "mcpServers": {
    "yandex-direct": {
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct@latest"]
    }
  }
}

In the command palette, run MCP: Open User Configuration. In the opened mcp.json, add the server:

{
  "servers": {
    "yandex-direct": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-yandex-direct@latest"]
    }
  }
}

After saving, run MCP: List Servers and start the server from the list.

What you can delegate

Check how the budget is being spent

  • "Which campaigns spent the most last week?"

  • "Which ads are getting impressions and clicks but no conversions?"

  • "Compare spend, CTR, and average CPC across campaigns for the month."

  • "Show the account balance and the remaining daily API quota."

Find areas for improvement

  • "Which keywords are spending budget but getting no clicks?"

  • "Which ad groups and ads are currently paused or failing moderation?"

  • "Check which bid adjustments are active for mobile devices."

  • "What sitelinks and refinements does this campaign have?"

Prepare changes

  • "Suggest new bids for high-CTR keywords and show the changes before applying."

  • "Check whether the campaign has negative keywords for this topic and prepare a list."

  • "Put together the parameters for a new text campaign for Moscow: budget, ad groups, keywords, and ads."

Perform an explicit action

  • "Add these keywords to group 123 and set the bid to 45 ₽."

  • "Pause ad 456."

  • "Upload the page with the image to the ad library."

How it works

Advertising is usually built from three levels: campaign → ad group → ad. The ad group contains keywords, serving settings, and bid adjustments. Ads can have sitelinks, refinements, business cards, and images.

The server helps you look at these objects together: link campaign spend with ad group statistics, keywords, and ads. It can create new campaigns and ads of the text type only. Campaigns of other types can be read, renamed, have their budgets changed, be paused, archived, and deleted by ID.

Statistics are not generated instantly: get_statistics launches a report in the Reports service and waits for it to be ready. Large lists are paginated automatically by autoPaginate.

What can change data

The remote server by URL only reads data. The local server via npx can change a live advertising account:

Action

What happens

What to watch out for

Read statistics and objects

The server retrieves campaigns, ads, keywords, balance, and reports.

These calls do not change data or move money.

Create

You can create a text campaign, ad group, text ad, keywords, extensions, or upload an image.

New objects will go into the live account unless the sandbox is enabled.

Update

You can change budgets, bids, names, negative keywords, ad group settings, and bid adjustments.

Changing bids and budgets can affect spending.

Change status or delete

You can pause, resume, archive, or delete some objects.

Deletion and some actions are irreversible.

Direct API request

raw_request opens any API method for which there is no dedicated tool.

Any method other than reading requires confirmWrite=true; data there is passed in micro-units.

The tools pass read, write, and potentially irreversible action labels to the AI app. The app may show a confirmation, but its behavior depends on the client. A direct API request will additionally not perform a write without confirmWrite=true; changing ads requires an explicit request.

Connection and configuration

For normal use, no token is needed in advance:

  1. Ask in the chat to connect Yandex Direct.

  2. Open the Yandex OAuth link under the account with access to the desired advertising account.

  3. Confirm access and send the displayed code back in the chat. That's it — you can work with ads: no need to restart the client or edit the configuration.

From then on, the connection lives on its own: access is renewed automatically and does not expire after a year. To check the status, ask "show connection status"; to disconnect, say "disconnect Direct". The granted access can be revoked in Yandex ID.

For CI and automated setups where there is no conversation, configuration via environment variables is available:

Variable

Purpose

YANDEX_DIRECT_TOKEN

Ready-made OAuth token; takes priority over in-chat sign-in.

YANDEX_DIRECT_LOGIN

Client login when working through an agency account; otherwise the API will show the agency account.

YANDEX_DIRECT_SANDBOX

true — work in the Yandex Direct test environment (sandbox).

YANDEX_DIRECT_OAUTH_CLIENT_ID

Client ID of your own OAuth app instead of the built-in one.

YANDEX_DIRECT_LANG

API response language; defaults to ru.

YANDEX_DIRECT_TIMEOUT_MS

Request timeout; defaults to 60,000 ms.

YANDEX_DIRECT_MAX_RETRIES

Number of retries on transient errors; defaults to 3.

You can get a ready-made token for YANDEX_DIRECT_TOKEN via the link, signing in under the account with access to the desired account:

Get a Yandex Direct token

Do not publish the token in chats, repositories, or screenshots: it grants access to the advertising account, including actions that may affect the budget.

Data and telemetry

By default, the server sends anonymous technical events: a random installation identifier, the name of the invoked tool, server versions, AI application, Node.js, and operating system. This is needed to understand which parts of the server are used and whether problems occur at startup. The Yandex token, advertising account data, tool arguments, request texts, values, and names of environment variables are not sent.

To disable telemetry for Ask Ads MCP servers, set the environment variable:

ASKADS_TELEMETRY=0

Limitations

  • Daily API quota. Each call consumes Units. The get_quota tool shows how much has been spent, how much remains, and what is available for today.

  • Report limits. Yandex reports have their own limits on volume and quantity per day, and report readiness in the Reports service requires waiting.

  • Large lists. If the internal limit is reached during automatic pagination, the server explicitly marks the result as incomplete rather than hiding this fact.

  • Temporary errors. The server makes up to three retries under rate limits. Network and server errors are automatically retried only for read operations, so as not to duplicate a change.

  • Production account. Local changes are applied to the real advertising account and may affect spending. For tests, use the sandbox (YANDEX_DIRECT_SANDBOX=true).

  • No continuous monitoring. The server runs during a call from the AI application. If the application supports scheduled tasks, you can set up a periodic request to check the needed metrics.

Technical documentation

Support

Found a bug or missing a scenario? Create an issue or write to Telegram.

Available Tools

46 tools
ad_actionДействие с объявлениямиC
Destructive

Выполняет действие над объявлениями по id: moderate, suspend, resume, archive, unarchive или delete.

NameRequiredDescriptionDefault
idsYesId объявлений, к которым применить действие.
actionYes
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond repeating the action enum: it does not say whether delete is irreversible, whether suspend loses settings, or what preconditions (campaign state, moderation) apply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the enumeration is dense but necessary. Slightly long action list aside, nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent multi-action tool with no output schema, the description leaves key questions unanswered: which operations are reversible, what state transitions are invalid, and what the call returns. The action semantics are the main gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and both ids and client_login carry descriptions (including the login fallback logic). The action enum itself has no description in the schema, and the tool description only echoes the values without explaining what moderate or archive vs delete actually do.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (выполняет действие) and resource (объявления) and enumerates the allowed operations, so an agent understands it is a state-change tool over ad IDs. It implicitly separates itself from list_ads/update_text_ad by listing lifecycle actions only, though it never states the contrast explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over update_text_ad (content edits) or delete_ad_groups (group-level deletion). The presence of both archive/unarchive/delete in one tool makes routing decisions non-obvious, yet nothing addresses them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_bid_modifierДобавить корректировку ставокB

Добавляет корректировку ставок на кампанию или группу объявлений. Значения BidModifier — проценты по правилам API (например, 0–1300), а не деньги.

NameRequiredDescriptionDefault
mobileNoКорректировка для мобильных.
desktopNoКорректировка для десктопа.
regionalNoКорректировки по регионам.
adGroupIdNoId группы объявлений (либо это поле, либо campaignId).
campaignIdNoId кампании (либо это поле, либо adGroupId).
retargetingNoКорректировки по ретаргетингу.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
demographicsNoКорректировки по демографии.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation/non-idempotent profile is covered structurally. The description adds the useful behavioral constraint that values are percentages per API rules (0–1300) rather than currency, but says nothing about permissions, whether existing modifiers are merged or replaced, or what happens on repeat calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the operation stated first and the unit clarification front-loaded behind it. Nothing is wasted, though it is arguably too terse given the tool's 8-parameter nested schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 8 optional parameters, nested objects, and no output schema, the description covers the unit semantics well but omits the add-vs-set distinction, the campaignId/adGroupId exclusivity rule, and any note on what the call returns. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning the schema lacks: the schema only sets minimum: 0 on percent fields, while the description supplies the 0–1300 domain and clarifies these are percentages, not money. That is a genuinely valuable addition for interpreting all the nested percent fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Добавляет корректировку ставок") and names the two scopes it can target (campaign or ad group). It does not, however, differentiate itself from the very similarly named sibling set_bid_modifiers, leaving the add-vs-set distinction to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 rather than set_bid_modifiers or get_bid_modifiers, and no mention of prerequisites such as needing exactly one of campaignId/adGroupId. The agent must infer usage purely 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_calloutsДобавить уточненияA

Создаёт уточнения, до 25 символов каждое. Уточнения неизменяемы — чтобы поменять, нужно удалить и создать заново. Привязка к объявлениям — через сервис Ads.

NameRequiredDescriptionDefault
textsYesТексты уточнений, до 25 символов каждый.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, non-idempotent write, but the description adds genuinely new behavioral facts: callouts cannot be modified once created, and this call does not bind them to ads. Missing are the practical limits (max callouts per ad/set) and any auth or error behavior, but it goes meaningfully 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler, and the most decision-relevant fact — immutability — is placed early. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter create tool with no output schema, the description covers the essentials: what is created, its size constraint, that it is immutable, and that ad binding is a separate step. It could still say what the call is returning (created IDs) and whether there is a per-ad cap on how many callouts may exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both `texts` and `client_login` fully documented in the schema, so baseline is 3. The description's 25-character note duplicates the schema's maxLength/minLength rather than adding new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Создаёт уточнения") and immediately bounds the unit of work ("до 25 символов каждое"). It does not name the sibling tools it complements, but the create/get/delete callout trio in the sibling list makes its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The immutability sentence effectively routes the agent: to change an existing callout you must delete it and create it anew, which points at delete_callouts. It also clarifies a boundary of use — attaching to ads happens elsewhere ("через сервис Ads"), so this tool is library-only. No explicit exclusion of get_callouts, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_keywordsДобавить ключевые фразыB

Добавляет ключевые фразы в группу объявлений, при необходимости — со ставками для поиска и сетей.

NameRequiredDescriptionDefault
keywordsYesКлючевые фразы для добавления.
adGroupIdYesId группы объявлений.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a mutation (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety profile is covered. The description adds only that bids are optional per channel; it does not explain behavior on duplicate/existing keywords or what happens if a bid is supplied for an existing phrase, which is the non-obvious part of a non-idempotent add.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action and its optional refinement with no waste. It is efficient, though extremely terse for a mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema but a fully described input schema and annotation coverage of the safety profile, the description is minimally adequate. For a non-idempotent mutation it should say more about how duplicates or bid conflicts are handled, and it gives no indication of the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters and nested bid/contextBid/keyword fields are already documented. The description's mention of optional search and network bids merely restates schema content without adding format, constraints, or currency nuances beyond it — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (adds keywords to an ad group) with the additional scope that bids for search and networks are optional. An agent can tell this is an add operation, distinct from list_keywords or set_keyword_bids, though the description never names those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool applies (adding new keywords to a group) but gives no explicit when-to-use versus alternatives, no note on whether to use keyword_action or set_keyword_bids for other keyword operations, and no prerequisites such as needing an existing ad group id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_statusСтатус подключения к ДиректуA
Read-onlyIdempotent

Показывает, подключён ли Яндекс Директ: есть ли токен, откуда он взят (переменная окружения YANDEX_DIRECT_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты Директа отвечают, что подключение не настроено.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only and idempotent, and the description adds important behavioral context: it makes no network calls and never displays the token itself. It also explains where the token comes from and where saved data resides, which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core status information, and then adds the safety guarantee and usage trigger. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only diagnostic tool, the description covers what the tool checks, what it will not do, and when to invoke it. The exact output format is not described, but the tool's purpose is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the input schema is complete, so there is nothing for the description to compensate for. The description correctly implies no external input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb and resource: it shows whether Yandex Direct is connected, with concrete details like token presence, source, expiry, and file location. This clearly distinguishes it from sibling tools like start_login, finish_login, and direct API tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger condition: call this when Direct tools report that the connection is not configured. It doesn't explicitly discuss when not to use it or compare it to login/logout alternatives, but the intended diagnostic use is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_actionДействие с кампаниямиB
Destructive

Выполняет действие над кампаниями по id: suspend, resume, archive, unarchive или delete.

NameRequiredDescriptionDefault
idsYesId кампаний, к которым применить действие.
actionYes
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is fully carried by structured fields. The description adds no behavioral context beyond them: it does not say that delete is irreversible while suspend/resume are reversible, whether partial failures are possible across the id list, or what permissions/client scope are needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the verb, the target, and the complete action vocabulary with zero filler. Nothing is wasted and the key enumeration is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive batch mutation with no output schema, and the description never addresses the return shape (per-id success/failure, partial completion) or irreversibility. Given the tool's blast radius across multiple campaign ids, more operational guidance is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is a moderate 67% and both the action enum and client_login fallback behavior (YANDEX_DIRECT_LOGIN / token's own account) are already documented in the schema. The description only restates that ids target campaigns, adding no format, ordering, or batching semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Выполняет действие') and resource ('над кампаниями по id') and enumerates the exact action set (suspend, resume, archive, unarchive, delete), so an agent knows precisely what this does. It stops short of differentiating from close siblings such as update_campaign or ad_action, which would be needed for a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the enumerated action list rather than stated: there are no when-to-use, when-not-to-use, or alternative-routing sentences (e.g. use update_campaign to change settings instead of this). An agent can infer the batch-state-change role but must guess relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clients_overviewСводка по клиентамA
Read-onlyIdempotent

Сводка по всем клиентам агентства и кабинетам в управлении за один вызов — для вопросов вроде «что у меня по аккаунтам в управлении»: по каждому клиенту баланс общего счёта и число кампаний по состояниям (on — идут или могут идти, suspended — остановлены пользователем, off — не идут по другой причине, ended) и статусам модерации (moderation, rejected, draft). Архивные кампании не считаются. Клиенты — из list_clients, либо явный список logins. Ошибка по одному клиенту (нет доступа, нет общего счёта) не прерывает остальных и попадает в его строку. С параметром stats добавляет показы, клики и расход (с НДС, в валюте клиента) за период — по одному отчёту Reports на клиента, строго по очереди: Яндекс пускает примерно один отчёт в 10 секунд, так что 30 клиентов — около 5 минут; клиенты без неархивных кампаний не запрашиваются, а кто не уложился в 5 минут, помечается statsSkipped. Без stats ответ приходит за секунды — запрашивать расход, только когда вопрос про деньги или трафик. Не вызывать list_campaigns по каждому клиенту в цикле — эта сводка дешевле. Тратит баллы API каждого клиента: один запрос кампаний на клиента и один запрос баланса на 50 клиентов у агентства (у обычного аккаунта — на каждого).

NameRequiredDescriptionDefault
limitNoСколько клиентов обойти, 1–200. По умолчанию 50.
statsNoДобавить показы, клики и расход за этот период. Медленно: около 10 с на клиента.
loginsNoТолько эти логины клиентов. По умолчанию — все из list_clients.
searchNoТолько клиенты, у которых логин или название содержит эту подстроку.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is free; the description instead adds non-obvious operational traits: archival campaigns excluded from counts, per-client errors isolated into that row rather than aborting the call, a ~1 report/10s rate limit (~5 min for 30 clients), and a statsSkipped marker for stragglers. It also discloses API-point cost per client and the 50-client balance batching. Only gap: it does not describe response ordering or how the row shape looks beyond the fields mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is one long paragraph, but front-loaded with the purpose and the core semantics before cost details. Almost every sentence carries a decision-relevant fact (fast vs slow path, error isolation, point cost). It could be split into purpose / cost / output sections for faster scanning, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-shape burden and does: per-client general-account balance, campaign counts split by state (on/suspended/off/ended) and moderation status, plus per-row error text and statsSkipped. Combined with disclosed latency and cost, an agent has everything needed to choose and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the 3 baseline applies, but the description genuinely adds semantics: clients come from list_clients unless an explicit logins list is given, stats pulls impressions/clicks/spend with VAT in the client's own currency, and the 5-minute ceiling explains why statsSkipped appears. The limit parameter's interaction with traversal is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific resource and scope: an aggregate summary over all agency clients and managed accounts in one call. It explicitly differentiates from siblings by naming list_clients as the source of clients and warning against looping list_campaigns per client. An agent can distinguish this from get_balance, get_statistics, and list_campaigns without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete triggering question («что у меня по аккаунтам в управлении») and an explicit conditional: request stats only when the question is about money or traffic, otherwise the fast path applies. It also names the anti-pattern alternative (looping list_campaigns) and states this summary is cheaper, so the when-not is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ad_groupСоздать группу объявленийB

Создаёт группу объявлений в кампании с заданными регионами показа.

NameRequiredDescriptionDefault
nameYesНазвание группы объявлений.
regionIdsYesId регионов показа, например [225] — Россия.
campaignIdYesId родительской кампании.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the mutating, non-idempotent character is covered structurally. The description adds only that regions are part of creation — no mention of required permissions, whether a duplicate name errors, or what the call returns (notably absent, since there is no output schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification for a mutation tool rather than ideal trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Safety profile is covered by annotations and parameters are fully documented in the schema, so the minimum is met. However, with no output schema, an agent gets no indication of the return value (e.g., the created ad group's id) or failure modes, which the description could have supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a worked example for regionIds, a pattern and fallback chain for client_login, so the schema carries the semantics. The description only restates that regions and a campaign are involved, adding no new parameter meaning — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Создаёт группу объявлений') and adds scope ('в кампании с заданными регионами показа'). It is naturally distinguished from update_ad_group/delete_ad_groups/list_ad_groups by the verb, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not guidance, no mention that a parent campaign must already exist, and no routing to alternatives like update_ad_group. Usage is only implied by the phrase 'в кампании'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_text_adСоздать текстовое объявлениеA

Создаёт текстовое объявление (TextAd) в группе объявлений. Новые объявления создаются черновиками. TextAdAdd требует хотя бы одно из Href/TurboPageId/VCardId/BusinessId — этот инструмент передаёт посадочную страницу через href (обязателен); объявление с BusinessId вместо ссылки создаётся через raw_request.

NameRequiredDescriptionDefault
hrefYesURL посадочной страницы (обязателен для TextAdAdd).
textYesТекст объявления, до 81 символа.
titleYesЗаголовок (Title 1), до 56 символов.
mobileNoМобильное ли это объявление. Поле в API устарело (значение принудительно NO), но остаётся обязательным.
title2NoВторой заголовок (Title 2), до 30 символов.
adGroupIdYesId родительской группы объявлений.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=true, idempotent=false), so the key added value is the lifecycle fact that new ads are created as drafts ("Новые объявления создаются черновиками") — behavior an agent cannot infer from the schema. It omits the practical consequence of non-idempotency (repeated calls create duplicate drafts) and what state/review step follows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, draft behavior second, the parameter constraint and sibling redirect last. No filler, and the most decision-relevant facts are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter create tool with fully documented schema and annotations, the description covers purpose, lifecycle and the alternative path. With no output schema, it never says what the call returns (e.g., the new ad's Id), which an agent needs to chain into ad_action or update_text_ad.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and href's "обязателен для TextAdAdd" note already appears in the schema, so most of the description's parameter content is a restatement. The only real addition is enumerating the alternative landing-page fields (TurboPageId/VCardId/BusinessId) that do not exist as parameters here, which is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Создаёт текстовое объявление (TextAd)") plus the parent container ("в группе объявлений"), which distinguishes it from create_ad_group, update_text_ad and ad_action among the siblings. It also names the one variant it does not cover (BusinessId ads), so the boundary with raw_request is visible without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the API-level constraint (TextAdAdd needs at least one of Href/TurboPageId/VCardId/BusinessId) and routes the BusinessId case explicitly to raw_request, which is real when-to-use guidance. It stops short of telling the agent to list_ad_groups/list_ads first or to use update_text_ad for existing ads, so the exclusion set is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_text_campaignСоздать текстовую кампаниюA

Создаёт кампанию TextCampaign (текстово-графические объявления). Без biddingStrategy применяются ручные ставки на поиске с отключёнными сетями (Search HIGHEST_POSITION, Network SERVING_OFF); чтобы включить автостратегию или сети, передать biddingStrategy целиком — {Search, Network}.

NameRequiredDescriptionDefault
nameYesНазвание кампании.
endDateNoДата окончания в формате YYYY-MM-DD.
startDateYesДата начала в формате YYYY-MM-DD.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
biddingStrategyNoПолный объект BiddingStrategy {Search, Network}. Заменяет значение по умолчанию.
dailyBudgetModeNoРежим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. По умолчанию STANDARD.
dailyBudgetAmountNoДневной бюджет в валюте аккаунта (конвертируется в микроединицы).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-destructive, open-world, non-idempotent write. The description goes beyond them by disclosing the hidden default applied when biddingStrategy is omitted (Search HIGHEST_POSITION, Network SERVING_OFF), which an agent could not infer from the schema. It stops short of stating permissions or the resulting object state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero padding, with the default-behavior caveat front-loaded before the override instruction. Every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter creation tool with a nested biddingStrategy object and no output schema, it covers the highest-risk default but leaves budget semantics, the created object's initial state (e.g. whether it is created stopped/draft), and what the call returns unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the schema already describes biddingStrategy as replacing the default. The description restates that and adds the concrete default values, which is a modest but genuine gain; it says nothing about dailyBudgetMode/dailyBudgetAmount interaction or endDate behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Создаёт кампанию TextCampaign (текстово-графические объявления)', immediately telling the agent this creates a campaign container rather than an ad group or ad. It never names a sibling, but the campaign-vs-ad distinction is clear from the wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It communicates one real usage decision: omit biddingStrategy to get manual Search bids with networks off, or pass biddingStrategy fully to enable an auto-strategy or networks. There is no guidance on when this tool is preferable to update_campaign, no prerequisites (client_login / auth), and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_vcardСоздать визиткуA

Создаёт виртуальную визитку в кампании. Визитки неизменяемы — чтобы поменять, нужно удалить и создать заново.

NameRequiredDescriptionDefault
cityYesГород, например Москва.
ogrnNoОГРН.
houseNo
phoneYesКонтактный телефон.
streetNo
countryYesСтрана, например Россия.
buildingNo
workTimeYesВремя работы в формате API, например "1#5#9#00#18#00" — пн–пт 09:00–18:00.
apartmentNo
campaignIdYesКампания, к которой относится визитка.
companyNameYesНазвание организации.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
contactEmailNo
extraMessageNoДополнительная информация на визитке.
contactPersonNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a real behavioral fact not present in structured data — that created vcards are immutable and must be deleted and recreated to change. It does not address duplicate creation on retry despite idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero padding, and the immutability constraint is front-loaded as the second sentence where an agent will read it before calling. Nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter creation tool with a nested phone object and no output schema, the description covers the create action and the immutability constraint but says nothing about what is returned (e.g., a vcard id) or how client_login resolves when omitted — details an agent needs to chain follow-up calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 15 parameters and only 60% schema description coverage, the description must compensate, but it names no parameters at all. Six parameters (house, street, building, apartment, contactEmail, contactPerson) are undocumented in both the schema and the description, leaving the agent to infer their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 scopes it to a campaign, so the agent knows exactly what is produced. Sibling differentiation is only implicit — get_vcards and delete_vcards exist but 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The immutability note ('Визитки неизменяемы — чтобы поменять, нужно удалить и создать заново') implies the delete-then-recreate workflow instead of an update tool, which is genuine routing guidance. It never explicitly points to get_vcards for inspection or delete_vcards for the follow-up step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_ad_groupsУдалить группы объявленийA
Destructive

Удаляет группы объявлений по id (adgroups/delete). Вместе с группой удаляются её объявления и ключевые фразы; отменить это нельзя.

NameRequiredDescriptionDefault
idsYesId групп, которые нужно удалить.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already declare destructiveHint=true and idempotentHint=false, the description adds crucial behavioral detail beyond them: deleting a group cascades to its ads and keywords, and the action cannot be undone. That is exactly the kind of consequence an agent needs before invoking a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single tightly packed sentence with the key operation and endpoint front-loaded, followed by the cascade and irreversibility warning. No wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter delete tool with full schema coverage and strong destructive annotations, the description covers everything essential: what is deleted, the cascade effect, and the irreversibility. No output schema exists, so return-value detail is unnecessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the ids and client_login parameters are already documented in the schema. The description only repeats that deletion is by id and adds no further parameter semantics, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource in Russian: deletes ad groups by id, and even names the API endpoint (adgroups/delete). It is clearly distinguishable from siblings such as update_ad_group or list_ad_groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation's usage is implied clearly enough — use it to delete ad groups by id — but there is no explicit guidance on when to choose this versus update_ad_group or list_ad_groups, nor any stated exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_bid_modifiersУдалить корректировки ставокC
Destructive

Удаляет корректировки ставок по id (bidmodifiers/delete).

NameRequiredDescriptionDefault
idsYesId корректировок, которые нужно удалить.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing behavioral beyond that — it does not say deletions are permanent, whether the ids array is applied atomically or partially on failure, or what happens to running campaigns that referenced the modifiers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the resource and keying mechanism front-loaded and no filler. It is concise, though part of that brevity comes from omitting useful context rather than from tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations carry the destructive profile, the schema fully documents both parameters, and no output schema exists, so the description is minimally sufficient. For a destructive batch delete it should still flag irreversibility or partial-failure behavior, which is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, including a description for 'ids' and a detailed fallback chain for 'client_login', so the schema carries parameter meaning. The description only echoes that deletion is by id, adding no format or batch-size detail beyond the schema — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Удаляет корректировки ставок по id') plus the API endpoint (bidmodifiers/delete), so the agent can tell it apart from get_bid_modifiers, add_bid_modifier and set_bid_modifiers. It does not explicitly name those siblings as alternatives, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to delete versus using set_bid_modifiers to update or add_bid_modifier to re-create. The only usage signal is the preposition 'по id', leaving the agent to infer the workflow from the verb alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_calloutsУдалить уточненияC
Destructive

Удаляет уточнения по id (adextensions/delete).

NameRequiredDescriptionDefault
idsYesId уточнений, которые нужно удалить.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the endpoint reference: it does not say whether deletion is permanent, what happens to ads referencing the callouts, or how partial failures across multiple ids are handled — significant gaps for a destructive batch tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence, front-loaded with the operation and immediately followed by the endpoint. No waste, though the extreme brevity reflects under-specification rather than disciplined concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent batch delete with no output schema, the description should at minimum state irreversibility and error semantics. The schema and annotations cover parameters and the safety flag, but the consequences of invoking this tool are left entirely undisclosed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (ids and the optional client_login fallback to YANDEX_DIRECT_LOGIN) are fully documented in the schema. The description's 'по id' merely echoes the schema, which is the expected baseline-3 outcome.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Удаляет уточнения по id') plus the underlying API endpoint (adextensions/delete), so an agent can tell it apart from get_callouts and add_callouts by the delete verb. It stops short of naming those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says nothing about when to use this versus add_callouts or get_callouts, and gives no preconditions — e.g. whether callouts must first be detached from ads or whether ids can refer to shared callout sets. Usage must be inferred entirely from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_vcardsУдалить визиткиC
Destructive

Удаляет визитки по id (vcards/delete).

NameRequiredDescriptionDefault
idsYesId визиток, которые нужно удалить.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the endpoint path and confirms deletion by id — it says nothing about permanence, batch behavior on partial failure, or permission requirements, which would have real value for a destructive batch tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the action front-loaded and zero waste. It is efficiently sized, though perhaps too minimal to be maximally helpful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with full schema coverage, annotations carrying the safety profile, and no output schema, the definition is minimally viable. It lacks any behavioral context a caller would want before mass-deleting records, but the structured fields cover the essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both ids and client_login are documented in-schema), so baseline is 3. The description's 'по id' merely restates the ids parameter and adds nothing about the optional client_login fallback semantics already covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Удаляет визитки') plus the API path (vcards/delete), which is unambiguous. It does not explicitly distinguish itself from siblings like get_vcards or create_vcard, but the name and verb make the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives, no prerequisites, no warnings about irreversibility beyond the implicit verb. The only hint is 'по id', which is a parameter constraint, not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

finish_loginЗавершить подключение ДиректаA
Idempotent

Второй шаг подключения: обменивает код подтверждения из start_login на токен доступа, сохраняет его в файл только для владельца (0600) и сразу проверяет живым запросом к Директу. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Код одноразовый и живёт 10 минут: если он не принят, вызовите start_login заново и попросите свежий.

NameRequiredDescriptionDefault
codeYesКод подтверждения, который Яндекс показал пользователю после входа.

TDQS

A4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavior (file permission 0600, live verification, no restart needed, 10-minute TTL), but it contradicts the idempotentHint=true annotation by calling the code 'одноразовый' (one-time) and instructing a fresh code when it is not accepted. A one-time code means repeated calls with the same parameter cannot be idempotent, so the annotation conflict forces a score of 1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler; key action, side effects, success consequence, and failure handling are each given one focused sentence. The essential 'second step' context is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter auth-completion tool, the description covers the prerequisite, file side effect, live validation, and failure recovery. Minor gaps remain: it does not describe the exact response/error shape or whether an existing token file is overwritten, but no output schema is present so these are not blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already defines 'code' as the confirmation code shown by Yandex. The description adds useful lifecycle semantics beyond the schema: the code is single-use, expires in 10 minutes, and must be refreshed via start_login if rejected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource: it exchanges the confirmation code from start_login for an access token, saves it to an owner-only file, and verifies it with a live Direct request. It also frames itself as the 'second step of connection', which distinguishes it from start_login, logout, and auth_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool ('Второй шаг подключения', with a code from start_login) and what to do on failure: call start_login again for a fresh code. It also tells the agent that after success the rest of the tools work immediately, so sequencing is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_infoДанные аккаунтаA
Read-onlyIdempotent

Возвращает данные текущего аккаунта рекламодателя (логин, валюта, тип, страна) через сервис clients Яндекс Директа.

NameRequiredDescriptionDefault
fieldNamesNoКакие поля клиента вернуть. По умолчанию — типовой набор.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Аннотации уже задают readOnlyHint=true, idempotentHint=true и openWorldHint=true, поэтому планка ниже. Описание добавляет полезный контекст: источник через сервис `clients` и состав возвращаемых полей, что важно при отсутствии output-схемы, но не раскрывает поведение при ошибках или авторизации.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Для read-only инструмента с двумя необязательными параметрами и полным покрытием схемы описание достаточно: оно указывает набор возвращаемых данных вместо отсутствующей output-схемы. Не хватает лишь явного указания, как отличить результат при передаче client_login от собственного аккаунта.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Покрытие описаний схемы 100%, поэтому базовая оценка — 3. Перечисленные поля (логин, валюта, тип, страна) дают пример того, что можно запросить через fieldNames, но синтаксис и приоритет client_login описаны только в схеме.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Указывает конкретный глагол и ресурс («Возвращает данные текущего аккаунта рекламодателя») и перечисляет возвращаемые поля (логин, валюта, тип, страна). «Текущего аккаунта» неявно отличает инструмент от list_clients, но сравнение с этим соседом не сформулировано явно.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Формулировка «текущего аккаунта» подразумевает контекст использования, но нет явных указаний когда использовать этот инструмент вместо list_clients или clients_overview, и нет исключений. Ориентирование на соседей остаётся на вывод агента.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ad_imagesИзображения объявленийA
Read-onlyIdempotent

Возвращает список изображений из библиотеки изображений, ключ — хеш изображения. Новые изображения загружает upload_ad_image.

NameRequiredDescriptionDefault
limitNoМаксимум объектов на страницу.
hashesNoФильтр по хешам изображений.
offsetNoСмещение постраничной выдачи.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that results are keyed by image hash, which shapes how an agent consumes the output, but says nothing about pagination behavior or empty-result handling despite limit/offset parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no padding: the operation is stated first, then the sibling routing. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter, read-only listing tool with full schema documentation and no output schema, this is nearly sufficient. The only shortfall is that paging behavior and the shape of the returned hash-keyed collection are not described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, hashes and client_login are all documented in the schema itself. The description's hash-key remark gives mild context for the hashes filter but adds no format or usage detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource (returns a list of images from the image library) and adds that the result is keyed by image hash, which is a useful distinguishing detail. It does not differentiate itself from other read-heavy siblings like get_creatives, which an agent might reasonably confuse with an image library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes image-creation to upload_ad_image ("Новые изображения загружает upload_ad_image"), giving a clear when-not signal. However, no positive guidance on when to call this instead of get_creatives or other asset readers is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ad_videosВидео объявленийA
Read-onlyIdempotent

Читает видео из библиотеки видео по id (API требует id). Загрузка идёт через raw_request (advideos/add).

NameRequiredDescriptionDefault
idsYesId видео (обязательны по требованию API).
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered. The description adds the useful fact that the tool cannot upload (redirecting to raw_request/adviews.add) and that ids are an API-level requirement, but says nothing about pagination behaviour or the shape of returned objects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the primary read behaviour front-loaded and the upload redirect as a supporting note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a small read-only tool with four fully documented parameters and complete annotations, the description covers purpose, the key constraint and the alternative write path. Only pagination and return-content expectations are left to the schema, which is acceptable here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all four parameters carry their own descriptions, so the schema does the heavy lifting. The description only echoes the mandatory-id constraint that the schema's own 'ids' description already states, adding no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Читает" / reads) and resource ("видео из библиотеки видео по id"), so the agent knows it retrieves video objects by identifier. It also draws a boundary against the upload path, but does not differentiate itself from neighbouring read tools like get_creatives or get_ad_images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: read with ids here, and uploads must go through raw_request (advideos/add), which prevents an agent from looking for a write path in this tool. No explicit exclusion criteria against other media-reading siblings are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balanceБаланс аккаунтаA
Read-onlyIdempotent

Возвращает баланс общего счёта и финансовые поля (Amount, AmountAvailableForTransfer, Currency, Discount, AccountID) через устаревший сервис AccountManagement Live v4 — единственный API Яндекс Директа, который отдаёт баланс (в v5 финансового метода нет). Amount — строка в ВАЛЮТЕ АККАУНТА (не в микроединицах); отрицательный Amount означает задолженность. По умолчанию — собственный аккаунт токена, а при переданном client_login — счёт этого клиента; чтобы получить несколько общих счетов разом (агентство, до 50 логинов), передать logins.

NameRequiredDescriptionDefault
loginsNoЛогины аккаунтов, по которым нужны данные. По умолчанию — собственный аккаунт токена.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds substantive context: the call goes through the legacy AccountManagement Live v4 surface, Amount is a string in account currency (not micro-units), and a negative Amount means debt. These are non-obvious behaviors an agent would otherwise get wrong; only rate limits/legacy-service constraints are unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded: the return fields and purpose come first, followed by the legacy-API caveat and then parameter routing. The v4-vs-v5 parenthetical is long but genuinely load-bearing for an agent deciding whether another tool could do the job. Slightly denser than needed but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does so by naming all five financial fields plus the currency/debt semantics. What remains missing is the shape of the response when 'logins' is used (single object vs per-login array) and any partial-failure behavior, a minor gap for a read-only 2-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the agency 'up to 50 logins' cap and the bulk-multi-account use case for 'logins'. It also restates the client_login fallback chain, which the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Возвращает баланс общего счёта и финансовые поля') and enumerates the returned fields by name. It also differentiates itself structurally from every sibling by noting it is the only Yandex Direct API surface that exposes balance (v5 has no financial method), so an agent can rule out get_account_info or the campaign tools for this need.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing for all three modes: default = token's own account, client_login = that client's account, logins = multiple shared accounts (agency, up to 50 logins). This is clear selection guidance for the parameters. It stops short of stating exclusions or error conditions, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bid_modifiersКорректировки ставокA
Read-onlyIdempotent

Читает корректировки ставок (мобильные, десктоп, демография, ретаргетинг, регионы, видео) для кампаний или групп объявлений. BidModifier — это процент, а не деньги.

NameRequiredDescriptionDefault
idsNoФильтр по id корректировок.
typesNoФильтр по типам корректировок.
levelsNoУровни, на которых читать. По умолчанию оба: CAMPAIGN и AD_GROUP.
adGroupIdsNoФильтр по id групп объявлений.
campaignIdsNoФильтр по id кампаний.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and openWorld behavior, so safety is covered. The description adds the important domain fact that BidModifier is a percentage rather than money, plus scope across campaign and ad-group levels—context not present in annotations or schema. It does not describe return shape or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences are front-loaded with the action and resource, followed by a high-value unit clarification. There is no repetition or wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only filter tool with fully documented parameters, the description covers the resource, scope, and key percentage semantic while annotations cover safety. It lacks return-value guidance, but given the simple read behavior and 100% schema coverage this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six optional parameters are already documented in the schema; this establishes a baseline of 3. The description mentions campaign/ad-group scope and adjustment types, but adds no filter syntax, default behavior, or enum meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Читает') and resource ('корректировки ставок'), and enumerates covered adjustment categories and campaign/ad-group scope. This clearly separates it from sibling mutators such as add_bid_modifier, set_bid_modifiers, and delete_bid_modifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Читает' and by the surrounding read-versus-write sibling set, but no explicit when-to-use, when-not-to-use, or named-alternative guidance is provided. An agent can infer it is the read counterpart, yet no workflow context such as inspecting before updating is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calloutsУточненияB
Read-onlyIdempotent

Возвращает список уточнений из библиотеки adextensions. Привязать уточнение к объявлению можно через сервис Ads.

NameRequiredDescriptionDefault
idsNoФильтр по id уточнений.
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the library-source scope and the cross-service linking note, but says nothing about pagination behavior, result size, or auth/account scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the core action is front-loaded before the cross-service note. Nothing redundant is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list tool with full schema coverage and rich annotations, the description covers the essentials. It is thin on what the returned callout objects contain and on pagination semantics, but no output schema exists to relieve that burden entirely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (ids, limit, offset, client_login) are already documented in the schema, including the fallback behavior of client_login. The description adds no parameter-level meaning beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns a list of callouts from the adextensions library. The word 'список' plus the read framing distinguishes it from the sibling mutators add_callouts and delete_callouts, though those siblings are never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence clarifies scope by pointing out that linking a callout to an ad happens in the Ads service, which implicitly bounds what this tool does. However, there is no explicit 'use this when... instead of add_callouts/delete_callouts' guidance or prerequisite note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_creativesКреативыB
Read-onlyIdempotent

Возвращает список креативов (смарт-баннеры, HTML5) из библиотеки креативов.

NameRequiredDescriptionDefault
idsNoФильтр по id креативов.
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the content type of the returned entities, not pagination behavior, result size limits, or auth/scope requirements beyond the client_login param.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is appropriately sized, though extremely terse given the tool's filtering and pagination surface.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and full schema coverage of parameters, the essentials are present. However, for a paginated list tool without an output schema, the description says nothing about return shape, ordering, or pagination semantics, leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (ids, limit, offset, client_login) are already documented, including the login fallback chain. The description adds no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb+resource ('Возвращает список креативов') and clarifies the domain ('из библиотеки креативов') with examples of creative types (smart banners, HTML5). It is distinguishable from list_ads or get_ad_images, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_ad_images, get_ad_videos, or list_ads. The listing intent is implied only by the verb 'Возвращает список', leaving an agent to infer the use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dictionariesСправочникиA
Read-onlyIdempotent

Возвращает справочники Яндекс Директа (валюты, часовые пояса, константы, категории объявлений, …). GeoRegions может быть очень большим — для поиска регионов лучше get_regions.

NameRequiredDescriptionDefault
namesYesНазвания нужных справочников.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds behavior the annotations do not: one dictionary (GeoRegions) is very large, which warns the agent about payload size and the need to avoid it. It says nothing about client_login resolution behavior or response shape, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the capability statement comes first and the cautionary sibling reference second. Every clause carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only lookup with full schema coverage and annotations, the description supplies what an agent needs to choose and call it correctly. The only residual gap is that return structure is unaddressed and there is no output schema, though the enumerated dictionary kinds largely imply it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both names and client_login are documented in the schema itself, setting the baseline at 3. The description's enumeration of dictionary kinds loosely mirrors the enum values but adds no syntax, limits, or semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Возвращает справочники Яндекс Директа') and enumerates representative contents (валюты, часовые пояса, константы, категории объявлений), so the agent knows exactly what kind of data comes back. It also contrasts itself with a sibling, making it distinguishable without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing for one important case: GeoRegions can be huge, so use get_regions for region lookup instead. That is real when-not guidance. It stops short of stating the general when-to-use framing (e.g. fetch currency/timezone codes before creating campaigns), so it is not fully exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quotaКвота APIA
Read-onlyIdempotent

Возвращает сегодняшнюю квоту баллов API (потрачено / осталось / лимит) из заголовка Units — чтобы не упереться в дневной лимит.

NameRequiredDescriptionDefault
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: it discloses the data provenance (the Units response header) and the freshness scope (today's quota), which tells the agent this is a live per-day counter rather than a stored value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the returned payload (spent / remaining / limit) and then the motivation. No filler, nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return values and it does so by naming the three fields returned. It stops short of stating the return type or error behavior (e.g. what happens when the Units header is absent), which is a minor remaining gap for a zero-required-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the client_login parameter already documents the fallback chain (explicit login → YANDEX_DIRECT_LOGIN → token's own account) in full. The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns today's API point quota broken down as spent / remaining / limit. An agent can distinguish it from get_balance (money) and get_account_info by the 'баллов API' framing, though the description never names those siblings explicitly to reinforce the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trailing clause 'чтобы не упереться в дневной лимит' implies the tool should be consulted before heavy request bursts, which is useful implied usage. But there is no explicit when-to-use rule, no stated frequency, and no routing against the adjacent get_balance / get_account_info tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_regionsПоиск регионовA
Read-onlyIdempotent

Ищет id регионов для таргетинга (те самые regionIds, которые нужны create_ad_group). Фильтр — подстрока названия; количество результатов ограничено limit.

NameRequiredDescriptionDefault
limitNoМаксимум регионов в ответе. По умолчанию 50.
queryNoПодстрока названия региона без учёта регистра, например 'Москва' или 'Moscow'.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds matching semantics (substring) and that output volume is bounded by limit, but says nothing about empty-result behavior or that client_login falls back to config — that fallback lives only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the purpose and then the filtering constraint; nothing is filler. The parenthetical aside is slightly dense but earns its place by linking to create_ad_group.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with no output schema, the agent learns what comes back conceptually (region ids usable for targeting), how filtering works, and how many results to expect. Missing only whether names/other fields accompany the ids, which would help the agent format results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented in the schema, including the client_login fallback chain. The description merely restates substring filtering and the limit cap, adding no syntax or defaults beyond what the schema provides — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ищет id регионов') and goes further by naming the exact artifact it produces ('те самые regionIds') and the sibling that consumes it (create_ad_group). An agent can tell instantly that this is a lookup helper for targeting, not a campaign/dictionary dump.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the trigger condition well: use it to obtain regionIds before calling create_ad_group, filtered by name substring and capped by limit. No explicit 'when not to use' or pointer to an alternative (e.g. get_dictionaries), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statisticsСтатистикаA
Read-onlyIdempotent

Запрашивает отчёт по эффективности через сервис Reports Яндекс Директа. По умолчанию отчёт АГРЕГИРОВАН за весь период (одна строка на объект) — добавлять "Date" в fieldNames только для динамики по дням или вопросов о трендах. Почасовой статистики в Reports нет: минимум — сутки, внутридневную динамику дают только повторные снимки TODAY. Готового ROAS нет — считать Revenue / Cost; GoalsRoi — это ROI ((Revenue − Cost) / Cost), не ROAS. Revenue, Profit, GoalsRoi и конверсии заполняются только по целям Метрики с ценностью. ALL_TIME без фильтра по кампаниям отклоняется для отчётов SEARCH_QUERY/CRITERIA: нужно передать campaignIds или ограниченный период. SEARCH_QUERY_PERFORMANCE_REPORT возвращает не сырые строки, а ВЫЧИСЛЕННУЮ СВОДКУ (итоги по ВСЕМ строкам + детализация top-N + свёртка хвоста + количество строк без кликов и без конверсий); её форму задают sortBy/topN/minCost/queryContains/zeroClicksOnly/zeroConversionsOnly, а для подсчётов по конверсиям нужно добавить Conversions в fieldNames. Остальные типы отчётов возвращают строки, разделённые табуляцией (без заголовка).

NameRequiredDescriptionDefault
topNNoМаксимум строк детализации в сводке (на сервере ограничено 100). По умолчанию 50.
goalsNoId целей Яндекс Метрики (не более 10). Без них Conversions и Revenue считаются по всем целям кампании; с ними колонки приходят как <поле>_<idЦели>_<модель> (по одной на цель × модель). Для SEARCH_QUERY_PERFORMANCE_REPORT — только одна цель и одна модель.
orderNoПорядок сортировки строк детализации. По умолчанию desc.
dateToNoДата окончания YYYY-MM-DD (обязательна для CUSTOM_DATE).
sortByNoМетрика для ранжирования строк детализации. По умолчанию Cost.
filtersNoПроизвольные условия SelectionCriteria.Filter, складываются с campaignIds по И. Например Clicks GREATER_THAN 0 или Device EQUALS MOBILE.
minCostNoВключать в детализацию только строки с Cost >= этого значения.
dateFromNoДата начала YYYY-MM-DD (обязательна для CUSTOM_DATE).
fieldNamesNoКолонки отчёта (должны быть допустимы для его типа). Сверх базовых метрик: Conversions, ConversionRate, CostPerConversion, Revenue, Profit, GoalsRoi. Разрезы CUSTOM_REPORT: Date, Device, Age, Gender, LocationOfPresenceName, Placement, AdNetworkType, Slot и др.
includeVatNoВключать ли НДС в расход. По умолчанию true.
reportTypeNoТип отчёта. По умолчанию CAMPAIGN_PERFORMANCE_REPORT.
campaignIdsNoОграничить отчёт этими id кампаний.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
dateRangeTypeNoПредустановленный период. Если заданы dateFrom/dateTo, подставляется CUSTOM_DATE.
queryContainsNoВключать только строки, где запрос или условие содержит эту подстроку (без учёта регистра).
zeroClicksOnlyNoВключать в детализацию только строки с 0 кликов.
attributionModelsNoМодели атрибуции для конверсий. По умолчанию LC (последний переход).
zeroConversionsOnlyNoТолько строки с clicks>0 и 0 конверсий (нужно Conversions в fieldNames).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial non-obvious behavior: default output is one aggregated row per object, SEARCH_QUERY_PERFORMANCE_REPORT returns a computed summary (totals + top-N + tail rollup + zero-click/zero-conversion counts) shaped by sortBy/topN/minCost/queryContains, and all other reports return tab-separated rows without a header. Metric semantics (no ROAS; GoalsRoi is ROI, not ROAS; Revenue/Profit/GoalsRoi only populate for value-bearing Metrica goals) are exactly the kind of trap-disclosure annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and nearly every sentence carries information that is not in structured fields, with no filler. The block is dense and unstructured, though—warnings, metric semantics, and output formats run together without separators, making it harder to scan than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter, zero-required, no-output-schema tool, the description covers aggregation defaults, the REJECTION rule for ALL_TIME, the two distinct output shapes, and metric computation caveats. Remaining gaps (e.g. what the summary's tail-rollup row looks like, whether result size is bounded) are minor given the breadth already delivered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds cross-parameter semantics the schema does not: campaignIds is mandatory for ALL_TIME on SEARCH_QUERY/CRITERIA, Conversions must be in fieldNames for conversion-count use and zeroConversionsOnly, and Date is only for daily breakdowns. It stops short of explaining how filters combine with campaignIds or how attributionModels interacts with goals beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource (requests a performance report via the Yandex Direct Reports service) and immediately scopes it with the default aggregation behavior. It is clearly distinct from sibling account-structure readers like list_campaigns or get_quota, and the reportType enum in the schema reinforces the resource identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong conditional guidance: add "Date" to fieldNames only for daily dynamics, no hourly granularity exists (minimum is a day; intraday only via repeated TODAY snapshots), and ALL_TIME without campaignIds is rejected for SEARCH_QUERY/CRITERIA. It does not, however, name an alternative tool (e.g. raw_request) for cases this tool cannot serve, so routing versus siblings is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vcardsВизиткиA
Read-onlyIdempotent

Читает виртуальные визитки по id. API требует id — их можно взять из поля VCardId объявлений.

NameRequiredDescriptionDefault
idsYesId визиток (обязательны по требованию API).
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds the mandatory-id prerequisite and id source, but does not describe return shape or pagination behavior; with annotations carrying the safety profile, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and the key prerequisite. It does not waste space restating the title or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read tool with full schema coverage and rich annotations, the description covers the action, required id, and where to find ids. Missing explicit pagination or return-value notes are minor because the schema and annotations fill those gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so ids, limit, offset, and client_login are already documented in the schema. The description adds useful provenance for ids (VCardId from ads), but does not add meaning for the other parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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. This clearly separates it from sibling mutation tools such as create_vcard and delete_vcards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains that the API requires ids and tells the agent where to obtain them: the VCardId field of ads. It gives clear invocation context, though it does not explicitly state when not to use this tool or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keyword_actionДействие с ключевыми фразамиC
Destructive

Выполняет действие над ключевыми фразами по id: suspend, resume или delete.

NameRequiredDescriptionDefault
idsYesId ключевых фраз, к которым применить действие.
actionYes
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the action list: it does not say whether 'delete' is irreversible, whether 'suspend' can be undone via 'resume', what happens on a mixed batch of ids, or whether partial failures are reported. For a destructive batch operation, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the resource and action list front-loaded and no filler. It is efficiently written, though the brevity is partly the source of the gaps noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, non-idempotent batch mutation with no output schema, yet the description says nothing about the return value (affected counts, per-id errors), batch limits, or the irreversibility of delete. Given the tool's risk profile and three parameters, the description leaves out information an agent needs to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% – 'ids' and 'client_login' carry their own descriptions, but 'action' has only an enum. The description restates the enum values without explaining their semantics (what suspension does to a keyword vs deletion), so it adds only marginal meaning over the schema. Baseline 3 is appropriate given the moderate schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Выполняет действие над ключевыми фразами по id') and enumerates the three supported actions, so an agent knows exactly what the tool mutates. It does not name sibling tools (list_keywords, add_keywords, set_keyword_bids), so differentiation is implied by the resource name rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as set_keyword_bids (bids) or delete_ad_groups-style sibling mutations, and no stated prerequisites. The action enum hints at usage, but an agent must infer that this is the only path for suspend/resume/delete on keywords.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ad_groupsСписок групп объявленийA
Read-onlyIdempotent

Возвращает список групп объявлений. Нужно передать campaignIds и/или ids — API Яндекс Директа требует хотя бы один критерий отбора.

NameRequiredDescriptionDefault
idsNoФильтр по id групп объявлений.
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи (сколько объектов пропустить).
fieldNamesNoКакие поля группы вернуть.
campaignIdsNoФильтр по id кампаний.
autoPaginateNoЗабрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём).
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds the non-obvious API constraint that a filter is mandatory even though the schema lists zero required parameters. It omits pagination behavior and the cost of autoPaginate over large result sets, which keeps 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the hard filter constraint front-loaded immediately after the purpose statement. Nothing is repeated from the schema or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter paged listing tool with no output schema, the description never explains the return shape or how limit/offset/autoPaginate interact in practice, leaving the agent to infer pagination from schema field text. The mandatory-filter rule is well covered, but return-side completeness is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema. The description only reinforces the ids/campaignIds relationship (at-least-one semantics) and adds nothing about limit/offset/autoPaginate interplay beyond the schema text. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Возвращает список групп объявлений'), which lets an agent distinguish it from list_campaigns and list_ads by resource name alone. It does not explicitly name sibling alternatives, so it stops 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete precondition: campaignIds and/or ids must be supplied because the Yandex Direct API requires at least one selection criterion. That is real selection guidance, but there is no statement of when to prefer this over related listing tools or what happens with neither filter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_adsСписок объявленийB
Read-onlyIdempotent

Возвращает список объявлений с необязательными фильтрами по кампании, группе, id, состоянию и статусу.

NameRequiredDescriptionDefault
idsNoФильтр по id объявлений.
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи (сколько объектов пропустить).
statesNoФильтр по состояниям объявлений.
statusesNoФильтр по статусам модерации.
adGroupIdsNoФильтр по id групп объявлений.
fieldNamesNoКакие поля объявления вернуть.
campaignIdsNoФильтр по id кампаний.
autoPaginateNoЗабрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём).
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds only that filters are optional; it says nothing about result ordering, default page size, or what happens when no filters are supplied. That is acceptable but adds little 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of detail for a ten-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With ten optional parameters and no output schema, the description does not explain the shape of a returned ad, which fields come back when fieldNames is omitted, or how limit/offset interact with autoPaginate. The schema compensates for the input side, and annotations cover safety, but the response-side expectations are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all ten parameters are documented in the schema, including client_login's fallback chain and autoPaginate's LimitedBy behavior. The description merely names a subset of the filter dimensions and adds no defaults, formats, or interaction rules beyond what the schema already states, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 filter dimensions (campaign, group, id, state, status), so an agent knows exactly what it returns. It does not differentiate itself from siblings such as list_ad_groups or list_campaigns, which matters in a family where several list_* tools sit side by side.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to call this versus list_ad_groups, list_campaigns, or ad_action, and no guidance on when not to paginate manually versus using the autoPaginate parameter. The only implicit signal is the word "filters", which does not constitute usable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsСписок кампанийA
Read-onlyIdempotent

Возвращает список кампаний с необязательными фильтрами по id, типу, состоянию и статусу. Денежные поля (DailyBudget.Amount и Funds общего счёта — Sum, Balance, SumAvailableForTransfer, Spend) отдаются в валюте аккаунта.

NameRequiredDescriptionDefault
idsNoФильтр по id кампаний.
limitNoМаксимум объектов на страницу.
typesNoФильтр по типам кампаний.
offsetNoСмещение постраничной выдачи (сколько объектов пропустить).
statesNoФильтр по состояниям кампаний.
statusesNoФильтр по статусам модерации.
fieldNamesNoКакие поля кампании вернуть.
autoPaginateNoЗабрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём).
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, open-world, and non-destructive. The description adds useful non-annotation context: monetary fields such as DailyBudget.Amount and account funds values are returned in the account currency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted text, front-loading the main purpose and following with a relevant monetary-currency note that is not obvious from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with full schema coverage and no output schema, the description covers the core purpose and a non-obvious output detail. It lacks explicit pagination behavior and tool-alternative guidance, but those are either schema-covered or minor for this operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, offset, autoPaginate, fieldNames, and client_login. The description adds only a high-level mention of the filter dimensions and does not enrich parameter usage beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: returns a list of campaigns, with optional filters by id, type, state, and status. It distinguishes itself from mutating siblings like update_campaign or campaign_action by being explicitly a listing operation, though it does not name alternatives directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the listing purpose and optional filters, but the description gives no explicit when-to-use guidance, no exclusions, and no direction to alternative tools for related tasks such as account or balance retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_clientsКлиенты и кабинеты в управленииA
Read-onlyIdempotent

Перечисляет рекламодателей, с которыми может работать токен: клиентов агентства (AgencyClients.get) и кабинеты в управлении из YANDEX_DIRECT_CLIENTS. Логин из ответа передаётся в параметр client_login любого инструмента данных — так один сервер работает со всеми клиентами без перезапуска. accountType=agency — токен агентства: без client_login (и без YANDEX_DIRECT_LOGIN) инструменты видят собственный аккаунт агентства, где обычно нет кампаний. accountType=advertiser — обычный аккаунт: API не перечисляет кабинеты, где этот логин представитель, поэтому список есть только если его задали в YANDEX_DIRECT_CLIENTS. Архивные клиенты агентства по умолчанию скрыты. Сводка по всем клиентам сразу (баланс, кампании) — clients_overview.

NameRequiredDescriptionDefault
limitNoСколько клиентов вернуть, 1–1000. По умолчанию 200.
searchNoФильтр по подстроке логина или названия клиента, без учёта регистра.
includeArchivedNoПоказать и архивных клиентов агентства. По умолчанию — только активных.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered; the description adds real behavioral context beyond them — archived agency clients hidden by default, and tools falling back to the agency's own account without client_login. It does not describe pagination or the response shape, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the key handoff, then the account-type caveats and the alternative tool. Dense but each sentence carries meaning; slightly long for a three-optional-param list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a token-scoped client listing with a fully documented schema, the description covers the agency/advertiser split, default filtering of archived clients, the login handoff, and the alternative tool. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents limit, search, and includeArchived with defaults, so the description need not repeat them. It complements the schema by explaining the semantic meaning of the returned login (used as client_login in any data tool) rather than adding input-param detail, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Перечисляет) and resource (рекламодателей/клиентов агентства + кабинеты в управлении), and names the API source (AgencyClients.get, YANDEX_DIRECT_CLIENTS). It is clearly separable from clients_overview, which is explicitly described as the summary tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use context for both accountType=agency and accountType=advertiser, states why an advertiser may see an empty list, and routes the agent to clients_overview when a cross-client summary (balance, campaigns) is wanted instead. It also explains the downstream handoff of the returned login into client_login.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_keywordsСписок ключевых фразA
Read-onlyIdempotent

Возвращает список ключевых фраз с фильтром по кампании, группе объявлений или id. Bid и ContextBid отдаются в валюте аккаунта.

NameRequiredDescriptionDefault
idsNoФильтр по id ключевых фраз.
limitNoМаксимум объектов на страницу.
offsetNoСмещение постраничной выдачи (сколько объектов пропустить).
adGroupIdsNoФильтр по id групп объявлений.
fieldNamesNoКакие поля ключевой фразы вернуть.
campaignIdsNoФильтр по id кампаний.
autoPaginateNoЗабрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём).
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety behavior is covered. The description adds a useful output detail that Bid and ContextBid are returned in account currency, but it does not describe pagination behavior, return shape, or any other operational nuance beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no wasted wording. Purpose and main filtering capability are front-loaded, followed by a key output detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 optional parameters, full schema description coverage, and rich safety annotations, so the core definition is complete enough for invocation. The main gap is that there is no output schema and the description only briefly comments on return values (currency of Bid/ContextBid), but this is minor given the fully documented input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the 8 parameters is already documented in the schema. The description adds only a high-level mention of filtering by campaign, group, or id and does not add syntax or semantics for limit, offset, autoPaginate, fieldNames, or client_login beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 filter dimensions (campaign, ad group, id). This clearly distinguishes it from mutation siblings such as add_keywords or set_keyword_bids, though it does not explicitly name an alternative listing tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining that results can be filtered by campaign, ad group, or id, which gives useful context. However, it provides no explicit when-to-use guidance, no exclusions, and no comparison to sibling tools like list_campaigns or list_ad_groups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

logoutОтключить ДиректA
Destructive

Удаляет сохранённый токен Директа с диска. Токен, заданный переменной окружения YANDEX_DIRECT_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, but the description adds specific details: it only removes the saved token, leaves the env var token untouched, and does not revoke access on Yandex side. This is valuable context beyond the generic destructive flag and fully aligns with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, with the core action front-loaded in the first sentence and important caveats in the following ones. It is concise, well-structured, and avoids redundancy, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description covers all relevant aspects: what is deleted, what isn't, and what remains active. It is complete for an agent to understand the tool's behavior and side effects without needing further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the description does not need to explain parameter semantics. The empty schema is sufficient, and the description adds behavioral context but not parameter-specific information. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('deletes the saved Direct token from disk') and specifies the resource, distinguishing it from the environment-variable token. It also notes that access remains active on Yandex side, further clarifying scope. This is precise and distinguishable from other auth-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, but it does clarify what it does not do (env var token, revocation). It hints at an alternative (revoking via Yandex ID) but does not frame it as a tool choice or provide explicit when/when-not guidance. The purpose is clear, but usage guidance is minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raw_requestПрямой вызов API Яндекс ДиректаA
Destructive

Универсальный запрос: вызывает напрямую любой сервис или метод API Яндекс Директа v5 (например service "bidmodifiers", method "get"). Нужен для сервисов, у которых нет отдельного инструмента. Деньги — в микроединицах (без конвертации). Методы чтения (get/has/check) выполняются свободно; любой другой метод считается записью и требует confirmWrite=true.

NameRequiredDescriptionDefault
methodYesМетод API, например get, add, update, delete, set, toggle, checkCampaigns.
paramsNoОбъект params для метода — как есть.
serviceYesПуть сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
confirmWriteNoДолжен быть true для запуска метода записи (всё, кроме get/has/check).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true / readOnly=false / non-idempotent / open-world, so the safety bar is set; the description still adds real context beyond them: the method-name-based classification of reads vs writes and the confirmWrite gate that must be set. It omits error behaviour, rate limits, and what a failed/denied write returns, which matters for a destructive catch-all.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool is, then the routing rule, then the unit convention and write gate. No filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter escape hatch with a free-form nested params object and no output schema, the description covers purpose, routing, units, and the destructive-write gate, which is most of what an agent needs. The remaining gap is that the response shape and per-service params contract depend on external API knowledge the description does not acknowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuinely adds semantics: money values are in micro-units with no conversion, and confirmWrite is tied to the method classification rather than being a free flag. It does not explain that the params object shape is dictated by the target API method, which is the main usage risk.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (invokes any service/method directly) and resource (Yandex Direct API v5), with a worked example of service "bidmodifiers" + method "get". It also positions itself against the sibling tools by scope: it is the fallback for services that have no dedicated tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear routing rule (use it for services without a separate tool), which implicitly steers agents to the dedicated tools first, and it spells out the read-vs-write contract (get/has/check are free, everything else needs confirmWrite=true). What it does not do explicitly is forbid use when a dedicated sibling exists or name which services currently lack tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_bid_modifiersИзменить корректировки ставокA
Idempotent

Меняет процент существующих корректировок (bidmodifiers/set) по id корректировки. BidModifierSetItem принимает только Id и BidModifier; включить/выключить корректировку через API нельзя (метод bidmodifiers/toggle устарел и не поддерживается) — чтобы отключить корректировку, удалить её через delete_bid_modifiers.

NameRequiredDescriptionDefault
bidsYesВ каждом элементе нужны id и percent.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses a critical behavioral limitation: BidModifierSetItem accepts only Id and BidModifier, and the API cannot toggle enabled/disabled state. This is exactly the kind of constraint an agent needs before attempting a state change.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it starts with what the tool does, then immediately states the key limitation and the alternative. Every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description covers purpose, key constraint, deprecation note, and the correct alternative for disabling an adjustment. The schema already documents client_login and the percent field, so no important call-time context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3, but the description adds meaningful constraint by clarifying that the item only accepts Id and BidModifier/percent and no toggle flag. The terminology differs slightly from the schema's 'percent' property, but the added semantic restriction is useful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it changes the percentage of existing bid adjustments by adjustment id, and names the endpoint bidmodifiers/set. It also distinguishes the operation from toggling and deleting, so an agent can tell it apart from add_bid_modifier and delete_bid_modifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage boundaries: use this to change percent, cannot enable or disable an adjustment, and to disable one must use delete_bid_modifiers. It even notes that bidmodifiers/toggle is deprecated and unsupported, which directly routes the agent to the correct sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_keyword_bidsЗадать ставки ключевых фразA
Idempotent

Задаёт ручные ставки на поиске и в сетях для ключевых фраз либо для всех фраз указанных групп объявлений или кампаний (keywordbids/set). Ставки — в валюте аккаунта.

NameRequiredDescriptionDefault
bidsYesВ каждом элементе нужен один целевой id и хотя бы одно из полей bid/contextBid.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context that bids are manual, apply to search and networks, and are expressed in account currency, though it does not explain overwrite behavior or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, stating the core operation and scope in the first sentence and clarifying currency in the second. There is little waste, though it could be slightly sharper about the bulk-targeting mode.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With fully documented parameters and annotations covering mutability and idempotency, the description gives enough context to call the tool correctly. It does not describe return values or error cases, but there is no output schema and those gaps are not critical for this mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the bids array, target IDs, bid/contextBid fields, and client_login. The description reinforces that bids are in account currency and can target keywords, ad groups, or campaigns, but adds little beyond the schema's own field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: setting manual bids for keyword phrases, with scope covering individual keywords or all phrases in ad groups/campaigns, and mentions the endpoint keywordbids/set. This is sufficiently specific to distinguish it from sibling tools like add_keywords, list_keywords, and keyword_action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining that bids can be applied to individual keywords or to all phrases in specified ad groups/campaigns, but it does not explicitly say when to use this tool versus alternatives such as keyword_action or set_bid_modifiers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_loginНачать подключение ДиректаA
Read-onlyIdempotent

Первый шаг подключения Яндекс Директа без правки конфигурации и без перезапуска клиента. Возвращает ссылку на страницу Яндекс OAuth. Покажите ссылку пользователю целиком и попросите: открыть её в браузере под аккаунтом, у которого есть доступ к нужному рекламному кабинету, подтвердить доступ и прислать показанный код подтверждения. Полученный код передайте в finish_login. Код действует 10 минут. Сам по себе код бесполезен для постороннего: обменять его может только этот сервер.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, but the description adds meaningful behavioral detail: it returns a URL, the code is valid for 10 minutes, the code is useless to outsiders, and only this server can exchange it. This goes well beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat long but every sentence provides necessary guidance: the purpose, the returned OAuth link, user instructions, next step, expiration, and security note. It is front-loaded with the core purpose and remains efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and rich annotations, the description covers all needed context: what the tool returns, how to use that return value, the next tool to call, and important security/expiration details. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter documentation burden on the description. The baseline of 4 applies, and the description appropriately focuses on the tool's behavior and output rather than nonexistent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: it is the first step of connecting Yandex Direct and returns a Yandex OAuth link. This clearly distinguishes it from finish_login, which is mentioned as the follow-up step, and from auth_status/logout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly explains when to use it: as the first step of the Direct connection flow, and explicitly directs the agent to pass the received code to finish_login. It does not explicitly discuss exclusions or alternative tools, but the step-by-step context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ad_groupОбновить группу объявленийB
Idempotent

Обновляет название и/или регионы показа группы объявлений (adgroups/update).

NameRequiredDescriptionDefault
idYesId группы, которую нужно обновить.
nameNoНовое название группы.
regionIdsNoНовые id регионов показа.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
negativeKeywordsNoЗаменяет минус-фразы группы; пустой массив очищает их.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is largely covered. The description adds the useful partial-update signal 'и/или', but omits behaviours the annotations don't cover: that regionIds replaces the existing set and that an empty negativeKeywords array clears them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the verb and resource, with the endpoint appended for traceability. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no output schema needs a bit more: the description does not say what happens to fields left unspecified, nor note that at least one of name/regionIds/negativeKeywords should be supplied. Annotations and the complete schema carry most of the load, so this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description actively narrows the operation to two fields when the schema documents five, including negativeKeywords whose replace/clear semantics are important. An agent skimming the description could conclude negative keywords cannot be changed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Обновляет) plus the resource (группа объявлений) and even the API endpoint (adgroups/update), which clearly separates it from update_campaign or update_text_ad. However, it narrows the scope to 'название и/или регионы', omitting that the tool can also replace negative keywords.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this versus update_campaign, campaign_action or update_text_ad, and no mention of prerequisites such as needing an existing group id from list_ad_groups. Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaignОбновить кампаниюA
Idempotent

Обновляет название, дату окончания и/или дневной бюджет кампании (campaigns/update). API требует передавать режим бюджета (Mode) вместе с суммой, поэтому если dailyBudgetMode не задан, текущий режим кампании дочитывается через campaigns/get и сохраняется — смена суммы не меняет темп открутки.

NameRequiredDescriptionDefault
idYesId кампании, которую нужно обновить.
nameNoНовое название кампании.
endDateNoНовая дата окончания в формате YYYY-MM-DD.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.
dailyBudgetModeNoРежим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. Если не задан, сохраняется текущий режим кампании.
negativeKeywordsNoЗаменяет минус-фразы кампании; пустой массив очищает их.
dailyBudgetAmountNoДневной бюджет в валюте аккаунта.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotent, non-destructive, non-read-only behavior, yet the description adds a non-obvious hidden side effect: an implicit campaigns/get to fetch the current budget mode before writing, plus the guarantee that changing the amount does not alter delivery pacing. Money-affecting semantics and a hidden read call are exactly the kind of context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both load-bearing: the first identifies the operation, the second covers the tricky parameter interaction and its user-visible consequence. No filler, no restatement of the title, useful detail front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters fully documented in the schema, annotations covering the safety profile, and no output schema to explain, the description fills the only real gap — the budget-mode read-and-preserve behavior. An agent can invoke this correctly without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3; the description earns above that by explaining the coupling between dailyBudgetAmount and dailyBudgetMode (Mode must accompany the sum, otherwise the current one is re-read) — an interaction the per-field schema text does not make explicit. It says nothing about negativeKeywords being a full replacement, leaving that entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (updates campaign name, end date and/or daily budget) and even pins the underlying API method (campaigns/update), so the agent knows exactly what entity is being mutated. The enumeration reads as near-exhaustive yet omits negativeKeywords and client_login, which are real capabilities in the schema, so the scope is slightly under-stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one conditional usage rule (if dailyBudgetMode is absent, the current mode is read and preserved), which is genuinely useful. It never says when to pick this tool over sibling mutators like campaign_action or update_ad_group, nor does it state prerequisites such as needing id or an accessible client_login.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_text_adОбновить текстовое объявлениеA
Idempotent

Обновляет заголовок, текст или посадочную страницу текстового объявления (ads/update). Правка активного объявления отправляет его на повторную модерацию.

NameRequiredDescriptionDefault
idYesId объявления, которое нужно обновить.
hrefNoНовый URL посадочной страницы.
textNoНовый текст объявления, до 81 символа.
titleNoНовый заголовок (Title 1), до 56 символов.
title2NoНовый второй заголовок (Title 2), до 30 символов.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower; the description still adds the non-obvious side effect that editing an active ad sends it back to moderation. It does not clarify whether omitted fields are preserved (partial vs full update), which is the remaining behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, both load-bearing: the first identifies action and fields, the second delivers the moderation consequence. Nothing redundant and no buried information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Full schema plus annotations covering safety and idempotency mean the description only needed to add the moderation re-submission risk, which it does. The one gap is update semantics (whether unspecified fields are cleared or kept), which matters for an idempotent partial-update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including title2 limits and client_login fallback. The description adds no syntax, format, or fallback detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Обновляет') and resource ('текстового объявления'), and enumerates the editable fields (заголовок, текст, посадочная страница), so it's clearly distinguishable from create_text_ad. It doesn't mention ad_action or otherwise position itself against siblings, which keeps it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what is updated but never states when to use this versus ad_action or update_ad_group, nor any prerequisites (e.g. ad must belong to the token's client). The only contextual hint is the moderation note, which is behavioral rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_ad_imageЗагрузить изображениеA

Загружает изображение в библиотеку изображений (adimages/add) и возвращает его AdImageHash — этот хеш подставляется в поле AdImageHash текстово-графического объявления. Изображение передаётся публичным URL (сервер сам скачает и закодирует) или в base64 через imageData. Яндекс принимает JPG/PNG/GIF до 10 МБ; текстово-графическому объявлению нужна горизонтальная картинка (минимум 1080×607).

NameRequiredDescriptionDefault
urlNoПубличный URL изображения; сервер скачает его и закодирует в base64. Нужно передать это поле или imageData.
nameYesНазвание изображения в библиотеке.
imageDataNoБайты изображения в base64 (префикс data:-URL отбрасывается). Нужно передать это поле или url.
client_loginNoЛогин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover non-read-only, open-world, non-idempotent, and non-destructive behavior. The description adds useful operational details: the server downloads and encodes the URL, accepted formats and size limit, and the horizontal image requirement for text-graphic ads.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it first states the upload action and returned hash, then gives the supported input methods and image constraints. Every sentence contributes necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an upload tool with annotations and a fully described schema, the description is nearly complete: it explains the return value, input alternatives, and image requirements. Minor gaps remain around overwrite behavior and error handling, but these are not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented. The description reinforces the URL-vs-imageData choice and adds relevant image constraints, but does not significantly elaborate beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific action (uploading an image to the ad image library via adimages/add), the result (AdImageHash), and how that result is used in a text-graphic ad. This clearly distinguishes it from sibling read tools such as get_ad_images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the primary use case: obtaining an AdImageHash for a text-graphic ad, with the image supplied either by public URL or base64. It gives clear context and constraints, though it does not explicitly mention alternatives such as listing existing images with get_ad_images.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.5.2
    • Changedget_statistics6 fields changed
      • addedInput schema / properties / attributionModels
        Added value: +{
        +  "description": "Модели атрибуции для конверсий. По умолчанию LC (последний переход).",
        +  "items": {
        +    "enum": [
        +      "FCCD",
        +      "LC",
        +      "LSCCD",
        +      "AUTO"
        +    ],
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / dateRangeType / enum
        Previous value: -[
        -  "TODAY",
        -  "YESTERDAY",
        -  "LAST_7_DAYS",
        -  "LAST_30_DAYS",
        -  "THIS_MONTH",
        -  "LAST_MONTH",
        -  "ALL_TIME",
        -  "CUSTOM_DATE"
        -]New value: +[
        +  "TODAY",
        +  "YESTERDAY",
        +  "LAST_3_DAYS",
        +  "LAST_5_DAYS",
        +  "LAST_7_DAYS",
        +  "LAST_14_DAYS",
        +  "LAST_30_DAYS",
        +  "LAST_90_DAYS",
        +  "LAST_365_DAYS",
        +  "THIS_WEEK_MON_TODAY",
        +  "THIS_WEEK_SUN_TODAY",
        +  "LAST_WEEK",
        +  "LAST_BUSINESS_WEEK",
        +  "LAST_WEEK_SUN_SAT",
        +  "THIS_MONTH",
        +  "LAST_MONTH",
        +  "ALL_TIME",
        +  "CUSTOM_DATE",
        +  "AUTO"
        +]
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Колонки отчёта (должны быть допустимы для его типа)."New value: +"Колонки отчёта (должны быть допустимы для его типа). Сверх базовых метрик: Conversions, ConversionRate, CostPerConversion, Revenue, Profit, GoalsRoi. Разрезы CUSTOM_REPORT: Date, Device, Age, Gender, LocationOfPresenceName, Placement, AdNetworkType, Slot и др."
      • addedInput schema / properties / filters
        Added value: +{
        +  "description": "Произвольные условия SelectionCriteria.Filter, складываются с campaignIds по И. Например Clicks GREATER_THAN 0 или Device EQUALS MOBILE.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "field": {
        +        "description": "Поле для фильтрации (должно быть допустимо для типа отчёта).",
        +        "type": "string"
        +      },
        +      "operator": {
        +        "description": "Оператор сравнения.",
        +        "enum": [
        +          "EQUALS",
        +          "NOT_EQUALS",
        +          "IN",
        +          "NOT_IN",
        +          "LESS_THAN",
        +          "GREATER_THAN",
        +          "STARTS_WITH_IGNORE_CASE",
        +          "DOES_NOT_START_WITH_IGNORE_CASE",
        +          "STARTS_WITH_ANY_IGNORE_CASE",
        +          "DOES_NOT_START_WITH_ALL_IGNORE_CASE"
        +        ],
        +        "type": "string"
        +      },
        +      "values": {
        +        "description": "Значения; числа передавать строками, деньги — в валюте аккаунта.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "field",
        +      "operator",
        +      "values"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / goals
        Added value: +{
        +  "description": "Id целей Яндекс Метрики (не более 10). Без них Conversions и Revenue считаются по всем целям кампании; с ними колонки приходят как <поле>_<idЦели>_<модель> (по одной на цель × модель). Для SEARCH_QUERY_PERFORMANCE_REPORT — только одна цель и одна модель.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / reportType / enum
        Previous value: -[
        -  "ACCOUNT_PERFORMANCE_REPORT",
        -  "CAMPAIGN_PERFORMANCE_REPORT",
        -  "ADGROUP_PERFORMANCE_REPORT",
        -  "AD_PERFORMANCE_REPORT",
        -  "CRITERIA_PERFORMANCE_REPORT",
        -  "SEARCH_QUERY_PERFORMANCE_REPORT"
        -]New value: +[
        +  "ACCOUNT_PERFORMANCE_REPORT",
        +  "CAMPAIGN_PERFORMANCE_REPORT",
        +  "ADGROUP_PERFORMANCE_REPORT",
        +  "AD_PERFORMANCE_REPORT",
        +  "CRITERIA_PERFORMANCE_REPORT",
        +  "SEARCH_QUERY_PERFORMANCE_REPORT",
        +  "CUSTOM_REPORT"
        +]
  2. 42 tool updatesv1.6.0
    • Changedad_action1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedadd_bid_modifier1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedadd_callouts1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedadd_keywords1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedcampaign_action1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Addedclients_overview
    • Changedcreate_ad_group1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedcreate_sitelinks_set1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedcreate_text_ad1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedcreate_text_campaign1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedcreate_vcard1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changeddelete_ad_groups1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changeddelete_bid_modifiers1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changeddelete_callouts1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changeddelete_sitelinks1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changeddelete_vcards1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_account_info1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_ad_images1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_ad_videos1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_balance1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_bid_modifiers1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_callouts1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_creatives1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_dictionaries1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_quota2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_regions1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_sitelinks1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_statistics1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedget_vcards1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedkeyword_action1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedlist_ad_groups1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedlist_ads1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedlist_campaigns1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Addedlist_clients
    • Changedlist_keywords1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedraw_request1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedset_bid_modifiers1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedset_keyword_bids1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedupdate_ad_group1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedupdate_campaign1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedupdate_text_ad1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
    • Changedupload_ad_image1 field changed
      • addedInput schema / properties / client_login
        Added value: +{
        +  "description": "Логин клиента агентства или кабинета в управлении (из list_clients). Если не указан — YANDEX_DIRECT_LOGIN из конфигурации, а без него собственный аккаунт токена.",
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._@-]{0,99}$",
        +  "type": "string"
        +}
  3. 43 tool updatesv1.5.1
    • Changedad_action1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Ad ids to act on."New value: +"Id объявлений, к которым применить действие."
    • Changedadd_bid_modifier9 fields changed
      • changedInput schema / properties / adGroupId / description
        Previous value: -"Target ad group id (use this OR campaignId)."New value: +"Id группы объявлений (либо это поле, либо campaignId)."
      • changedInput schema / properties / campaignId / description
        Previous value: -"Target campaign id (use this OR adGroupId)."New value: +"Id кампании (либо это поле, либо adGroupId)."
      • changedInput schema / properties / demographics / description
        Previous value: -"Demographic bid adjustments."New value: +"Корректировки по демографии."
      • changedInput schema / properties / desktop / description
        Previous value: -"Desktop bid adjustment."New value: +"Корректировка для десктопа."
      • changedInput schema / properties / mobile / description
        Previous value: -"Mobile bid adjustment."New value: +"Корректировка для мобильных."
      • changedInput schema / properties / mobile / properties / os / description
        Previous value: -"Limit to IOS or ANDROID."New value: +"Ограничить IOS или ANDROID."
      • changedInput schema / properties / mobile / properties / percent / description
        Previous value: -"Adjustment percent."New value: +"Процент корректировки."
      • changedInput schema / properties / regional / description
        Previous value: -"Regional bid adjustments."New value: +"Корректировки по регионам."
      • changedInput schema / properties / retargeting / description
        Previous value: -"Retargeting bid adjustments."New value: +"Корректировки по ретаргетингу."
    • Changedadd_callouts1 field changed
      • changedInput schema / properties / texts / description
        Previous value: -"Callout texts, up to 25 characters each."New value: +"Тексты уточнений, до 25 символов каждый."
    • Changedadd_keywords5 fields changed
      • changedInput schema / properties / adGroupId / description
        Previous value: -"Target ad group id."New value: +"Id группы объявлений."
      • changedInput schema / properties / keywords / description
        Previous value: -"Keywords to add."New value: +"Ключевые фразы для добавления."
      • changedInput schema / properties / keywords / items / properties / bid / description
        Previous value: -"Search bid in currency units."New value: +"Ставка на поиске в валюте аккаунта."
      • changedInput schema / properties / keywords / items / properties / contextBid / description
        Previous value: -"Network bid in currency units."New value: +"Ставка в сетях в валюте аккаунта."
      • changedInput schema / properties / keywords / items / properties / keyword / description
        Previous value: -"Keyword phrase, with operators if needed."New value: +"Ключевая фраза, при необходимости с операторами."
    • Addedauth_status
    • Changedcampaign_action1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Campaign ids to act on."New value: +"Id кампаний, к которым применить действие."
    • Changedcreate_ad_group3 fields changed
      • changedInput schema / properties / campaignId / description
        Previous value: -"Parent campaign id."New value: +"Id родительской кампании."
      • changedInput schema / properties / name / description
        Previous value: -"Ad group name."New value: +"Название группы объявлений."
      • changedInput schema / properties / regionIds / description
        Previous value: -"Target geo region ids, e.g. [225] for Russia."New value: +"Id регионов показа, например [225] — Россия."
    • Changedcreate_sitelinks_set4 fields changed
      • changedInput schema / properties / sitelinks / description
        Previous value: -"1–8 sitelinks."New value: +"От 1 до 8 быстрых ссылок."
      • changedInput schema / properties / sitelinks / items / properties / description / description
        Previous value: -"Sitelink description (for some ad types)."New value: +"Описание быстрой ссылки (для некоторых типов объявлений)."
      • changedInput schema / properties / sitelinks / items / properties / href / description
        Previous value: -"Sitelink URL."New value: +"URL быстрой ссылки."
      • changedInput schema / properties / sitelinks / items / properties / title / description
        Previous value: -"Sitelink title."New value: +"Текст быстрой ссылки."
    • Changedcreate_text_ad9 fields changed
      • changedInput schema / properties / adGroupId / description
        Previous value: -"Parent ad group id."New value: +"Id родительской группы объявлений."
      • changedInput schema / properties / href / description
        Previous value: -"Landing page URL."New value: +"URL посадочной страницы (обязателен для TextAdAdd)."
      • addedInput schema / properties / href / minLength
        Added value: +1
      • addedInput schema / properties / mobile / default
        Added value: +false
      • changedInput schema / properties / mobile / description
        Previous value: -"Whether this is a mobile ad."New value: +"Мобильное ли это объявление. Поле в API устарело (значение принудительно NO), но остаётся обязательным."
      • changedInput schema / properties / text / description
        Previous value: -"Ad body text, up to 81 characters."New value: +"Текст объявления, до 81 символа."
      • changedInput schema / properties / title / description
        Previous value: -"Title (Title 1), up to 56 characters."New value: +"Заголовок (Title 1), до 56 символов."
      • changedInput schema / properties / title2 / description
        Previous value: -"Second title (Title 2), up to 30 characters."New value: +"Второй заголовок (Title 2), до 30 символов."
      • changedInput schema / required
        Previous value: -[
        -  "adGroupId",
        -  "title",
        -  "text"
        -]New value: +[
        +  "adGroupId",
        +  "title",
        +  "text",
        +  "href"
        +]
    • Changedcreate_text_campaign6 fields changed
      • changedInput schema / properties / biddingStrategy / description
        Previous value: -"Full BiddingStrategy object {Search, Network}. Overrides the default."New value: +"Полный объект BiddingStrategy {Search, Network}. Заменяет значение по умолчанию."
      • changedInput schema / properties / dailyBudgetAmount / description
        Previous value: -"Daily budget in account currency units (converted to micros)."New value: +"Дневной бюджет в валюте аккаунта (конвертируется в микроединицы)."
      • addedInput schema / properties / dailyBudgetMode / description
        Added value: +"Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. По умолчанию STANDARD."
      • changedInput schema / properties / endDate / description
        Previous value: -"End date, format YYYY-MM-DD."New value: +"Дата окончания в формате YYYY-MM-DD."
      • changedInput schema / properties / name / description
        Previous value: -"Campaign name."New value: +"Название кампании."
      • changedInput schema / properties / startDate / description
        Previous value: -"Start date, format YYYY-MM-DD."New value: +"Дата начала в формате YYYY-MM-DD."
    • Changedcreate_vcard12 fields changed
      • changedInput schema / properties / campaignId / description
        Previous value: -"Campaign the vCard belongs to."New value: +"Кампания, к которой относится визитка."
      • changedInput schema / properties / city / description
        Previous value: -"City, e.g. Москва."New value: +"Город, например Москва."
      • changedInput schema / properties / companyName / description
        Previous value: -"Company name."New value: +"Название организации."
      • changedInput schema / properties / country / description
        Previous value: -"Country, e.g. Россия."New value: +"Страна, например Россия."
      • changedInput schema / properties / extraMessage / description
        Previous value: -"Additional info shown on the card."New value: +"Дополнительная информация на визитке."
      • changedInput schema / properties / ogrn / description
        Previous value: -"OGRN registration number."New value: +"ОГРН."
      • changedInput schema / properties / phone / description
        Previous value: -"Contact phone."New value: +"Контактный телефон."
      • changedInput schema / properties / phone / properties / cityCode / description
        Previous value: -"City/operator code, e.g. \"495\"."New value: +"Код города или оператора, например \"495\"."
      • changedInput schema / properties / phone / properties / countryCode / description
        Previous value: -"Country code, e.g. \"+7\"."New value: +"Код страны, например \"+7\"."
      • changedInput schema / properties / phone / properties / extension / description
        Previous value: -"Extension, if any."New value: +"Добавочный номер, если есть."
      • changedInput schema / properties / phone / properties / phoneNumber / description
        Previous value: -"Local number."New value: +"Местный номер."
      • changedInput schema / properties / workTime / description
        Previous value: -"Work time in API format, e.g. \"1#5#9#00#18#00\" = Mon–Fri 09:00–18:00."New value: +"Время работы в формате API, например \"1#5#9#00#18#00\" — пн–пт 09:00–18:00."
    • Changeddelete_ad_groups1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Ad group ids to delete."New value: +"Id групп, которые нужно удалить."
    • Changeddelete_bid_modifiers1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Bid modifier ids to delete."New value: +"Id корректировок, которые нужно удалить."
    • Changeddelete_callouts1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Callout ids to delete."New value: +"Id уточнений, которые нужно удалить."
    • Changeddelete_sitelinks1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Sitelink set ids to delete."New value: +"Id наборов, которые нужно удалить."
    • Changeddelete_vcards1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"vCard ids to delete."New value: +"Id визиток, которые нужно удалить."
    • Addedfinish_login
    • Changedget_account_info1 field changed
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Client fields to return. Defaults to a common set."New value: +"Какие поля клиента вернуть. По умолчанию — типовой набор."
    • Changedget_ad_images3 fields changed
      • changedInput schema / properties / hashes / description
        Previous value: -"Filter by image hashes."New value: +"Фильтр по хешам изображений."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedget_ad_videos3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"Video ids (required by the API)."New value: +"Id видео (обязательны по требованию API)."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedget_balance1 field changed
      • changedInput schema / properties / logins / description
        Previous value: -"Account logins to fetch. Defaults to the token's own account."New value: +"Логины аккаунтов, по которым нужны данные. По умолчанию — собственный аккаунт токена."
    • Changedget_bid_modifiers5 fields changed
      • changedInput schema / properties / adGroupIds / description
        Previous value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний."
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by bid modifier ids."New value: +"Фильтр по id корректировок."
      • changedInput schema / properties / levels / description
        Previous value: -"Levels to read. Defaults to both CAMPAIGN and AD_GROUP."New value: +"Уровни, на которых читать. По умолчанию оба: CAMPAIGN и AD_GROUP."
      • changedInput schema / properties / types / description
        Previous value: -"Filter by adjustment types."New value: +"Фильтр по типам корректировок."
    • Changedget_callouts3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by callout ids."New value: +"Фильтр по id уточнений."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedget_creatives3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by creative ids."New value: +"Фильтр по id креативов."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedget_dictionaries1 field changed
      • changedInput schema / properties / names / description
        Previous value: -"Dictionary names to fetch."New value: +"Названия нужных справочников."
    • Changedget_regions2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max regions to return. Default 50."New value: +"Максимум регионов в ответе. По умолчанию 50."
      • changedInput schema / properties / query / description
        Previous value: -"Case-insensitive substring of the region name, e.g. 'Москва' or 'Moscow'."New value: +"Подстрока названия региона без учёта регистра, например 'Москва' или 'Moscow'."
    • Changedget_sitelinks3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"Sitelink set ids (required by the API)."New value: +"Id наборов быстрых ссылок (обязательны по требованию API)."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedget_statistics14 fields changed
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Limit the report to these campaign ids."New value: +"Ограничить отчёт этими id кампаний."
      • changedInput schema / properties / dateFrom / description
        Previous value: -"Start date YYYY-MM-DD (required for CUSTOM_DATE)."New value: +"Дата начала YYYY-MM-DD (обязательна для CUSTOM_DATE)."
      • changedInput schema / properties / dateRangeType / description
        Previous value: -"Predefined date range. Inferred as CUSTOM_DATE when dateFrom/dateTo are given."New value: +"Предустановленный период. Если заданы dateFrom/dateTo, подставляется CUSTOM_DATE."
      • changedInput schema / properties / dateTo / description
        Previous value: -"End date YYYY-MM-DD (required for CUSTOM_DATE)."New value: +"Дата окончания YYYY-MM-DD (обязательна для CUSTOM_DATE)."
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Report columns (must be valid for the report type)."New value: +"Колонки отчёта (должны быть допустимы для его типа)."
      • changedInput schema / properties / includeVat / description
        Previous value: -"Whether costs include VAT. Default true."New value: +"Включать ли НДС в расход. По умолчанию true."
      • changedInput schema / properties / minCost / description
        Previous value: -"Only include rows with Cost >= this in the detail list."New value: +"Включать в детализацию только строки с Cost >= этого значения."
      • changedInput schema / properties / order / description
        Previous value: -"Sort order for detail rows. Default desc."New value: +"Порядок сортировки строк детализации. По умолчанию desc."
      • changedInput schema / properties / queryContains / description
        Previous value: -"Only include rows whose query/criterion contains this substring (case-insensitive)."New value: +"Включать только строки, где запрос или условие содержит эту подстроку (без учёта регистра)."
      • changedInput schema / properties / reportType / description
        Previous value: -"Report type. Default CAMPAIGN_PERFORMANCE_REPORT."New value: +"Тип отчёта. По умолчанию CAMPAIGN_PERFORMANCE_REPORT."
      • changedInput schema / properties / sortBy / description
        Previous value: -"Metric to rank the detail rows by. Default Cost."New value: +"Метрика для ранжирования строк детализации. По умолчанию Cost."
      • changedInput schema / properties / topN / description
        Previous value: -"Max detail rows in the summary (server-capped at 100). Default 50."New value: +"Максимум строк детализации в сводке (на сервере ограничено 100). По умолчанию 50."
      • changedInput schema / properties / zeroClicksOnly / description
        Previous value: -"Only include rows with 0 clicks in the detail list."New value: +"Включать в детализацию только строки с 0 кликов."
      • changedInput schema / properties / zeroConversionsOnly / description
        Previous value: -"Only rows with clicks>0 and 0 conversions (needs Conversions in fieldNames)."New value: +"Только строки с clicks>0 и 0 конверсий (нужно Conversions в fieldNames)."
    • Changedget_vcards3 fields changed
      • changedInput schema / properties / ids / description
        Previous value: -"vCard ids (required by the API)."New value: +"Id визиток (обязательны по требованию API)."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset."New value: +"Смещение постраничной выдачи."
    • Changedkeyword_action1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Keyword ids to act on."New value: +"Id ключевых фраз, к которым применить действие."
    • Changedlist_ad_groups6 fields changed
      • changedInput schema / properties / autoPaginate / description
        Previous value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний."
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Ad group fields to return."New value: +"Какие поля группы вернуть."
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
    • Changedlist_ads9 fields changed
      • changedInput schema / properties / adGroupIds / description
        Previous value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений."
      • changedInput schema / properties / autoPaginate / description
        Previous value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний."
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Ad fields to return."New value: +"Какие поля объявления вернуть."
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by ad ids."New value: +"Фильтр по id объявлений."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
      • changedInput schema / properties / states / description
        Previous value: -"Filter by ad states."New value: +"Фильтр по состояниям объявлений."
      • changedInput schema / properties / statuses / description
        Previous value: -"Filter by moderation statuses."New value: +"Фильтр по статусам модерации."
    • Changedlist_campaigns8 fields changed
      • changedInput schema / properties / autoPaginate / description
        Previous value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)."
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Campaign fields to return."New value: +"Какие поля кампании вернуть."
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
      • changedInput schema / properties / states / description
        Previous value: -"Filter by campaign states."New value: +"Фильтр по состояниям кампаний."
      • changedInput schema / properties / statuses / description
        Previous value: -"Filter by moderation statuses."New value: +"Фильтр по статусам модерации."
      • changedInput schema / properties / types / description
        Previous value: -"Filter by campaign types."New value: +"Фильтр по типам кампаний."
    • Changedlist_keywords7 fields changed
      • changedInput schema / properties / adGroupIds / description
        Previous value: -"Filter by ad group ids."New value: +"Фильтр по id групп объявлений."
      • changedInput schema / properties / autoPaginate / description
        Previous value: -"Fetch all pages by following LimitedBy (ignores limit as a total cap)."New value: +"Забрать все страницы, идя по LimitedBy (limit тогда не ограничивает общий объём)."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Filter by campaign ids."New value: +"Фильтр по id кампаний."
      • changedInput schema / properties / fieldNames / description
        Previous value: -"Keyword fields to return."New value: +"Какие поля ключевой фразы вернуть."
      • changedInput schema / properties / ids / description
        Previous value: -"Filter by keyword ids."New value: +"Фильтр по id ключевых фраз."
      • changedInput schema / properties / limit / description
        Previous value: -"Max objects per page."New value: +"Максимум объектов на страницу."
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset (objects to skip)."New value: +"Смещение постраничной выдачи (сколько объектов пропустить)."
    • Addedlogout
    • Changedraw_request4 fields changed
      • changedInput schema / properties / confirmWrite / description
        Previous value: -"Must be true to run a write method (anything other than get/has/check)."New value: +"Должен быть true для запуска метода записи (всё, кроме get/has/check)."
      • changedInput schema / properties / method / description
        Previous value: -"API method, e.g. get, add, update, delete, set, toggle, checkCampaigns."New value: +"Метод API, например get, add, update, delete, set, toggle, checkCampaigns."
      • changedInput schema / properties / params / description
        Previous value: -"Raw params object for the method."New value: +"Объект params для метода — как есть."
      • changedInput schema / properties / service / description
        Previous value: -"Lowercase service path, e.g. campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch."New value: +"Путь сервиса строчными буквами, например campaigns, bidmodifiers, sitelinks, vcards, changes, keywordsresearch."
    • Changedset_bid_modifiers5 fields changed
      • changedInput schema / properties / bids / description
        Previous value: -"Each item needs an id and at least one of percent/enabled."New value: +"В каждом элементе нужны id и percent."
      • removedInput schema / properties / bids / items / properties / enabled
        Removed value: -{
        -  "description": "Enable or disable the adjustment.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / bids / items / properties / id / description
        Previous value: -"Bid modifier id."New value: +"Id корректировки."
      • changedInput schema / properties / bids / items / properties / percent / description
        Previous value: -"New adjustment percent."New value: +"Новый процент корректировки."
      • changedInput schema / properties / bids / items / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "percent"
        +]
    • Changedset_keyword_bids6 fields changed
      • changedInput schema / properties / bids / description
        Previous value: -"Each item needs one target id and at least one of bid/contextBid."New value: +"В каждом элементе нужен один целевой id и хотя бы одно из полей bid/contextBid."
      • changedInput schema / properties / bids / items / properties / adGroupId / description
        Previous value: -"Target all keywords in an ad group."New value: +"Применить ко всем фразам группы объявлений."
      • changedInput schema / properties / bids / items / properties / bid / description
        Previous value: -"Search bid in currency units."New value: +"Ставка на поиске в валюте аккаунта."
      • changedInput schema / properties / bids / items / properties / campaignId / description
        Previous value: -"Target all keywords in a campaign."New value: +"Применить ко всем фразам кампании."
      • changedInput schema / properties / bids / items / properties / contextBid / description
        Previous value: -"Network bid in currency units."New value: +"Ставка в сетях в валюте аккаунта."
      • changedInput schema / properties / bids / items / properties / keywordId / description
        Previous value: -"Target a single keyword."New value: +"Применить к одной ключевой фразе."
    • Addedstart_login
    • Changedupdate_ad_group4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Ad group id to update."New value: +"Id группы, которую нужно обновить."
      • changedInput schema / properties / name / description
        Previous value: -"New ad group name."New value: +"Новое название группы."
      • changedInput schema / properties / negativeKeywords / description
        Previous value: -"Replace the ad group's negative keywords; pass an empty array to clear them."New value: +"Заменяет минус-фразы группы; пустой массив очищает их."
      • changedInput schema / properties / regionIds / description
        Previous value: -"New target geo region ids."New value: +"Новые id регионов показа."
    • Changedupdate_campaign6 fields changed
      • changedInput schema / properties / dailyBudgetAmount / description
        Previous value: -"Daily budget in account currency units."New value: +"Дневной бюджет в валюте аккаунта."
      • addedInput schema / properties / dailyBudgetMode / description
        Added value: +"Режим траты дневного бюджета: STANDARD — показы как можно быстрее, DISTRIBUTED — равномерно в течение дня. Если не задан, сохраняется текущий режим кампании."
      • changedInput schema / properties / endDate / description
        Previous value: -"New end date, format YYYY-MM-DD."New value: +"Новая дата окончания в формате YYYY-MM-DD."
      • changedInput schema / properties / id / description
        Previous value: -"Campaign id to update."New value: +"Id кампании, которую нужно обновить."
      • changedInput schema / properties / name / description
        Previous value: -"New campaign name."New value: +"Новое название кампании."
      • changedInput schema / properties / negativeKeywords / description
        Previous value: -"Replace the campaign's negative keywords; pass an empty array to clear them."New value: +"Заменяет минус-фразы кампании; пустой массив очищает их."
    • Changedupdate_text_ad5 fields changed
      • changedInput schema / properties / href / description
        Previous value: -"New landing page URL."New value: +"Новый URL посадочной страницы."
      • changedInput schema / properties / id / description
        Previous value: -"Ad id to update."New value: +"Id объявления, которое нужно обновить."
      • changedInput schema / properties / text / description
        Previous value: -"New body text, up to 81 characters."New value: +"Новый текст объявления, до 81 символа."
      • changedInput schema / properties / title / description
        Previous value: -"New Title (Title 1), up to 56 characters."New value: +"Новый заголовок (Title 1), до 56 символов."
      • changedInput schema / properties / title2 / description
        Previous value: -"New second title (Title 2), up to 30 characters."New value: +"Новый второй заголовок (Title 2), до 30 символов."
    • Changedupload_ad_image3 fields changed
      • changedInput schema / properties / imageData / description
        Previous value: -"Base64-encoded image bytes (a data: URL prefix is stripped). Provide this or url."New value: +"Байты изображения в base64 (префикс data:-URL отбрасывается). Нужно передать это поле или url."
      • changedInput schema / properties / name / description
        Previous value: -"Image name shown in the library."New value: +"Название изображения в библиотеке."
      • changedInput schema / properties / url / description
        Previous value: -"Public image URL; fetched and base64-encoded server-side. Provide this or imageData."New value: +"Публичный URL изображения; сервер скачает его и закодирует в base64. Нужно передать это поле или imageData."
  4. 9 tool updatesv0.1.1
    • Changedget_ad_images1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Changedget_ad_videos1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Addedget_balance
    • Changedget_callouts1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Changedget_creatives1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Changedget_sitelinks1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Changedget_statistics3 fields changed
      • removedInput schema / properties / dateTo / $ref
        Removed value: -"#/properties/dateFrom"
      • addedInput schema / properties / dateTo / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / dateTo / type
        Added value: +"string"
    • Changedget_vcards1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -10000New value: +1000
    • Changedlist_campaigns1 field changed
      • changedInput schema / properties / types / items / enum
        Previous value: -[
        -  "TEXT_CAMPAIGN",
        -  "MOBILE_APP_CAMPAIGN",
        -  "DYNAMIC_TEXT_CAMPAIGN",
        -  "CPM_BANNER_CAMPAIGN",
        -  "SMART_CAMPAIGN",
        -  "MCBANNER_CAMPAIGN"
        -]New value: +[
        +  "TEXT_CAMPAIGN",
        +  "MOBILE_APP_CAMPAIGN",
        +  "DYNAMIC_TEXT_CAMPAIGN",
        +  "CPM_BANNER_CAMPAIGN",
        +  "SMART_CAMPAIGN",
        +  "MCBANNER_CAMPAIGN",
        +  "UNIFIED_CAMPAIGN"
        +]
  5. 39 tool updatesv0.1.0
    • First observedad_action
    • First observedadd_bid_modifier
    • First observedadd_callouts
    • First observedadd_keywords
    • First observedcampaign_action
    • First observedcreate_ad_group
    • First observedcreate_sitelinks_set
    • First observedcreate_text_ad
    • First observedcreate_text_campaign
    • First observedcreate_vcard
    • First observeddelete_ad_groups
    • First observeddelete_bid_modifiers
    • First observeddelete_callouts
    • First observeddelete_sitelinks
    • First observeddelete_vcards
    • First observedget_account_info
    • First observedget_ad_images
    • First observedget_ad_videos
    • First observedget_bid_modifiers
    • First observedget_callouts
    • First observedget_creatives
    • First observedget_dictionaries
    • First observedget_quota
    • First observedget_regions
    • First observedget_sitelinks
    • First observedget_statistics
    • First observedget_vcards
    • First observedkeyword_action
    • First observedlist_ad_groups
    • First observedlist_ads
    • First observedlist_campaigns
    • First observedlist_keywords
    • First observedraw_request
    • First observedset_bid_modifiers
    • First observedset_keyword_bids
    • First observedupdate_ad_group
    • First observedupdate_campaign
    • First observedupdate_text_ad
    • First observedupload_ad_image

TDQS

B3.4/5.0

Scored across 46 tools

Disambiguation4/5

Most tools are clearly scoped to a specific resource and action, such as list_campaigns, create_ad_group, or delete_vcards. The main ambiguity comes from generic action buckets (campaign_action, ad_action, keyword_action) coexisting with update_* tools, and from the bid-related surface where add_keywords, set_keyword_bids, keyword_action, and the bid modifier tools can be confused at first glance. Descriptions generally resolve these boundaries, so the set is mostly distinct.

Naming Consistency4/5

The server uses snake_case throughout and mostly follows a predictable verb-first pattern such as get_, list_, create_, add_, update_, delete_, set_, and upload_. Deviations include noun_action tools (campaign_action, ad_action, keyword_action) and noun_noun tools (auth_status, clients_overview, raw_request). These are minor but make the naming pattern less uniform than a strict verb_noun convention.

Tool Count2/5

With 46 tools, the surface is very heavy for an MCP server and well above the typical 3-15 range. While Yandex Direct is a large domain, the presence of raw_request reduces the need for so many narrowly specialized tools. The count increases selection cost and makes the set harder to navigate.

Completeness4/5

Core workflows are covered: campaigns, ad groups, ads, keywords, bids, bid modifiers, callouts, sitelinks, vcards, image upload, statistics, account, balance, quota, and client management. Gaps remain for video/creative creation and deletion, image deletion, non-text ad creation, and other Direct services, but raw_request provides a documented escape hatch. These are minor gaps agents can work around rather than dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage Yandex Direct advertising campaigns, ads, keywords, and reports via natural language using the Yandex Direct API v5.
    2
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to manage Yandex Direct advertising accounts via the API v5, including reports, bids, campaign management, and semantic analysis through natural language requests.
    4
    396 npm
    MIT