Clonst
Clonst — AI-рецензент кода для Claude Code на базе Codex
Получите второе мнение ИИ о вашем коде до того, как он попадёт в продакшн.
Clonst — это MCP-сервер, который подключает Claude Code к OpenAI Codex для состязательного ревью кода: Claude пишет план или код, Codex его критикует, Claude исправляет, и «пинг-понг» повторяется, пока обе модели не придут к консенсусу.
Он работает через вашу существующую подписку ChatGPT с помощью официального Codex CLI. Никаких ключей API, никаких дополнительных счетов.
Независимый проект. Не аффилирован с OpenAI («Codex», «ChatGPT») или Anthropic («Claude»).
Зачем нужна вторая модель?
LLM, проверяющая собственный вывод, разделяет собственные слепые зоны. Вторая модель от другого провайдера, с собственной обучающей выборкой и собственной памятью, ловит то, что упустила первая: неверные предположения, пропущенные граничные случаи, хрупкие миграции, состояния гонки, уязвимости безопасности. Clonst превращает это в структурированный цикл ревью с жёстким критерием остановки: консенсус, а не вежливость.
Related MCP server: claude-code-codex-agents
Возможности
Нулевая настройка. Установите и забудьте: Claude запускает ревью сам, и только когда изменение стоит вашей квоты.
Пинг-понг до консенсуса. Неограниченное количество раундов по умолчанию. Структурированные вердикты (APPROVED / CHANGES_NEEDED), требуемые изменения, предложения, риски. Claude может отклонить критику с обоснованием; Codex переоценивает отклонение в следующем раунде.
Настоящая память сессии. Codex возобновляет ту же CLI-сессию в каждом раунде и помнит свои предыдущие замечания. Никакой повторной отправки контекста, никакого рецензента-«золотой рыбки».
Ваша подписка ChatGPT, без ключей API. Ревью проходят через официальный
codexCLI и его существующий вход.Выбирайте своего рецензента. По умолчанию ревью использует ту модель и усилия рассуждения, на которые уже настроен ваш codex CLI. Одна строка в
~/.clonst/config.jsonзадаёт для ревью отдельные параметры (например, более быстрые и дешёвые усилия), не затрагивая ваше расширение Codex — см. раздел «Конфигурация».Прозрачность затрат. Финальный отчёт показывает модель рецензента, количество раундов, общую длительность и потреблённые токены — свежие токены выделены, повторно использованные из кэша указаны отдельно, чтобы накопительные суммы не выглядели страшнее, чем есть.
Аудит, который переживает беседу. Каждое ревью записывает структурированный Markdown-отчёт (понятное резюме + дословно каждый раунд: требования, изменения и отклонения) в
~/.clonst/reports/.Отклонение от цели — проверка первого класса. Рецензент оценивает результат относительно вашей заявленной цели, а не только технических стандартов — «исправление», которое молча меняет желаемое поведение, будет отмечено, а продуктовые решения направляются вам, а не принимаются LLM.
Прагматичный дизайн. Ревью нацелено на существенные дефекты — то, что ломает нормальную работу, теряет данные, открывает дыру в безопасности или потребует дорогостоящей переписки, а не на исчерпывающую полноту. Редкость сама по себе никогда не оправдывает серьёзный дефект, а дешёвая в будущем правке мелочь никогда не блокирует релиз.
Вопросы, на которые вы действительно можете ответить. Оставили цикл работать и потеряли нить? Каждый вопрос к вам переформулирует, что строится, почему это возникло сейчас и что меняет каждый вариант — простым языком, не требуя чтения кода.
Оно запоминает, что вы сказали. Если ревью было слишком придирчивым или вопрос показался бессмысленным, Clonst это записывает — даже когда вы говорили с Клодом, а не с Clonst. Ничего не меняется за вашей спиной: он считает, сообщает, когда замечание возвращается снова, и вы решаете, что с ним делать.
Побочный ущерб отслеживается с обеих сторон. Прежде чем потребовать изменения, рецензент должен проверить, что ещё это изменение сломает (вызывающие стороны, контракты, удалённые модули); прежде чем применить изменение, Клод должен сделать то же самое — и отклонение из-за побочного ущерба сопровождается более безопасной альтернативой, а не голым вето.
Собственные правила ревью вашего проекта. Поместите
CLONST.mdв корень проекта — и рецензент будет проверять ваши соглашения вдобавок к своим стандартам. CLAUDE.md руководит автором; CLONST.md руководит рецензентом.Ревью на вашем языке. Критика возвращается на языке, на котором вы работаете (для каждого вызова или один раз для всех с помощью
default_languageв конфиге), в то время как протокол остаётся машиночитаемым английским.Ничто никогда не теряется. Каждый сырой ответ рецензента сохраняется на диск до любого разбора.
Кроссплатформенность. Windows, macOS и Linux — все три покрыты CI.
Надёжность. Защита от инъекций промптов, изолированная среда только для чтения, белый список аргументов CLI, герметичный набор тестов (без вызовов LLM, без квоты).
Когда это срабатывает?
Вам никогда не нужно просить. Claude решает, когда ревью стоит вашей квоты, и правило — ставки, а не размер:
Ревьюирует само | Остаётся безмолвным |
Бизнес-логика, вычисления | Чистая презентация (HTML/CSS, копирайтинг) |
Потоки данных, модели, миграции | Документация, комментарии |
Маршруты, API, интеграции | Переименования без изменения поведения |
Состояние, обработка ошибок, конкурентность | Локальные правки конфигов |
Безопасность, аутентификация | Одноразовые скрипты и прототипы |
Планы и архитектура до написания кода | (при сомнении спрашивает вас) |
Пинг-понг неограничен по умолчанию: он продолжается до консенсуса, сверяясь с вами каждые 5 раундов (настраивается). Вы можете ограничить любое ревью простым языком: «проверь это, максимум 3 раунда».
Как это работает
You ── conversation ── Claude (reviser, keeps the conversation context)
│
│ clonst_review (MCP, one call = one critique)
▼
Clonst ── spawn ── codex exec [resume <thread_id>]
(reviewer, keeps its session)Цикл живёт на стороне Claude: он отправляет, Codex критикует, Claude исправляет в беседе (у вас на глазах), повторно отправляет с возвращённым thread_id, пока не будет consensus: true. Цикл управляется через вызывающую сторону (идентификатор thread_id путешествует с каждым вызовом), в то время как сервер хранит записи каждой сессии на диске: полные логи, вердикт предыдущего раунда для точного воспроизведения, текущую длительность/суммарные токены и структурированный отчёт ревью (перегенерируется в каждом раунде). Сессии Codex сохраняются на стороне CLI.
Быстрый старт
Требования:
Claude Code — терминальный CLI или расширения для VS Code / JetBrains (они используют одну и ту же конфигурацию MCP)
Node.js 22+
Codex CLI, авторизованный в плане ChatGPT:
npm install -g @openai/codex
codex loginУстановите Clonst (рекомендуется, через npm):
claude mcp add clonst --scope user -- npx -y @clonst/clonstИли из исходников:
git clone https://github.com/capritora/clonst.git && cd clonst
npm install && npm run build
claude mcp add clonst --scope user -- node /absolute/path/to/clonst/dist/index.jsПроверьте, что работает: в новом диалоге Claude Code скажите «ping clonst». Ожидаемый результат: codex_available: true, codex_logged_in: true.
Как выглядит ревью
Ревью происходят сами по себе, но вы также можете ими управлять:
Предложи план для X, затем проверь его через Clonst до консенсуса.
Проверь эту миграцию через Clonst, максимум 3 раунда.
Попроси Clonst сделать ревью этого потока аутентификации, ориентированное на безопасность.
Вы видите каждое исправление в беседе, а при достижении консенсуса Claude завершает кратким отчётом, например:
Ревью Clonst: GPT-5.5 (высокие усилия), 2 раунда, 5 мин 30 с, ~210K свежих входных плюс 18K выходных токенов (накопленный вход 2.8M, из которых 2.6M — повторное использование кэша). Рецензент потребовал ограничение на двойную коррекцию в миграции и тайм-аут для вызова API — оба применены. Я отклонил одно предложение (выходит за рамки MVP), и рецензент принял обоснование. Полный пошаговый отчёт:
~/.clonst/reports/2026-07-06-a3f1...md
Хотите подробности по раундам? Просто спросите («проведи меня по раундам»): Claude хранит весь обмен и воспроизводит его по запросу.
Файл отчёта ревью
Каждое ревью также записывает структурированный Markdown-отчёт в ~/.clonst/reports/, обновляемый в каждом раунде — так что аудит переживает беседу. Он начинается с понятного резюме (запечатывается дословно после консенсуса), затем один раздел на раунд с точными словами каждой стороны:
что рецензент потребовал, предложил и отметил как рискованное (дословно),
что автор исправления объявил изменённым или отклонённым перед каждым раундом (дословно),
модель, усилия, длительность и токены по раундам, а также общие итоги по всему ревью,
аудиторский след, указывающий на журнал сессии и сырой вывод рецензента.
Файл — чистая проекция состояния на стороне сервера: ничего не переформулируется задним числом, а текст, порождённый LLM, экранируется, чтобы он не мог подделать разделы отчёта. Отчёт, начатый в середине сессии (возобновлённая нить), явно помечается как PARTIAL HISTORY. Два идентификатора для двух задач: report_id именует файл отчёта, thread_id возобновляет сессию рецензента.
Инструменты
clonst_ping
Здоровье сервера: доступность Codex CLI, версия, статус входа, загруженная конфигурация, каталог логов. Не потребляет квоту.
clonst_review
Одна структурированная критика за вызов. Параметры (все управляют вызывающей LLM; обычно вы не пишете их сами):
Параметр | По умолчанию | Роль |
| — | План/код для ревью, полностью (в следующих раундах: полная исправленная версия, никогда не diff) |
| отсутствует | Раунд 1: мерило рецензента — цель, желаемое поведение, нецели, ограничения, уже принятые решения. Проверка отклонения от цели оценивает результат относительно него |
| отсутствует | АБСОЛЮТНЫЙ путь к проекту: Codex запускается там и читает реальные файлы (изолированная среда только для чтения). См. раздел «Конфиденциальность» ниже |
| отсутствует | Последующие раунды: идентификатор, возвращённый предыдущим вызовом (возобновляет сессию Codex) |
| 1 (2 с thread_id) | Номер раунда; жёсткое ограничение безопасности — 50 |
| неограниченно | Жёсткое ограничение числа раундов для этого ревью; при достижении предела разногласие передаётся пользователю |
| язык содержимого | Например, «fr» или «pt-BR»: рецензент пишет критику на этом языке. Разрешается на стороне сервера; сырое значение никогда не попадает в промпт |
| all | bugs, architecture, performance, security, или all |
| отсутствуют | Последующие раунды: что было изменено / отклонено с обоснованием |
Результат: verdict, consensus (true только при доказанном APPROVED: чистый JSON, ноль обязательных изменений, без запасного парсинга), critique, required_changes, suggestions, risks_identified, thread_id, длительность и использование токенов для каждого раунда и всего обзора, reviewer_model / reviewer_reasoning_effort (разрешение с максимальным усилием: переопределение, иначе конфиг codex, иначе null), report_id / report_path (файл структурированного отчёта; report_error, если его не удалось записать — сам обзор не затрагивается), а также инструкция next_action (текст + типизированные поля), управляющая циклом.
clonst_feedback
Записывает замечание о том, как работает Clonst — слишком требовательно, неясный вопрос, неверная область, слишком медленно, стиль вывода. Клод вызывает его сам, когда вы говорите что-то подобное, независимо от того, обращаетесь ли вы к Clonst, Клоду или ни к кому конкретно. Только метаданные: без вызова рецензента, без квоты, без сети. Подсчитывает количество вхождений по темам и сообщает Клоду, когда какая-то становится повторяющейся; сам по себе никогда не меняет поведение.
clonst_topics
Перечисляет, ищет или переименовывает эти темы. Только локальный доступ к файлам — никогда ничего не запускает. action: "list" / "search" (с query, limit, offset) для просмотра накопленного, action: "describe" для улучшения однострочного описания темы.
clonst_report_summary
Запечатывает краткое изложение на простом языке в файл отчёта обзора дословно после достижения консенсуса. Принимает report_id (возвращённый clonst_review — не thread_id) и summary. Только метаданные: без порождения рецензента, без квоты, идемпотентно.
Конфигурация
Необязательный файл, по умолчанию отсутствует: создайте ~/.clonst/config.json самостоятельно, чтобы изменить любой ключ. Перечитывается при каждом вызове; недопустимые значения возвращаются к умолчанию с предупреждением.
Ключ | Значение по умолчанию | Что делает |
|
| Модель, используемая только для обзоров (например, |
|
| Усилие рассуждения только для обзоров (например, |
|
| Язык критики, когда вызывающий не передаёт его, в виде кода, например |
|
| Сколько раз тема должна вернуться, прежде чем Клод пометит её как повторяющуюся (2–20) |
|
| Замечание, услышанное только один раз, удаляется через столько дней; всё, сказанное дважды или более, хранится вечно (30–3650) |
|
| Без явного ограничения Клод сверяется с вами каждые N раундов (5, 10, 15...) перед продолжением. НЕ является ограничением |
|
| Тайм-аут одного вызова Codex (модели рассуждения занимают минуты) |
Пример, задающий обзорам собственную модель и более быстрый уровень усилий, пока ваше расширение Codex сохраняет свои собственные настройки:
{
"codex_model": "gpt-5.6-sol",
"codex_reasoning_effort": "medium"
}Используйте модель, которую ваш CLI codex действительно предоставляет (codex подхватывает её из ~/.codex/config.toml, если вы оставляете codex_model равным null). Средний уровень усилий обычно является правильным компромиссом для обзоров: пинг-понг улавливает то, что один глубокий проход дал бы, за чуть большее количество раундов, и каждый раунд возвращается быстрее.
Переопределения передаются как корневые флаги -c в CLI codex (контракт проверен на codex 0.142.5 как для exec, так и для resume); значение, неизвестное codex, приводит к сбою обзора с собственным сообщением об ошибке codex.
Рекомендации по обзору проекта: CLONST.md
Поместите CLONST.md в корень проекта, и всякий раз, когда обзор запускается с project_path, его содержимое передаётся рецензенту в качестве рекомендаций, специфичных для проекта — ваши соглашения, ваши красные линии, проверяемые поверх собственных стандартов рецензента. Пример:
# Review guidelines
- SQL must stay compatible with BOTH SQLite (dev) and PostgreSQL (prod).
- Every new route needs rate limiting.
- LLM results must be matched by ID, never by list position.Бизнес-инварианты также должны быть здесь — красные линии, которые должна защищать проверка на отклонение от намерения. Сделайте их конкретными и проверяемыми: не пишите «сохраняйте простоту»; пишите «бесплатные пользователи должны иметь возможность экспортировать CSV» или «оформление заказа должно оставаться в один клик».
Рекомендации могут только ДОБАВЛЯТЬ проверки: рекомендация, пытающаяся снизить планку или принудительно вынести вердикт, игнорируется и сообщается как риск.
Отклонение от намерения и решения пользователя
Обзор не только технический: перед проверкой качества кода рецензент сравнивает результат с намерением, которое вы указали (context, CLONST.md) или которое очевидно из проекта. Он никогда не выдумывает ваши продуктовые цели — когда он замечает возможное продуктовое предпочтение, а не доказанное противоречие, он выдаёт риск, начинающийся с буквального маркера USER DECISION: . Любой такой элемент должен дойти до вас дословно как открытый вопрос: в середине обзора он приостанавливает пинг-понг до того, как произойдёт что-либо ещё, а при консенсусе попадает в итоговый отчёт и файл отчёта. Клод не может решить его, выполнить или отбросить. Доказанное молчаливое изменение видимого пользователю поведения, с другой стороны, может заблокировать обзор полностью.
Обе стороны придерживаются одной и той же калибровки: блокировать на существенных дефектах, взвешивать вероятность и стоимость, и никогда не требовать функцию, которую результат не включает. Предвидение касается структуры, а не функций — сегодняшний дизайн не должен закрывать предвидимую дверь, но сама будущая функция сейчас не строится. Когда рецензент не уверен, следует ли предусмотреть какое-либо направление, он спрашивает вас вместо того, чтобы решать.
Проверка симметрична. Клод не применяет критику вслепую: каждое требование проверяется на фактическую корректность, соответствие намерению и радиус поражения (что ещё зависит от изменяемой вещи) перед применением — и требование, которое сломало бы что-то ещё, отклоняется с обоснованием и более безопасной альтернативой, с которой рецензент должен взаимодействовать, а не повторяться. Обе модели спорят в направлении решения; тупики передаются вам.
Ваши отзывы запоминаются
Скажите Клоду, что обзор был слишком придирчивым или что вопрос был нечитаемым, и он записывает замечание в ~/.clonst/feedback.jsonl через clonst_feedback — вам никогда не нужно обращаться к Clonst напрямую, чтобы это произошло. Каждое замечание привязывается к теме с однострочным описанием, и Клод повторно использует существующую тему, если ваше новое замечание означает то же самое, как бы вы его ни сформулировали. Как только тема возвращается feedback_recurring_threshold раз, Клод сообщает вам.
Ничто никогда не применяется автоматически: ни одна записанная заметка никогда не попадает в подсказку рецензента. Чтение журнала и решение, что улучшить, — это человеческое решение. Спросите «что говорит мой отзыв?» — и Клод сгруппирует эквивалентные темы в своём ответе. Замечание, увиденное только один раз, удаляется через feedback_retention_days; всё, сказанное дважды или более, хранится бессрочно. Удалите файл, чтобы очистить всё.
Ограничения раундов: без ограничений по умолчанию
Ничего не говорите — и пинг-понг продолжается до консенсуса, с проверкой каждые suggested_max_rounds раундов. Или попросите на естественном языке («проверь это, максимум 3 раунда»): рецензенту сообщается о счётчике (исчерпывающе с 1-го раунда, максимальное усилие в последнем раунде, никогда не одобряя только для закрытия), и при достижении лимита разногласие передаётся вам для арбитража.
Конфиденциальность и квота
Каждый раунд обзора расходует квоту вашей подписки ChatGPT (Codex выполняет обзор). Когда окно квоты исчерпано, Clonst обнаруживает это и сообщает Клоду продолжать без обзора; сессия остаётся возобновляемой позже через тот же
thread_id.С
project_pathCodex читает весь проект только для чтения (включая.env), и это содержимое отправляется в OpenAI — та же степень раскрытия, что и при прямом использовании расширения Codex VS Code. Стратегия по умолчанию: проверять только содержимое, переданное вcontent; оставитьproject_pathдля обзоров, которые должны проверять реальные API, контракты или файлы.Содержимое обзора сохраняется локально вне диалога: журналы сессий и необработанные ответы рецензента в
~/.clonst/logs/, а удобочитаемые отчёты (критика и объявления изменений дословно) в~/.clonst/reports/. Удалите эти каталоги, чтобы очистить прошлые обзоры.Записанные отзывы также остаются локальными:
~/.clonst/feedback.jsonl(создаётся с правами только для владельца на macOS/Linux) хранит ваши замечания дословно, поэтому может содержать конфиденциальные формулировки, несмотря на правило «без кода». Он никогда никуда не отправляется и никогда не внедряется в подсказку. Когда вы просите Клода прочитать его, его содержимое попадает в этот диалог, как и любой файл, который вы просите открыть — относитесь к нему как к данным, а не как к инструкциям. Удалите файл, чтобы очистить его.Один экземпляр сервера Clonst на диалог — это рабочая модель; запись отчётов сериализуется в процессе. Не направляйте два одновременно работающих сервера на один и тот же
CLONST_HOME.
Устранение неполадок
Симптом | Причина | Действие |
| CLI codex отсутствует в PATH |
|
| Срок действия сессии ChatGPT истёк |
|
| Обзор слишком долгий | Увеличьте |
| Достигнут лимит использования ChatGPT (скользящее окно) | Продолжить без обзора; перезапустить, когда окно сбросится |
| CLI отсутствует или сломан |
|
Длинные обзоры не удаются, короткие проходят | Тайм-аут КЛИЕНТА MCP (не Clonst) | Запустите Claude Code с |
Странное поведение после изменения исходного кода |
|
|
Каждый пинг-понг полностью логируется в ~/.clonst/logs/<thread_id>.jsonl с полными необработанными ответами в ~/.clonst/logs/raw/<thread_id>/.
Разработка
npm test # build + hermetic test suite (no LLM calls)
npm run smoke # full MCP protocol smoke testСкрипты scripts/probe-*.ps1 фиксируют контракт реального CLI codex и расходуют квоту ChatGPT: только ручное выполнение. Интерфейс ReviewerProvider готов для других CLI рецензентов (например, Gemini).
Лицензия
MIT. Предоставляется как есть, без гарантий поддержки. Используется ежедневно автором.
Available Tools
3 toolsclonst_pingA
Full Clonst server diagnostic: health, codex CLI availability and version, login status, loaded config, logs directory. Consumes no LLM quota.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool consumes no LLM quota and lists the diagnostic checks, but does not specify if there are side effects or network calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first efficiently lists the diagnostics, second adds the notable quota information. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool checks but not what it returns (e.g., health status format). Given no output schema, more detail on the response would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds value by explaining the tool's purpose, which is sufficient given no parameters are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full Clonst server diagnostic' and lists specific aspects it checks (health, codex CLI availability and version, login status, loaded config, logs directory), distinguishing it from siblings that are summary/review tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Consumes no LLM quota' implying it's safe to use freely, but lacks explicit guidance on when to use this tool instead of siblings like clonst_report_summary or clonst_review.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clonst_report_summaryA
Seal your plain-language summary into the structured review report file, verbatim. Call it once after a consensus, with the report_id returned by clonst_review (NOT the thread_id: report_id identifies the report file, thread_id resumes the reviewer session) and the exact text of the final report you gave the user. Metadata-only: no reviewer spawn, no LLM quota. Idempotent: calling it again overwrites the summary.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | The exact plain-language summary you gave the user, verbatim. | |
| report_id | Yes | The report_id returned by clonst_review (distinct from thread_id). |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| report_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses traits: it is idempotent (overwrites on re-call), metadata-only, and does not spawn reviewers or consume LLM quota. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each necessary and front-loaded. First sentence states purpose, second gives usage constraints, third adds behavioral traits. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple schema (2 required params, no enums, no nested objects) and presence of output schema, the description fully covers purpose, when to use, parameter nuances, and behavior. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but the description adds critical context: for 'report_id', it distinguishes from 'thread_id'; for 'summary', it specifies 'exact text you gave the user verbatim'. This extra guidance enhances parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it seals a plain-language summary into a structured report file. It uses a specific verb ('seal') and resource ('structured review report file'), and distinguishes itself from sibling tools ('clonst_ping', 'clonst_review') by specifying it is called after consensus to store the final summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call once after a consensus, and clarifies that 'report_id' is from clonst_review (not thread_id). Also mentions metadata-only nature (no reviewer spawn, no LLM quota), providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clonst_reviewA
Have a plan, code or proposal critiqued by Codex (a second LLM, through its CLI and the user's ChatGPT subscription). One call = one structured critique (APPROVED/CHANGES_NEEDED verdict, required changes, suggestions, risks). The revision loop lives on your side: critically evaluate each critique - apply what holds, reject with justification what is wrong, drifts from the project's intent, or would break something else - then call this tool again with the revised content and the returned thread_id - the reviewer keeps its session memory across rounds. Loop until consensus=true, following the returned next_action field, or until the user decides to stop. WHEN TO USE IT: the criterion is LOGIC, not size. Call it by default, without being asked, for any development that touches the project's logic or behavior (business logic, computations, data flows, models, routes, APIs, state, error handling, concurrency, security, migrations), and for plans and architecture decisions before coding. Do NOT use it for pure presentation (static HTML/CSS, copy), documentation, renames without behavior change, or throwaway content the user will not run. Every call consumes the user's subscription quota; when the scope is unclear, ask the user.
| Name | Required | Description | Default |
|---|---|---|---|
| round | No | Round number (default: 1 without thread_id, 2 with). Hard safety cap: 50 rounds (a ping-pong reaching that point is a runaway, not a review). | |
| content | Yes | The plan, code or proposal to review, COMPLETE (on later rounds: the full revised version, not a diff). | |
| context | No | Round 1 only: the reviewer's yardstick for the intent-drift check - user goal, intended behavior, non-goals, constraints, business/product intent, and decisions already made with the user. The reviewer measures the deliverable against this and flags divergences; the richer it is, the better the review. Ignored when thread_id is provided (the reviewer already holds the context in session memory). | |
| language | No | Language code for the reviewer's free-text output: language[-Script][-Region] only (e.g. "fr", "pt-BR", "zh-Hans"). Pass the language of your conversation with the user so critiques read naturally to them. Omit to let the reviewer use the language of the reviewed content. | |
| thread_id | No | Later rounds: the identifier returned by the previous call. Resumes the reviewer's session, so it remembers its critiques. Omit on round 1. | |
| max_rounds | No | Round limit set by the user for THIS ping-pong (the reviewer is informed and calibrates its demands). Omit by default: no limit, the loop continues until consensus. Pass the same value on every round. | |
| changes_made | No | Later rounds: summary of the changes made in response to the previous critiques. | |
| project_path | No | Absolute path of the project: the reviewer runs there and can read the real files. Reserve it for reviews that must verify existing APIs/contracts/files: by default the content parameter is enough. When set, the ENTIRE project (including .env and secrets) becomes readable by the reviewer, and token consumption can grow sharply: the reviewer explores files agentically, repeatedly re-sending its growing context (largely served from cache when the CLI reports cache hits). Pass it only when independent verification adds value. | |
| review_focus | No | Round 1: review focus. Default: all. | |
| changes_rejected | No | Later rounds: rejected critiques, each with its justification (the reviewer will evaluate them). |
Output Schema
| Name | Required | Description |
|---|---|---|
| round | Yes | |
| score | Yes | |
| usage | Yes | |
| status | Yes | |
| verdict | Yes | |
| critique | Yes | |
| consensus | Yes | |
| report_id | Yes | |
| thread_id | Yes | |
| next_round | Yes | |
| next_action | Yes | |
| report_path | Yes | |
| session_log | Yes | |
| suggestions | Yes | |
| total_usage | Yes | |
| report_error | Yes | |
| reviewer_model | Yes | |
| should_reinvoke | Yes | |
| duration_seconds | Yes | |
| next_action_kind | Yes | |
| required_changes | Yes | |
| risks_identified | Yes | |
| session_migrated | Yes | |
| reviewer_feedback | Yes | |
| requires_user_input | Yes | |
| parsed_from_fallback | Yes | |
| total_duration_seconds | Yes | |
| reviewer_reasoning_effort | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it explains the review round loop, session memory via thread_id, the 50-round cap, the need for critical evaluation, and the next_action field. It also warns about subscription quota and token consumption when using project_path, making agent behavior highly predictable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and informative but lacks structural breaks like bullet points or sections, which would improve scannability. However, every sentence serves a purpose and there is no extraneous information given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, iterative process, output schema exists), the description is fully complete. It covers the review workflow, usage conditions, parameter roles, loop mechanism, and safety caps. The presence of an output schema removes the need to describe return values, and the description adequately fills all other gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 100% with parameter descriptions, the tool description adds workflow context beyond schemas. For example, it explains when to pass thread_id (later rounds), why context is ignored if thread_id exists, and that max_rounds should be the same each round. This enriches agent understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Have a plan, code or proposal critiqued by Codex.' It specifies it provides a structured critique with verdict, changes, and risks. It differentiates from siblings (e.g., clonst_ping, clonst_report_summary) through its detailed description of the review process and iteration loop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly details when to use the tool: 'WHEN TO USE IT: the criterion is LOGIC, not size. Call it by default... for any development that touches the project's logic or behavior.' It also lists exclusions: 'Do NOT use it for pure presentation, documentation, renames without behavior change, or throwaway content.' This provides clear guidance on when to use versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.4.1- First observed
clonst_ping - First observed
clonst_report_summary - First observed
clonst_review
TDQS
Scored across 3 tools
Each tool targets a distinct stage in the Clonst workflow: diagnostics (ping), iterative code review (review), and final report sealing (report_summary). No functional overlap.
All tools follow a consistent 'clonst_' prefix and snake_case verb_noun pattern (ping, report_summary, review), making names predictable.
Three tools is slightly minimal, but they cover the core diagnostic, review, and summary workflow without unnecessary redundancy. The scope is narrow enough that each tool earns its place.
The core review loop and summary writing are present, but there is no tool for retrieving past reviews or reports, viewing review history, or managing sessions beyond the thread_id. Minor gaps.
Maintenance
Related MCP Connectors
- MegaLensOAuthai.megalens
Code review by AI models from different companies, usually two. Shows where they agree and disagree.
No-data MCP handoff for local Claude Code to Codex harness moves. $49 lifetime.
AI code review for GitHub PRs with an MCP autofix loop for Claude Code and Cursor
Multi-LLM council: 25+ frontier models in parallel, consensus scoring, verdict-first code review.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables adversarial collaboration between Claude and GPT for automated code critique, verification, and multi-round debate to improve output quality.3MIT
- AlicenseAqualityDmaintenanceEnables Claude Code to delegate tasks to OpenAI's Codex CLI (GPT-5.4) with structured execution traces, parallel execution, session persistence, and adversarial code review.15MIT
- AlicenseAqualityDmaintenanceEnables OpenAI Codex to consult Claude Code for co-analysis, adversarial second opinions, and read-only file review over the Model Context Protocol, with Claude remaining advisory and unable to modify files.914 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude Code to call OpenAI Codex for read-only design, deep reasoning, and code review tasks.38 npmMIT