# Инструменты MCP

Все инструменты actari-mcp с описаниями и параметрами.

Справочник перечисляет инструменты, которые actari-mcp отдаёт агенту. Он собирается из кода пакета при каждой сборке документации: каждое имя ниже — якорь, на него можно ссылаться. Как подключить пакет, описано в разделе [Установка actari-mcp и плагина](/docs/agents/install).

Версия пакета actari-mcp: 0.27.1. Инструментов: 36.

## accept

Принять задачу (событие Accepted). Допустимо из REPORTED. evidence — чем подтверждена приёмка (хэш коммита, ссылка на прогон); обязательность задаёт политика проекта. Проверь, что решения из спеки и отчёта записаны как adr.

- `task_id` (string, обязательный)
- `evidence` (string): Подтверждение приёмки: хэш коммита/мержа, ссылка на прогон CI, вывод тестов
- `outcome` (string): accepted (default) | accepted-with-fixes

## answer_question

Ответить на вопрос AI-продакта по фиче: текст попадает в ветку вопроса, вопрос становится «отвечен». Ответ подписывается владельцем токена с пометкой «через MCP». Фича — ключ (project, slug), question_id — из feature_questions. Снятый вопрос или вопрос другой фичи облако отклоняет с причиной.

- `project` (string, обязательный): Проект журнала (с cloud_workspace_id)
- `slug` (string, обязательный): Slug фичи (ключ вместе с project)
- `question_id` (string, обязательный): Id вопроса из feature_questions
- `text` (string, обязательный): Текст ответа

## architecture_check

Для приёмки: действующие ADR элементов карты, которых касается задача журнала, — с текстом «Решения» и строкой «Искать в диффе: …» (идентификаторы из решения), плюс открытые вопросы архитектора и открытые расхождения прошлых приёмок фичи. Без AI: сверку с диффом делаете вы, итог — строка architecture: вердикта. Проект берётся из префикса task_id (project/…). Нет карты или облако недоступно — вернёт строку «Архитектура: <причина>», приёмку продолжайте без блока. Только чтение.

- `task_id` (string, обязательный): Id задачи журнала вида project/дата-slug

## architecture_review

Разбор фичи AI-архитектором из облака: затронутые компоненты и сущности карты системы, действующие ADR, конфликты, риски и вопросы архитектора (со статусами и id для feature_questions / answer_question). Ровно одно из: slug — сохранённый разбор опубликованной фичи (текст фичи изменился или разбора нет — облако ставит свежий в очередь, ответ «поставлен в очередь», повторите через минуту); text — синхронный разбор черновика брифа без записи (до полутора минут). Нет карты системы, AI выключен или облако недоступно — вернёт строку «Архитектура: <причина>» (или текст про карту), не ошибку: работу продолжайте без блока. Только чтение.

- `project` (string, обязательный): Проект журнала (с cloud_workspace_id)
- `slug` (string): Slug опубликованной фичи (ключ вместе с project)
- `text` (string): Текст черновика брифа для разбора без записи
- `title` (string): Название фичи для text (необязательно)

## connect

Подключить журнал к облаку Actari (или к своему on-premise через url): проверяет связь (GET курсора с токеном) и при успехе сам пишет sync.json рядом с базой — ручная настройка не нужна. Токен личный: один токен покрывает все пространства пользователя, журнал раскладывается по ним согласно sync_scope. journal_id по умолчанию собирается из имени пользователя и машины. Повторный connect перезаписывает конфиг (осознанная смена облака/токена); чтобы ДОБАВИТЬ вторую цель, а не заменить текущую, передай alias — журнал будет пушиться во все цели сразу. При ошибке связи конфиг не трогается.

- `url` (string): Базовый URL инстанса: не указан — управляемое облако Actari; свой on-premise — напр. https://wh.acme.internal (можно с префиксом прокси). Пути эндпоинтов сервер добавит сам
- `token` (string, обязательный): Личный MCP-токен (Bearer)
- `journal_id` (string): Имя журнала (default: <username>-<hostname>, нормализованное)
- `alias` (string): Имя цели в конфиге. Задан — цель добавляется к уже настроенным (журнал поедет во все); не задан — конфиг перезаписывается как раньше

## delegate

Отметить делегацию задачи исполнителю (событие Delegated). Допустимо из DRAFT или REWORK. Запуск исполнителя — вне журнала.

- `task_id` (string, обязательный)
- `executor` (string, обязательный): grok / codex / subagent / inline

## draft_task

Поставить задачу в журнал (событие TaskDrafted). task_text — полный текст задания для исполнителя.

- `project` (string, обязательный): Имя проекта, напр. dom-pro
- `slug` (string): Короткий латинский слаг, напр. gantt-ranks
- `title` (string, обязательный): Человекочитаемое название
- `task_text` (string, обязательный): Полный текст задания для исполнителя
- `task_id` (string): Явный id (иначе соберётся как <project>/<дата>-<slug>)
- `intent_task_id` (string): Id облачного Task-намерения (из take): связка journal→intent едет в payload события

## drop_task

Отказаться от черновика (событие Dropped), только из DRAFT. Задача остаётся в истории и находится search_precedents; вернуть нельзя — передумали, заведи новую задачу и свяжи relates.

- `task_id` (string, обязательный)
- `reason` (string, обязательный): Почему отказываемся (обязательно)

## feature_questions

Вопросы AI-продакта по фиче из облака: по каждому id, статус (открыт / отвечен / снят), текст, ссылка на вкладку фичи и ветка ответов «автор (источник): текст». Фича задаётся ключом (project, slug) — тем же, что у publish_intent. Только чтение. Ответить — answer_question.

- `project` (string, обязательный): Проект журнала (с cloud_workspace_id)
- `slug` (string, обязательный): Slug фичи (ключ вместе с project)

## get_artifact

Полный текст артефакта по id (id даёт search_precedents / list_artifacts).

- `id` (number, обязательный)

## get_policy

Эффективная политика проекта: правила постановки, отчёта и приёмки (enforce + guidance по актам draft/delegate/report/accept) и откуда она взята — пространство, проект, default или lenient.

- `project` (string, обязательный)

## get_task

Состояние задачи, хронология событий (тип и время), связи и артефакты. Задание, отчёт и payload событий — только с full: true.

- `task_id` (string, обязательный)
- `full` (boolean): true — задание, отчёт и payload событий целиком

## inbox

Инбокс намерений из облака: мои и свободные задачи фич в работе, мои первыми, по приоритету (pull: облако только отдаёт список, забирается через take). Токен личный — у каждой строки видно пространство и проект журнала, привязанный к нему. При нескольких целях синка собирается со всех.

Параметров нет.

## intent_status

Состояние облачного намерения: выведенное состояние и факт журнала, ручное решение человека (отменено / сделано вручную) с автором и комментарием, исполнитель, приоритет, критерии приёмки с версией и разницей с тем, что ты уже видел. Помечает критерии увиденными — после этого accept по новым критериям пройдёт. task_id — id намерения или журнальной задачи (project/…).

- `task_id` (string, обязательный): Id намерения облака или задачи журнала

## link_tasks

Связать задачи (событие TaskLinked, направленно from → to). kind: continues («from — продолжение to»; для продолжения заводи НОВУЮ задачу и линкуй на старую), relates, blocks («from блокирует to»), discovered_from («from найдена в ходе to»).

- `from_task_id` (string, обязательный)
- `to_task_id` (string, обязательный)
- `kind` (string, обязательный): continues | relates | blocks | discovered_from

## list_artifacts

Список артефактов с фильтрами по проекту/типу/задаче (без тела — только заголовки).

- `project` (string)
- `kind` (string): spec | plan | adr | decision | note | doc
- `task_id` (string)
- `limit` (number): default 20

## list_projects

Реестр проектов: имя, путь на диске, маппинг на пространство в облаке.

Параметров нет.

## list_tasks

Список задач журнала с фильтрами по статусу/проекту.

- `status` (string): DRAFT | DELEGATED | REPORTED | ACCEPTED | REWORK | FAILED | DROPPED
- `project` (string)
- `limit` (number): default 20

## log_time

Списать время на задачу в облаке — от имени владельца токена, как «Списать время» в карточке. task_id — id задачи облака либо id задачи журнала (берётся её намерение, intent_task_id). hours — часы числом (1.5 = 1 ч 30 мин), минимум 15 минут; date — ГГГГ-ММ-ДД, по умолчанию сегодня. Пишет только в облако, локальный журнал не меняется; без доступа к облаку — ошибка.

- `task_id` (string, обязательный): Id задачи облака или задачи журнала (с intent_task_id)
- `hours` (number, обязательный): Часы, больше 0: 1.5 = 1 ч 30 мин
- `date` (string): Дата списания ГГГГ-ММ-ДД, по умолчанию сегодня
- `note` (string): Комментарий к списанию

## log_usage

Записать токены AI по задаче (событие UsageRecorded): расход исполнителя или приёмки. Статус задачи не меняет; допустимо из любого статуса, кроме DRAFT. Числа — только из результата субагента или вывода запуска, не на глаз. Лучше всего передать session { client, id }: сервер сам найдёт токены по id, который вернул клиент (Claude Code — agentId субагента или session_id, opencode — id из <task id="ses_…">, Codex — thread_id или task_name из spawn_agent). Или usage_file: сервер посчитает токены из транскрипта Claude Code (JSONL), вывода `claude -p --output-format json`, `opencode run --format json` или `codex exec --json`. Либо total_tokens, либо разбивка (input/output/cache), либо usage_file, либо session — один источник на вызов. role: executor — исполнитель, acceptance — приёмка. source: subagent — субагент/форк Claude Code, headless — внешний исполнитель по профилю.

- `project` (string, обязательный): Зарегистрированный проект задачи
- `task_id` (string, обязательный)
- `role` (string, обязательный): executor | acceptance
- `source` (string, обязательный): subagent | headless
- `model` (string): Модель (из usage_file, если не передана)
- `usage_file` (string): Путь к файлу запуска: транскрипт субагента (~/.claude/projects/…/subagents/agent-<id>.jsonl), вывод claude -p --output-format json, opencode run --format json или codex exec --json. Числа считает сервер.
- `session` (object): Сессия клиента, токены которой сервер найдёт сам: { client: claude-code | opencode | codex, id }. claude-code — agentId субагента или session_id; opencode — id сессии ses_…; codex — thread_id (UUID) или task_name субагента (/root/…). Числа считает сервер.
- `total_tokens` (number): Всего токенов (целое ≥ 0)
- `input_tokens` (number)
- `output_tokens` (number)
- `cache_read_tokens` (number)
- `cache_write_tokens` (number)
- `cost_usd` (number): Стоимость по данным клиента (≥ 0)

## mark_failed

Закрыть задачу как проваленную (событие Failed), из DELEGATED/REPORTED/REWORK.

- `task_id` (string, обязательный)
- `reason` (string, обязательный)

## publish_intent

Опубликовать бриф в облако: создаёт или обновляет фичу (текст — бриф) и её намерение (критерии) по ключу (project, slug) в пространстве проекта. Повтор обновляет, дублей нет; карточку, закрытую вручную, не пересоздаёт. intent_task_id — привязать бриф к намерению из inbox вместо создания. Отказ не мешает локальному флоу. Дальше: /feature → take <id намерения>.

- `project` (string, обязательный): Проект журнала (с cloud_workspace_id)
- `slug` (string, обязательный): Slug брифа/фичи — ключ идемпотентности вместе с project
- `title` (string, обязательный): Заголовок фичи
- `text` (string, обязательный): Бриф целиком → описание фичи
- `acceptance_criteria` (string, обязательный): Критерии готовности из брифа
- `intent_task_id` (string): Id намерения из inbox — привязать, не создавать

## record_artifact

Зафиксировать артефакт: спеку, план, ADR, решение или заметку (событие ArtifactRecorded). Повторная запись с тем же title = новая версия (старая остаётся в истории). kind=adr — архитектурное решение, которое дорого отменить: выбор модели данных, библиотеки, протокола, границы модулей. Тело — markdown с разделами «## Контекст», «## Решение» (обязательны), «## Последствия», «## Альтернативы» (по желанию); без «Контекста» и «Решения» запись отклоняется. Привяжи ADR к задаче через task_id: так облако положит его в документы фичи. Повторная запись с тем же title обновляет тот же ADR.

- `project` (string, обязательный)
- `kind` (string, обязательный): spec | plan | adr | decision | note | doc. adr — архитектурное решение в формате «Контекст / Решение / Последствия / Альтернативы» (первые два раздела обязательны)
- `title` (string, обязательный)
- `body` (string, обязательный): Полный текст артефакта (markdown)
- `task_id` (string): Опциональная привязка к задаче журнала (для adr — чтобы облако нашло фичу)

## record_incident

Записать грабли/урок (событие IncidentRecorded). Для инцидентов вне конкретной задачи task_id можно опустить.

- `description` (string, обязательный): Что случилось
- `lesson` (string, обязательный): Как обходить впредь
- `task_id` (string)

## record_release

Записать выпуск (событие Released): что уехало на прод в проекте. Пишет любой процесс выкатки после того, как изменения на проде. items — свободные строки (slug фич или что угодно), журнал их с задачами не сверяет; ref — коммит или тег выкатки. После sync облако рассылает уведомление о выпуске. Передай notes — название и фразу «что нового» на каждый пункт: облако соберёт из них понятное сообщение о выпуске. В облаке закрывает открытый (или замороженный) релиз пространства: фичи выкатки попадают в релиз, следующий открывается сам.

- `project` (string, обязательный): Зарегистрированный проект журнала
- `items` (string[], обязательный): Что выкачено: slug фич или свободные строки
- `ref` (string): Коммит или тег выкатки
- `summary` (string): Короткое пояснение (необязательно)
- `notes` (object[]): Для людей, на каждый пункт items: название и одна фраза, что изменилось для пользователя (до 160 символов). Из них облако собирает сообщение о выпуске в Telegram; у фичи с карточкой в облаке название берётся из карточки, фраза — отсюда. Без notes пункт покажется slug'ом.

## register_project

Зарегистрировать проект (событие ProjectRegistered): имя = неймспейс задач, root_path = привязка к папке на диске, cloud_workspace_id = маппинг на пространство в облаке (опционально). Повторная регистрация обновляет путь/маппинг. Задачи и артефакты принимаются только для зарегистрированных проектов.

- `name` (string, обязательный): Короткое имя (латиница/цифры/дефисы), напр. dom-pro
- `root_path` (string, обязательный): Абсолютный путь к корню проекта
- `cloud_workspace_id` (string): Id пространства в облаке (опционально)
- `force` (boolean): Осознанно зарегистрировать несмотря на похожий проект (guard от почти-дублей)

## release_intent

Отпустить взятое намерение обратно в инбокс облака. Нельзя, пока по нему есть живые попытки в журнале (DELEGATED / REPORTED / REWORK) — сначала mark_failed. Черновик не мешает: облако отсекает прежние попытки. note — причина, её увидит команда.

- `task_id` (string, обязательный): Id намерения облака
- `note` (string): Причина (необязательно)

## request_rework

Вернуть задачу на доработку (событие ReworkRequested), из REPORTED. Дальше — новая delegate.

- `task_id` (string, обязательный)
- `reason` (string, обязательный): Что именно не так (по итогам верификации)

## resolve_project

Найти уже зарегистрированный проект ПЕРЕД register_project/бутстрапом: по пути (какой проект покрывает эту папку) и/или по имени (похожие имена, dompro ~ dom-pro). Пустой ответ = проекта нет.

- `path` (string): Абсолютный путь (папка проекта или файла внутри него)
- `name` (string): Предполагаемое имя проекта

## search_precedents

Поиск похожих задач (задания + отчёты), артефактов и инцидентов по всем проектам: слова с морфологией (ru/en), проект текущего каталога выше остальных; артефакт — одной записью, свежайшей подходящей версией (у старой версии — version_label). project — жёсткий фильтр (инциденты без проекта при нём не возвращаются). Инциденты — первые 280 символов; целиком — с full: true.

- `query` (string, обязательный): Ключевые слова (любой язык)
- `limit` (number): Максимум задач и артефактов (default 5)
- `project` (string): Искать только в этом проекте
- `full` (boolean): true — инциденты целиком

## set_policy

Задать локальную политику: без project — default для всех локальных проектов, с project — для одного. Тело — целиком (schemaVersion, name, enforce, guidance). Для проекта, привязанного к пространству облака, отказ: его политика правится в настройках пространства.

- `project` (string): Имя проекта; пусто — default
- `policy` (object, обязательный): Тело политики (см. get_policy)

## submit_report

Записать отчёт исполнителя (событие ReportSubmitted). Допустимо из DELEGATED. Архитектурные решения, принятые в работе, — отдельным record_artifact kind=adr.

- `task_id` (string, обязательный)
- `report` (string, обязательный): Полный текст отчёта исполнителя
- `duration_minutes` (number): Сколько минут заняла работа (необязательно): если передано, облако считает время AI по ней

## sync

Принудительно отправить журнал в облако (push, только вверх): GET курсор → POST события с seq > курсора. Конфиг: sync.json рядом с базой (url, token, journalId) либо env ACTARI_SYNC_URL/TOKEN/JOURNAL_ID. Без конфига синк выключен.

Параметров нет.

## sync_scope

Область синка: какие проекты журнала в какое пространство уезжают. Токен личный, пространств у пользователя может быть несколько — привязка называет пространство его SLUG'ом: sync_scope { workspace: "dom-pro", projects: [...] } (список пространств спрашивается у облака, id руками знать не нужно). Пустой массив projects снимает привязку к этому пространству. Параметр target выбирает СЕРВЕР при нескольких целях синка (алиас из sync.json). Без аргументов — показать по каждому серверу пространства пользователя и какие проекты в какое уедут. Локальный журнал один на машину и хранит все проекты сразу — без области при нескольких пространствах журнал никуда не поедет.

- `projects` (string[]): Имена зарегистрированных проектов, которые синкаются в это пространство. Пустой массив снимает привязку со всех проектов этого пространства.
- `workspace` (string): Slug пространства, к которому привязываются проекты (из списка облака). Не нужен, если пространство одно.
- `target` (string): Цель синка (СЕРВЕР): алиас из sync.json или её url. Не нужен, если цель одна.

## system_map

Карта системы пространства из облака (C4: система, контейнеры, компоненты, сущности домена) текстом. Без element/level/query — контекст и контейнеры. element — ключ элемента: описание, технологии, состав, связи в обе стороны, источники. level — все элементы уровня. query — поиск по словам запроса (имя, описание, технологии). Приоритет: element, затем query, затем level. Элемент с пометкой «по истории — проверьте» не подтверждён человеком. Только чтение; карту собирают и правят на странице «Система» в облаке.

- `project` (string, обязательный): Проект журнала (с cloud_workspace_id)
- `element` (string): Ключ элемента карты, например backend_api
- `level` (string): Уровень: context, container, component или entity (сущности домена) Значения: context, container, component, entity.
- `query` (string): Слова для поиска по карте

## take

Забрать намерение из инбокса облака (атомарно; повторный take своего — тот же контекст). Отвечает болванкой для draft_task: контекст фичи, текст намерения, критерии приёмки с версией, приоритет, проект журнала этого пространства, intent_task_id. Чужое, отменённое или из фичи не в работе — отказ с причиной. Дальше: search_precedents → draft_task (с intent_task_id) → delegate → …

- `task_id` (string, обязательный): Id облачного Task-намерения (из inbox)
