MCP server for the Yandex Direct API v5 — manage PPC campaigns, ad groups, ads, keywords and pull statistics from AI agents.
42 tools with consistent naming (verb_noun pattern) and descriptions present. However, most descriptions are terse (20-80 chars, below the 194-char baseline), lacking context on WHEN to use each tool or dependencies. Input schemas are visible but sparse: most parameters lack type constraints (no enums for state/type filters), and descriptions are minimal. Output schemas are undocumented, LLMs cannot predict response structure. Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Composition is sound (single responsibility per tool, good chaining via IDs), but descriptions do not guide LLM selection or explain prerequisites.
Returns current authentication status including token source, expiration, and refresh capability.
Creates a new text ad in an ad group.
Creates a new ad group within a campaign.
Creates a new bid modifier for a campaign or ad group.
Creates a new text campaign.
Creates a new keyword in an ad group.
Deletes an ad permanently.
Deletes an ad group permanently.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination). Breaks tool chaining and forces agents to guess at downstream parameter names.
Enum constraints missing for state/type filters. Parameters like 'states' and 'types' accept free-form strings instead of enums (e.g. ON|OFF for state, TEXT_CAMPAIGN|UNIFIED_CAMPAIGN for type). LLMs will hallucinate invalid values.
Descriptions too terse (20-80 chars vs 194-char baseline). Most lack context on WHEN to use the tool, prerequisites, or dependencies. E.g. 'Retrieves account balance' does not explain that balance is read-only or when to call it vs get_quota.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Deletes an asset permanently.
Deletes a bid modifier permanently.
Deletes a campaign permanently.
Deletes a keyword permanently.
Deletes a media file permanently.
Completes OAuth login flow by exchanging verification code for access token.
Retrieves account information including login, currency, and account type.
Retrieves a single ad by ID.
Retrieves a single ad group by ID.
Retrieves a single asset by ID.
Retrieves account balance and available funds for transfer.
Retrieves a single bid modifier by ID.
Retrieves a single campaign by ID.
Retrieves reference dictionaries (regions, currencies, time zones, etc.).
Retrieves a single keyword by ID.
Returns current API quota usage (spent, remaining, limit).
Retrieves campaign performance statistics for a specified date range and metrics.
Lists ad groups with optional filtering.
Lists ads with optional filtering by ad group or campaign.
Lists assets (images, videos, etc.) with optional filtering.
Lists bid modifiers with optional filtering.
Lists campaigns with optional filtering by state, type, and other criteria.
Lists keywords with optional filtering by ad group or campaign.
Lists uploaded media files.
Clears stored credentials and logs out the current user.
Sends a raw JSON-RPC request to any Yandex Direct API v5 service.
Initiates OAuth login flow for Yandex Direct authentication. Returns authorization URL for user to visit.
Updates ad properties (headlines, description, URL, status).
Updates ad group properties (name, status).
Updates bid modifier value.
Updates campaign properties (name, budget, status).
Updates keyword properties (text, bid, status).
Uploads a new asset (image or video).
Uploads media files for use in ads.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools have explicit risk levels (READ_ONLY, WRITE, DESTRUCTIVE) but do not declare them in the MCP schema. Agents cannot distinguish safe from dangerous operations.
No error handling guidance in tool definitions. Agents have no recovery path for common failures (invalid campaign ID, quota exceeded, sandbox mode). Error responses must tell LLMs what to do next.