[English](/docs/mcp) | **Русский**

# TAUSIK MCP — Справочник инструментов

<!-- doc-map: reader=user; zone=core-surface -->

**147 инструмента** для ИИ-агентов (актуальный счёт, проверено `len(TOOLS)`). MCP-surface покрывает всё, что агент делает день за днём. Несколько CLI-only команд намеренно не имеют MCP-аналога — это оператор/maintenance verbs, которым не место в agent-loop: `skill rebuild`, `skill bundle`, `fts optimize`, `db prune`, `audit vendors`/`research`, `config set`/`show`, `push-ok`, `run`, `doc extract`/`constants`, `hud`, `suggest-model`, `hygiene archive --confirm`. Для рабочего набора агента предпочитайте MCP-инструменты shell-вызовам — они атомарны, возвращают структурированные данные и держат контекст чище.

> **Опциональный сервер `codebase-rag`** добавляет 7 инструментов (search_code, find_symbol, etc.). Он включается отдельно через bootstrap и НЕ входит в основной счёт 152 — итого с ним 154 инструментов.

В проекте живут два MCP-сервера:

- `tausik-project` — project-scoped инструменты (147): tasks, sessions, knowledge, stacks, roles, gates, skills, exploration, audit, doctor, verify, usage logging, RENAR substrate (specs + adapts).

Опционально доступен `codebase-rag` сервер (документирован в конце).

## Verify-First Contract (v1.5)

Тяжёлые quality gates (pytest, tsc, cargo, phpstan, javac, js-test, terraform-validate, helm-lint, kubeconform, hadolint, ansible-lint) живут на отдельном триггере `verify`. MCP workflow:

```
tausik_task_start(slug=…, package=true)      # QG-0 + bounded context одним результатом
… работа над кодом …
tausik_verify(task_slug=…)                   # тяжёлое: subprocess-гейты → кеш green
tausik_task_done(slug=…, ac_verified=True)   # лёгкое: lookup в кеше
```

`tausik_task_done` откажется закрывать задачу, если verify-кеш отсутствует или устарел — возвращает структурированный failure с явной remediation. Opt-out для CI: установите `{"task_done": {"auto_verify": true}}` в `.tausik/config.json` — тогда heavy гейты выполнятся внутри `task_done` как в релизах до v1.5.

**Терминология:** [Глоссарий verify / QG](https://github.com/Kibertum/tausik-core/blob/v1.11.0/docs/ru/verify-glossary.md) — *поддерживаемый opt-out*, *обход QG* (для `task_done` недоступен), *обход verify-кеша* и pytest **test shim**.

## Status, Health, Metrics

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_health` | Health check: версия, DB, таблицы | — |
| `tausik_self_check` | Свежесть MCP-сервера: время старта, snapshot mtime watched-модулей vs текущие mtime на диске, флаг `drift_detected`, список stale-модулей с `delta_seconds`, число sibling MCP project-серверов. Вызывать из `/start` чтобы поймать предвестники тихих зависаний (gotchas #77/#79/#80). | — |
| `tausik_status` | Обзор проекта: задачи, сессия, эпики. `compact: true` → один JSON без изменения текстового режима по умолчанию. | `compact` (опционально) |
| `tausik_doctor` | 4-group health (venv + DB + MCP + skills + drift) | — |
| `tausik_metrics` | Метрики SENAR или компактный нативный расход при `host=codex\|kilo` | `host?` |
| `tausik_usage_event_log` | Ручная запись в `usage_events` (агрегаты сессии не трогает) | `tokens_input`, `tokens_output`, `tokens_total`, `cost_usd` |
| `tausik_search` | Полнотекстовый поиск по задачам, памяти, решениям | `query` |

## Задачи

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_task_add` | Создать задачу (опционально в стори) | `slug`, `title` |
| `tausik_task_quick` | Быстрое создание с auto-slug | `title` |
| `tausik_task_start` | Начать работу; опционально вернуть bounded context тем же результатом | `slug`, опционально `package` |
| `tausik_task_done` | Завершить (QG-2: `ac_verified=true`, scoped pytest, verify cache). Возвращает structured JSON: `blocking_failures`, per-gate results, cache status. | `slug` |
| `tausik_task_show` | Полная информация или ограниченный контекст с `mode=package` | `slug`; опционально `mode` |
| `tausik_task_list` | Список с фильтрами (status enum: `planning,active,blocked,review,done`) | — |
| `tausik_task_update` | Обновить поля (title/goal/AC/scope/notes/stack/complexity/role/tier/call_budget) | `slug` |
| `tausik_task_plan` | Задать шаги плана | `slug`, `steps[]` |
| `tausik_task_step` | Отметить шаг выполненным | `slug`, `step_num` |
| `tausik_task_log` | Добавить запись в журнал | `slug`, `message` |
| `tausik_task_logs` | Чтение структурированных логов (фильтр по фазе) | `slug` |
| `tausik_reason_step` | RENAR шаг рассуждения (intent\|premise\|action\|verification) | `slug`, `kind`, `content` |
| `tausik_task_replay` | Хронологический таймлайн задачи (logs + reasoning + events + verification) | `slug` |
| `tausik_task_block` | Заблокировать | `slug` |
| `tausik_task_unblock` | Разблокировать | `slug` |
| `tausik_task_review` | Перевести в review | `slug` |
| `tausik_task_delete` | Удалить | `slug` |
| `tausik_task_move` | Переместить в другую стори | `slug`, `new_story_slug` |
| `tausik_task_next` | Выбрать следующую задачу по score | — |
| `tausik_task_claim` | Занять задачу (мульти-агент) | `slug`, `agent_id` |
| `tausik_task_unclaim` | Освободить | `slug` |

### `tausik_task_done` параметры

- `ac_verified` — **обязательно** для QG-2
- `evidence` — inline AC verification log (заменяет отдельный `task_log` вызов)
- `no_knowledge` — подтвердить отсутствие знаний для фиксации (подавляет warning)
- `relevant_files[]` — изменённые файлы; драйвят **scoped** pytest gate (basename match → `tests/test_<file>.py`). Empty list при non-empty original → gate skipped (нет ложных срабатываний на full suite). Verify cache (10 min TTL) пропускает re-run при том же `files_hash`.

`task_done` **не имеет `--force`** — QG-2 нельзя байпаснуть. У `task_start` `--force` есть для байпаса session capacity, с audit trail.

### `tausik_task_done` structured response

`tausik_task_done` возвращает JSON для агентных сценариев:
- stage-флаги (`plan_complete`, `ac_verified`, `gates_passed`)
- результаты по каждому gate (`gates[]`)
- `blocking_failures[]` с `gate`, `files`, `output`, `remediation`
- `warnings[]`, `cache_status` и итоговый `ok`

До v1.5 был параллельный alias `tausik_task_done_v2` для structured-JSON варианта. **v14b-task-done-rename-drop-v2 объединил оба в один `tausik_task_done` со structured JSON выше** — суффикса `_v2` больше нет. Verify-First Contract соблюдается на всех путях.

## Сессии

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_session_start` | Начать сессию | — |
| `tausik_session_end` | Завершить сессию | — |
| `tausik_session_extend` | Поднять порог совета по active-time (совет, не ворота) | — |
| `tausik_session_current` | Текущая активная сессия | — |
| `tausik_session_list` | Список сессий | — |
| `tausik_session_handoff` | Сохранить handoff data | `handoff` (object) |
| `tausik_session_last_handoff` | Живой handoff или handoff сессии `session_id` | `session_id` (опц.) |
| `tausik_session_open` (v1.5) | Compound RPC: host-context policy + session start + status + handoff + active/blocked задачи + self_check в одном envelope. Питает Phase 1 в `/start`. `host_context` показывает повтор того же thread, доступность native usage, advisory/hard pressure и промпт нового окна. Session и self_check спроецированы; большой handoff — сводка до 4096 UTF-8 байт с явными пропусками и вызовом полного чтения. При `_projection.requires_full_handoff=true` сначала прочитайте полный handoff. Ограничение относится к секции handoff, а не ко всему envelope. Полная телеметрия: `tausik_self_check`; полный handoff: `tausik_session_last_handoff`. | — |

Лимит сессии — gap-based **active time** (паузится после 10-min idle gap), не wall clock. См. `session-active-time.md`.

## Иерархия (эпики и стори)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_epic_add` | Создать эпик | `slug`, `title` |
| `tausik_epic_list` | Список эпиков; `(stale: N)` — задач создано после последней правки описания (отчёт, не гейт) | — |
| `tausik_epic_update` | Изменить title и/или description эпика — замысел группы задач; хотя бы одно поле | `slug` |
| `tausik_epic_done` | Завершить эпик | `slug` |
| `tausik_epic_delete` | Удалить (cascade: стори + задачи) | `slug` |
| `tausik_story_add` | Создать стори в эпике | `epic_slug`, `slug`, `title` |
| `tausik_story_list` | Список стори; `(stale: N)` как у эпиков | — |
| `tausik_story_update` | Изменить title и/или description стори; хотя бы одно поле | `slug` |
| `tausik_story_done` | Завершить стори | `slug` |
| `tausik_story_delete` | Удалить (cascade: задачи) | `slug` |
| `tausik_roadmap` | Дерево: epic → story → task | — |

## RENAR substrate — SPEC + ADAPT (17 инструментов)

RENAR-подложка: формальные требования (**SPEC**) и интерпретация ТЗ (**ADAPT**, §7) с forward-интерпретациями, backward-findings и подписью архитектора (§7.5). Используется QG-0 для substantial/deep задач и `tausik renar export`/`conformance`. См. также `tausik_reason_step` (RENAR trace) в разделе «Задачи».

### SPEC (8)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_spec_add` | Создать SPEC-артефакт. `type` — закрытый список (ARCH/API/DATA/INT/PROC/UI/AI/SEC/OPS/TEST/DOC/UC; UC требует тела с `role` и ссылкой на утверждение в каждом шаге); новый тип = поправка к стандарту, не free-text | `slug`, `type`, `title`, `version` |
| `tausik_spec_list` | Список SPEC, опц. фильтр по типу (JSON) | — |
| `tausik_spec_show` | SPEC + связанные задачи (JSON) | `slug` |
| `tausik_spec_update` | Патч изменяемых полей (title/version/content_ref/status); `type`+`slug` иммутабельны | `slug` |
| `tausik_spec_delete` | Удалить SPEC (cascade: task-линки) | `slug` |
| `tausik_spec_link` | Связать задачу со SPEC (оба должны существовать — нет тихих dangling-линков) | `task_slug`, `spec_slug` |
| `tausik_spec_unlink` | Снять связь задача↔SPEC | `task_slug`, `spec_slug` |
| `tausik_spec_search` | FTS5 по slug/title/content_ref (JSON) | `query` |

### ADAPT (9)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_adapt_create` | Создать заголовок ADAPT (§7); `tz_ref` (исходное ТЗ) обязателен; старт в `draft` | `slug`, `title`, `tz_ref` |
| `tausik_adapt_interpret` | Forward-интерпретация (§7.4.3); tz_ref/citation/interpretation/scope_in/scope_out обязательны | `tz_ref`, `citation`, `interpretation`, `scope_in`, `scope_out` (+ adapt) |
| `tausik_adapt_finding` | Backward-finding; `category` — закрытый список 7 (contradiction/gap/hidden-assumption/feasibility/regulatory/terminology/scope) | `adapt_slug`, `category`, `description` |
| `tausik_adapt_sign` | Подпись architect (§7.5): подписывает тело ed25519-ключом проекта ⇒ `approved` (§13.3.3 стр.77 — статус и подпись разные факты). `role=client` ОТКЛОНЯЕТСЯ — ADR-011 отозвал подпись клиента под ADAPT; то, что одобряет клиент, теперь живёт в ACTZ | `adapt_slug`, `role`, `signed_by` |
| `tausik_adapt_show` | ADAPT + forward-интерпретации, findings, подписи, линки (JSON) | `slug` |
| `tausik_adapt_list` | Список ADAPT, опц. фильтр по статусу (закрытый перечень §7.8.1: draft/review/asked/answered/approved/frozen/superseded) | — |
| `tausik_adapt_delta` | Delta-ADAPT, замещающий родителя (§7.6); родитель → `superseded`, поздний линк к нему = FATAL dangling (§7.6.4) | `parent_slug`, `new_slug`, `title`, `tz_ref` |
| `tausik_adapt_link` | Связать ADAPT с задачей/SPEC; target должен существовать; линк к superseded ADAPT = FATAL (§7.6.4) | `adapt_slug`, `target_type`, `target_slug` |
| `tausik_adapt_search` | FTS5 по slug/title/tz_ref (JSON) | `query` |

### ACTZ (15)

Контрактный протокол уточнения ТЗ (§5A, ADR-011) — в отличие от ADAPT обращён к клиенту:
то, что клиент утверждает, живёт здесь. Жизненный цикл `draft` → `sent` → `signed` →
`superseded`, вычисляется по покрытию ролей подписи. В проекте один ed25519-ключ, не по
сторонам: `architect` подписывает по-настоящему; `client` записывает только
`signed_by`+`signed_at`, без имитации независимой подписи. `final_tz`/`orphans` (§5A.4) —
read-only проекции над подписанными пунктами ниже: производный эталон приёмки, а не
третья копия текста.

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_actz_create` | Создать заголовок ACTZ (§5A); `tz_ref` обязателен; старт в `draft` | `slug`, `title`, `tz_ref` |
| `tausik_actz_point` | Добавить нумерованный пункт; только пока `draft` (заморожено после первой подписи). `tz_ref` называет пункт исходного ТЗ (или предыдущего пункта ACTZ), который уточняется | `actz_slug`, `point_no`, `tz_ref`, `text` |
| `tausik_actz_sign` | Записать подпись (§5.5.3): `architect` подписывает тело ed25519-ключом проекта; `client` — только `signed_by`+`signed_at`. Первая подпись ⇒ `sent`; обе роли ⇒ `signed` | `actz_slug`, `role`, `signed_by` |
| `tausik_actz_verify` | Проверить подпись architect (ed25519) против текущего тела | `slug` |
| `tausik_actz_show` | ACTZ + пункты, подписи, линки (JSON) | `slug` |
| `tausik_actz_list` | Список ACTZ, опц. фильтр по статусу (draft/sent/signed/superseded) | — |
| `tausik_actz_delta` | Delta-ACTZ, замещающий родителя; родитель → `superseded`, поздний линк к нему отклоняется | `parent_slug`, `new_slug`, `title`, `tz_ref`, `supersession_rationale` |
| `tausik_actz_link` | Связать ACTZ с задачей/SPEC; target должен существовать; линк к superseded ACTZ отклоняется | `actz_slug`, `target_type`, `target_slug` |
| `tausik_actz_unlink` | Снять связь ACTZ↔задача/SPEC | `actz_slug`, `target_type`, `target_slug` |
| `tausik_actz_delete` | Удалить ACTZ (cascade: пункты/подписи/линки/decided-in) | `slug` |
| `tausik_actz_search` | FTS5 по slug/title/tz_ref (JSON) | `query` |
| `tausik_actz_decided_in` | Записать: backward-finding ADAPT решён в пункте ПОДПИСАННОГО ACTZ, с provenance (`linked_by`); отклоняет неподписанную цель | `adapt_slug`, `finding_id`, `actz_slug`, `actz_point_no`, `linked_by` |
| `tausik_actz_decided_in_remove` | Удалить decided-in ребро | `adapt_slug`, `finding_id`, `actz_slug`, `actz_point_no` |
| `tausik_actz_final_tz` | Производный эталон приёмки (§5A.4): по каждому пункту ТЗ — последний обеими сторонами подписанный пункт, с указанием, что он перекрыл. `as_of` (ISO-8601) — на прошлый момент | — |
| `tausik_actz_orphans` | Подписанные пункты, которые не отражены ни в одном ADAPT — обязательство вне требований (§5A.4, fatal), находится запросом | — |

### AT (9)

Приёмочные тесты (§8A, ADR-012) — единственная проверка, которую трассируемость
(TC → SR → ADAPT → ТЗ) структурно дать не может: неверная интерпретация
проходит все TC. Эти инструменты ЗАПИСЫВАЮТ результат процедуры изолированной
генерации (docs/en/at-generation-procedure.md) — ни один не генерирует ничего
сам. `tz_text` (дословная цитата контракта) и `generated_by` обязательны при
создании; `check_freshness` сравнивает с ЖИВЫМ `final_tz_snapshot` по `tz_ref`
каждой записи и называет, что изменилось (§8A.2 — перегенерировать перед
каждым испытанием). См. также warn-гейт `at_freshness`.

`record_result`/`diagnose`/`release_readiness` реализуют матрицу маршрутизации
§8A.4/§10.4.3. У TAUSIK нет TC как самостоятельной сущности (открытая отдельная
задача) — `diagnose` сам pytest/verification_runs не читает; `tc_outcome`
передаёт вызывающий явно. `release_readiness` не требует TC вовсе: готовность
наступает только когда исход каждого AT зелёный и свежий — отдельно от QG-4,
который необязателен и меряет бизнес-результат.

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_at_create` | Записать AT — результат процедуры изолированной генерации, не генератор | `slug`, `tz_ref`, `tz_text`, `scenario`, `source_as_of`, `generated_by` |
| `tausik_at_show` | Показать запись AT (JSON) | `slug` |
| `tausik_at_list` | Список AT, опц. фильтр по tz_ref (JSON) | — |
| `tausik_at_delete` | Удалить запись AT | `slug` |
| `tausik_at_search` | FTS5 по slug/tz_ref/tz_text/scenario (JSON) | `query` |
| `tausik_at_check_freshness` | Какие AT устарели против текущего итогового ТЗ (§8A.2); без slug — проверка всех | — |
| `tausik_at_record_result` | Записать один наблюдённый исход испытания (только добавление — повтор — новая строка) | `slug`, `outcome` |
| `tausik_at_diagnose` | Маршрутизировать последний исход AT против переданного вызывающим `tc_outcome` (§8A.4/§10.4.3) | `slug`, `tc_outcome` |
| `tausik_at_release_readiness` | Релизный гейт §8A.4: готовность только когда каждый AT зелёный и свежий | — |

## Знания

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_memory_add` | Сохранить в проектную память; `provenance` observed / inferred (по умолчанию) / told | `type`, `title`, `content` |
| `tausik_memory_search` | Полнотекстовый поиск | `query` |
| `tausik_memory_list` | Список (фильтр по типу) | — |
| `tausik_memory_show` | Показать запись по ID | `id` |
| `tausik_memory_delete` | Удалить запись | `id` |
| `tausik_memory_block` | Compact markdown: recent decisions + conventions + dead ends (для /start re-injection) | — |
| `tausik_memory_compact` | Aggregate recent task_logs (phases + top words + top files) | — |
| `tausik_memory_archive` (v1.5) | Soft-archive памяти старше duration (90d / 12w / 2m / 1y). Dry-run если нет `confirm: true`. | `before` (string), `confirm` (bool, опционально) |
| `tausik_memory_dedupe` (v1.5) | Список near-duplicate memory-пар выше порога similarity (read-only). | `threshold` (float, опц.), `limit` (int, опц.) |
| `tausik_decide` | Записать решение; необязательные `rejected` (список «вариант :: почему») и `supersedes` (id, причина в `rationale`) | `decision` |
| `tausik_decisions_list` | Список решений | — |

Типы памяти: `pattern`, `gotcha`, `convention`, `context`, `dead_end`.

## Графовая память

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_memory_link` | Создать связь между узлами | `source_type`, `source_id`, `target_type`, `target_id`, `relation` |
| `tausik_memory_unlink` | Soft-invalidate связь (никогда не удаляет) | `edge_id` |
| `tausik_memory_related` | Найти связанные узлы (1–3 hops) | `node_type`, `node_id` |
| `tausik_memory_graph` | Список связей с фильтрами | — |

Типы связей: `supersedes`, `caused_by`, `relates_to`, `contradicts`.

## Тупики и исследования

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_dead_end` | Документировать неудачный подход | `approach`, `reason` |
| `tausik_explore_start` | Начать time-boxed исследование | `title` |
| `tausik_explore_end` | Завершить исследование | — |
| `tausik_explore_current` | Текущее исследование | — |

## Шлюзы качества и верификация

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_gates_status` | Статус всех gates (по стеку) | — |
| `tausik_gates_enable` | Включить gate | `name` |
| `tausik_gates_disable` | Выключить gate | `name` |
| `tausik_verify` | v1.5 Verify-First: запустить heavy gates (pytest, tsc, …) и закешировать green в `verification_runs`. После этого `tausik_task_done` использует кеш и закрывается мгновенно. | `task_slug` |

Доступные gates: `pytest`, `ruff`, `mypy`, `bandit`, `tsc`, `eslint`, `go-vet`, `golangci-lint`, `cargo-check`, `clippy`, `phpstan`, `phpcs`, `javac`, `ktlint`, `filesize`, `class_surface`, `tdd_order`. Stack-scoped gates авто-включаются по обнаруженному стеку; universal gates (`filesize`, `class_surface`, `tdd_order`) применяются ко всем стекам. `class_surface` работает по всему репозиторию, а не по скоупу: он ограничивает составную публичную поверхность класса после наследования, которую пофайловый строковый лимит видеть не может.

`tdd_order` отключён по умолчанию. Включите через `tausik_gates_enable name=tdd_order`.

## Стеки

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_stack_list` | Список встроенных + custom стеков | — |
| `tausik_stack_show` | Резолвленный стек: gates per language + override info | `stack` |
| `tausik_stack_export` | Экспорт резолвленной декларации как JSON | `stack` |
| `tausik_stack_diff` | Diff между built-in и user override | `stack` |
| `tausik_stack_reset` | Удалить user override в `.tausik/stacks/<stack>/` | `stack` |
| `tausik_stack_lint` | Валидировать user-override `stack.json` | — |
| `tausik_stack_scaffold` | Создать `.tausik/stacks/<name>/{stack.json,guide.md}` skeleton | `name` |

DEFAULT_STACKS: 25 записей (python, fastapi, django, flask, react, next, vue, nuxt, svelte, typescript, javascript, go, rust, java, kotlin, swift, flutter, laravel, php, blade, ansible, terraform, helm, kubernetes, docker). Custom-стеки через `.tausik/config.json` → `custom_stacks`.

## Роли

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_role_list` | Список ролей | — |
| `tausik_role_show` | Профиль роли | `slug` |
| `tausik_role_create` | Создать роль (опционально `extends` базовый профиль) | `slug`, `title` |
| `tausik_role_update` | Обновить метаданные | `slug` |
| `tausik_role_delete` | Удалить роль | `slug` |
| `tausik_role_seed` | Bootstrap из `harness/roles/*.md` + использования в задачах | — |

Хранение ролей гибридное: SQLite-метаданные + markdown-профиль `harness/roles/{role}.md`. Роли в задачах остаются свободным текстом.

## Периодический аудит (SENAR Rule 9.5)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_audit_check` | Просрочен ли аудит | — |
| `tausik_audit_mark` | Отметить аудит выполненным | — |

## Навыки

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_skill_list` | Список навыков: активные, vendored, доступные | — |
| `tausik_skill_install` | Установить из репо (clone + copy + deps) | `name` |
| `tausik_skill_uninstall` | Удалить полностью | `name` |
| `tausik_skill_activate` | Активировать установленный | `name` |
| `tausik_skill_deactivate` | Деактивировать (файлы остаются) | `name` |
| `tausik_skill_repo_add` | Добавить TAUSIK-совместимый репо (сторонний URL — `force`) | `url`, опционально `force` |
| `tausik_skill_repo_remove` | Удалить репо | `name` |
| `tausik_skill_repo_list` | Список репозиториев и доступных skills | — |
| `tausik_skill_catalog` | Discovery: список skills из настроенных/клонированных repos (name, category, description) | опц. `repo`, опц. `as_json` |

## Cross-Project Queue (CQ)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_cq_publish` | Опубликовать cross-project event | `payload` |
| `tausik_cq_query` | Query cross-project queue | — |

## Мульти-агент и обслуживание

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `tausik_team` | Задачи сгруппированные по агентам | — |
| `tausik_events` | Audit log (events) | — |
| `tausik_update_claudemd` | Обновить динамическую секцию в CLAUDE.md | — |
| `tausik_fts_optimize` | Оптимизировать FTS5 индексы | — |

## Codebase RAG (отдельный опциональный MCP-сервер)

| Инструмент | Описание | Обязательные параметры |
|---|---|---|
| `search_code` | Поиск кода через RAG-индекс | `query` |
| `search_knowledge` | Поиск в knowledge base | `query` |
| `reindex` | Реиндексация кодбазы | `mode` (incremental/full), `max_seconds` (soft limit, только для full). v1.5: stderr-прогресс каждые 100 файлов; truncated=true при таймауте. |
| `rag_status` | Статус RAG-индекса | — |
| `archive_done` | Архивировать выполненные задачи | — |
| `cache_web_result` | Кешировать web-результат | `query`, `content` |
| `search_web_cache` | Поиск кешированных web-результатов | `query` |

Эти не входят в основной счёт 147 — принадлежат опциональному `codebase-rag` серверу.

## Область tool-поверхности (`mcp.scope_tools_exposure`)

Выключено по умолчанию. Когда вы ставите `mcp.scope_tools_exposure: true` в
`config.json`, сервер сужает рекламируемый tool-list до того, что разрешено
**активной задаче**: объединение объявленных задачей `scope_tools` (ACL SENAR
Rule 2) и всегда-безопасного ядра — целиком семейства `tausik_task_*` и
`tausik_session_*` плюс `tausik_status`, `tausik_verify`, `tausik_doctor`,
`tausik_self_check`, `tausik_update_claudemd` и тулы `*_search`. Прочие тулы
скрыты из списка, что сокращает и токен-стоимость определений тулов, и
поверхность атаки.

Это **fail-open**: все тулы экспонируются, когда нет активной задачи, ни одна
активная задача не объявила непустой `scope_tools`, или область не резолвится —
включение никогда не оставляет без тулов проект, который не объявлял область.
Сокрытие — это UX/токен-оптимизация, а **не** барьер безопасности: скрытый тул,
вызванный напрямую, всё равно проходит существующий scope-энфорсмент, а
write-гейт не тронут. Область пересчитывается каждый раз, когда хост запрашивает
`list_tools` — то есть при каждом подключении к серверу с уже активной задачей.

**Замер стоимости.** Полная авторская поверхность — 147 тула ~ 62 КБ определений
(~15.9k оценочных токенов; `tests/test_mcp_tool_token_cost.py` фиксирует это и
держит храповиком). При отложенной загрузке Claude Code (`ENABLE_TOOL_SEARCH`)
эагерно грузятся только имена, а каждое описание обрезается до 2 КБ — храповой
тест держит каждое описание TAUSIK под этим лимитом, чтобы ничего не срезалось
молча, и проверяет, что имена остаются уникальными и искомыми, чтобы диспетчер по
имени по-прежнему находил нужный тул.

## Запуск Tausik MCP-сервера

Bootstrap-шаг генерирует IDE-specific MCP-launchers под `harness/<ide>/mcp/`. Claude Code читает `.claude/settings.json` (auto-generated). Для регенерации запустите `python .tausik-lib/bootstrap/bootstrap.py --refresh`.

## Экономия контекста: схемы по требованию

`mcp.compact_tool_list` в `.tausik/config.json` включается bootstrap, если проект
не задал явное `false`. Без порождённого конфига сервер безопасно отдаёт полный
список. Включённый флаг оставляет полные схемы только у ядра из 23 инструментов, а
остальным 124 — имя и первые 60 символов описания. Схема любого из них
добирается одним вызовом `tausik_tool_schema(name=...)`; `query` ищет по
подстроке, пустой аргумент отдаёт перечень имён.

На свежей stdio-поверхности из 147 инструментов 02.10.2026 minified UTF-8 список
уменьшился с 54 566 до 33 752 байт (-38,1%). Выбор «60 символов» тоже основан на
замере: только имя ещё меньше, но лишает модель признака, по которому выбирают,
чью схему просить, и может потратить экономию на лишний ход. Полная раскладка
проектного контекста приведена в [context-economy.md](/ru/docs/context-economy).

Чтобы отказаться от сокращения, задайте `false` после проверки числа ходов на
задачу. При отсутствующем, повреждённом или нечитаемом конфиге сервер всегда
возвращает полный список.
