MCP-сервер для Яндекс Директ API v5: отчёты и управление кампаниями из AI-агента
Three tools with Russian descriptions and basic schemas. direct_status and direct_report have reasonable descriptions (100-150 chars), but direct_call's description is verbose (250+ chars) and mixes concerns. All three tools lack proper parameter descriptions, params are documented at a high level but individual fields lack type info and constraints. No output schemas documented. Error handling is present in code but not surfaced in tool definitions. Tool names lack clear verb-noun structure (direct_call is vague; direct_api_call would be clearer). No tool annotations (readOnlyHint, destructiveHint). Schemas present but incomplete: direct_call and direct_report accept 'object' type params with minimal field documentation, violating the pattern:constrained-input requirement for enums and explicit constraints.
Универсальный инструмент для вызова любого метода Яндекс Директ API v5. Принимает service (сервис), method (метод), params (параметры запроса), опционально client_login и sandbox. Возвращает результат API с информацией о потраченных баллах (Units) и ID запроса.
Инструмент для получения отчётов из Яндекс Директ. Принимает ReportDefinition (params), опционально processing_mode, client_login, sandbox, wait_seconds. Поддерживает асинхронное ожидание готовности отчёта (HTTP 201/202 с повторными попытками). Возвращает TSV-данные отчёта.
Проверяет статус подключения к Яндекс Директ API: загруженность токена, источник конфигурации, client_login, окружение (боевое/песочница), режим readonly, и проверяет доступ через вызов clients.get
Tool names lack action verbs. 'direct_call' is vague (call what? with what effect?). 'direct_status' is better but 'check_direct_status' would be clearer. 'direct_report' should be 'get_direct_report' or 'fetch_direct_report'.
Parameter schemas use generic 'object' type with minimal field documentation. 'params' in direct_call and direct_report accept arbitrary objects without enums, constraints, or per-field descriptions. LLMs cannot infer valid field names or values.
No output schemas documented. Tools return JSON or TSV but callers cannot predict field names, types, or structure. Agents must guess what fields to extract for downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). direct_call with mutating methods (add, update, delete) should be marked destructiveHint=true. direct_status and direct_report should be marked readOnlyHint=true.
Error messages in code are actionable (e.g., 'readonly-режим: метод заблокирован'), but tool definitions do not document error cases or recovery paths. LLMs cannot plan error recovery without explicit guidance in the tool description.