Перейти к содержанию

Устройство

Одна операция — четыре способа работы

Каждая операция Яндекса, которую оборачивает ycli, объявлена один раз — как Endpoint: её метод, путь, тело, тип ответа и то, что она делает на сервере. SDK отправляет её; команда CLI и MCP-инструмент вызывают SDK, поэтому способы работы не могут разойтись в описании операции. У команды CLI и MCP-инструмента одно имя: ycli tracker boards update — это инструмент tracker_boards_update, и оба вызывают tracker.boards.edit. Имя, выученное на одном способе, работает и на другом.

flowchart LR
    E[Endpoint: method, path, effect] --> S[SDK resource client]
    S --> C[CLI command]
    S --> M[MCP tool]
    S --> P[Python code]

Честные эффекты

Хост агента по подсказкам инструмента решает, выполнять ли вызов без подтверждения. В MCP инструмент без подсказок по умолчанию считается «разрушающим», а подсказка «чтение» на удалении хуже, чем её отсутствие. В ycli эффект — часть эндпоинта (read, write, idempotent_write, destructive), а контрактный тест запускает каждый инструмент и сравнивает его подсказки с самым сильным эффектом из запросов, которые он реально отправил. --read-only скрывает все инструменты, которые что-то записывают.

Имена полей самого API

В выводе сохраняются имена полей каждого API: createdAt в Трекере, created_at в Вики. Ключ выглядит одинаково в документации Яндекса, в --format json и в результате инструмента, поэтому фильтр, скопированный из документации, работает. В Python-коде атрибуты читаются в snake_case (issue.created_at).

Типы на границах

Ввод от человека или агента на границе становится типизированной моделью: тело MCP-записи — это pydantic-модель, поэтому некорректное значение приводит к ошибке до отправки запроса, а в сообщении называется поле. Ответ не из 2xx в одном месте превращается в типизированную ошибку, а CLI сопоставляет каждому виду свой код возврата.

Правила проверяются

Структура и эти правила — инварианты с исполняемыми проверками: паритет способов работы, слои импортов, честные эффекты, единый путь вывода, единые источники истины, версионируемая публичная поверхность, внедрение зависимостей и типизированные границы. Они перечислены вместе с проверками в ARCHITECTURE.md.