Skip to main content
Glama

comfyui-loop-mcp

Оно не просто управляет ComfyUI — оно выполняет цикл: submit → get_result → get_image (LOOK) → compare_images → loop_record, с храповым механизмом (лучшее на данный момент + реестр) на диске

MCP-сервер с поддержкой цикла (loop-aware) для вашего собственного ComfyUI. Он не просто вызывает API — он выполняет цикл: build → run → look → critique → fix, пока результат не будет соответствовать заданию.

Граф, работающий с нулём node_errors, — это valid, not correct. Искажённые руки, смещённый фон, жёсткая матовая кромка, видимый шов тайлов — ничего из этого не видно в журнале ошибок. Это видно только в пикселях. Поэтому каждое описание инструмента, каждый ответ инструмента и собственные инструкции сервера заставляют модель смотреть перед тем, как объявить граф готовым.

Та часть, которой нет ни у кого: храповик — это инструмент, а не предложение. Большинство инструментов для агентов управляют ComfyUI. Этот управляет циклом — длинный цикл получает сжатие контекста, и в тот момент, когда это происходит, забытый "лучший на данный момент" исчезает: храповик молча перестаёт вращаться, модель повторяет изменения, которые она уже отвергла, и может выдать регрессию в качестве финального ответа. Так что лучший граф и журнал находятся на диске, а не в памяти модели. Откат — это вызов инструмента, а не акт воспоминания.

loop_start ─▶ submit ─▶ get_result ─▶ get_image ─▶ compare_images ─▶ loop_record ─┐
     ▲                                   (LOOK)      (what moved?)    (ratchet)   │
     └───────────────────  revert to best, try something else  ◀─────────────────┘
                                                          ↓ can't name a defect?
                                           loop_finish + loop_report → sign-off

Метод поставляется с сервером. Цикловой промпт и навык Claude Code находятся в comfy_loop/docs/ и упакованы в wheel, поэтому comfy_loop / comfy_skill / comfy_install подаются дословно из любого места установки сервера — один источник, нечего синхронизировать. (Они зародились в comfyui-onboarding-prompt, который больше не поддерживается; этот репозиторий — их теперешний дом.)


Как это соотносится с собственными MCP-серверами Comfy

ComfyUI поставляет два официальных сервера, и этот — третий, созданный рядом с ними — независимо и с противоположного конца задачи.

Comfy-Org/comfy-mcp (первый коммит 2026-07-01, на один день позже этого, хотя он вышел в публичный доступ раньше) управляет локальным ComfyUI через comfy-cli: все инструменты сводятся к бинарному comfy и разбирают его JSON-обёртку. Comfy Cloud MCP (https://cloud.comfy.org/mcp) — это удалённый HTTP-сервер, который выполняет граф на GPU от Comfy. Оба поддерживаются и сопровождаются командой ComfyUI.

Этот говорит HTTP к /prompt и /object_info напрямую — никакого CLI, никакого аккаунта, ничего устанавливать, кроме httpx, — и тратит свою поверхность на ту половину работы, что начинается после выполнения графа.

Реальная разница

Их локальный сервер относится к установке ComfyUI как к вещи, которой нужно управлять: запустить её, остановить, переключить на другую версию, войти, потратить кредиты на хостинговые партнёрские модели, хвосты журнала, следить за пакетами. Это действительно более широкая поверхность, чем у этого репозитория, и это та поверхность, которой платформенному вендору лучше всего владеть — она двигается, когда движется ComfyUI, comfy-cli или партнёрские API. Если вам нужно запускать и поддерживать мою установку, используйте их.

Этот рассматривает вывод как вещь, которой нужно управлять — потому что именно эта часть была на нашей ответственности. Он родился из собственной продакшн-работы Alienrobot (Alienrobot), где граф, который запускается, является началом работы, а не её концом. Здесь ничего не запускает процесс и не тратит кредит. Вместо этого: возвращайте пиксели модели, дифф-два прохода в изображение, где дрейф не может спрятаться, оцените то, что бриф действительно спрашивает, и держите лучшее на данный момент на диске, чтобы сжатый контекст не мог потерять его. Этой части нет ни у кого — не потому, что сложно вызвать /view, а потому, что "заставить агента смотреть и не дать ему построить на регрессе" — это дисциплина, а не конечная точка.Хорошо, я переведу текст с en-US на ru-RU, сохраняя все структуры, имена и ссылки. Поехали# comfyui-loop-mcp

Он не просто управляет ComfyUI — он выполняет цикл: submit → get_result → get_image (LOOK) → compare_images → loop_record, с храповиком (лучшее на данный момент + реестр) на диске

MCP-сервер с поддержкой цикла для вашего собственного ComfyUI. Он не просто вызывает API — он выполняет цикл: build → run → look → critique → fix, пока результат не потечёт, доводя работу до соответствия брифу.

Граф, который работает с нулём node_errors, — это валиден, а не значит верный. Искажённые руки, отодвинутый фон, жёсткое матовое ребро, видимый шов тайла — ничего из этого нет в журнале ошибок. Это видно только в пикселях. Поэтому каждое описание инструмента, каждый ответ инструмента и собственные инструкции сервера заставляют модель смотреть перед тем, как объявить граф готовым.

Та часть, которой нет ни у кого: храповик — это инструмент, а не предложение. Большинство инструментов для агентов управляют ComfyUI. А это управляет циклом — длинный цикл получает сжаттие контекста, и в тот же момент забытый запомненный "лучший на данный момент" исчезает: храповик беззвучно перестаёт щёлкаться, модель повторяет изменения, которые она уже отвергла, и может отдать вам регрессию как финальный ответ. Так что лучший граф и журнал живут на диске, а не в памяти модели. Откат — это вызов инструмента, а не акт воспоминания.

loop_start ─▶ submit ─▶ get_result ─▶ get_image ─▶ compare_images ─▶ loop_record ─┐
     ▲                                   (LOOK)      (what moved?)    (ratchet)   │
     └───────────────────  revert to best, try something else  ◀─────────────────┘
                                                          ↓ can't name a defect?
                                           loop_finish + loop_report → sign-off

Метод поставляется с сервером. Цикловой промпт и навык Claude Code живут в comfy_loop/docs/ и упаковываются в wheel, поэтому comfy_loop / comfy_skill / comfy_install подаются дословно из любого места установки сервера — один источник, ничего не нужно синхронизировать. (Родились в comfyui-llm-onboarding-промпте, который больше не поддерживается; этот репозиторий — их теперешний дом.)


Related MCP server: ComfyPilot

Как он соотносится с собственными MCP-серверами Comfy

ComfyUI поставляет два официальных сервера, и этот — третья вещь, построенная рядом с ними — независимо, и с другого конца проблемы.

Comfy-Odm-comfy (первый коммит 2026-07-01, на один день позже этого, хотя он вышел публично раньше) управляет локальным ComfyUI через comfy-cli: каждый инструмент вызывает бинарный файл comfy и разбирает его JSON-оболочку. Comfy Cloud MCP (https://cloud.comfy.org/mcp) — это удалённая HTTP-служба, которая выполняет граф на GPU от Comfy. Оба построены и поддерживаются командой ComfyUI.

Этот говорит HTTP к /prompt и /object_info напрямую — без CLI, никакого аккаунта, ничего устанавливать, кроме httpx, — и тратит свою площадь на ту половину работы, которая начинается после выполнения графа.

Разница на самом деле

Их локальный сервер считает установку ComfyUI целью: запустить, остановить, переключить версию, зайти, потратить кредиты на хостинговых партнёров, хвосты журнала, поддерживать пакеты. Это действительно более широкий полок, чем у этого репозитория, и именно ту поверхность, владеть которой платформенный вендор лучше всего способен — она движется каждый раз, когда двигаются ComfyUI, comfy-cli или партнёрские API. Если вам нужно запустить и поддерживать мою установку, используйте его.

Этот рассматривает вывод как вещь, которой нужно управлять — потому что это часть, за которую наш мяч. Он родился из собственных производственных работ Alienrobot (где граф, который выполняется до, а не конец работы. Здесь ничего не запускает процесс и не тратит кредиты. Вместо этого: верните пиксели модели, прогоните два прохода в изображение, где дрейф не может спрятаться, оцените то, что бриф действительно просит, и держите лучшее на данный момент на диске, чтобы сжатый контекст не мог потерять. Этой части нет ни у кого — не потому, что сложно вызывать /view, а потому, что "заставить агента смотреть и не дать ему построить на регрессе" — это такая дисциплина, а не конечная точка.

этот репозиторий

Comfy-Org/comfy-mcp

Общается с ComfyUI через

его HTTP API (/prompt, /object_info, /view)

субпроцессы comfy-cli (comfy … --json)

Дополнительная зависимость

нет (httpx, pillow)

comfy-cli ≥ 1.14 и установка, о которой он знает

Видит ComfyUI, который вы не устанавливали

да — всё, до чего добирается URL, включая машину, на которой у вас нет доступа к шеллу

частично; некоторые инструменты по своей конструкции работают только локально

Посмотреть результат

get_image, get_video_frame — пиксели возвращаются в модель

fetch_outputs(inline_images=True)

Оценить результат

compare_images (режим разности), image_diff_stats, measure_image (швы тайлов / резкость), video_temporal_stats

—

Оставить лучший

loop_*: храповик + журнал на диске, откат — вызов инструмента

—

Исследовать параметр

loop_sweep — один вход, N значений, один вызов, фиксируется в прогоне

vary_workflow — декартово произведение значений слотов в файлы

Проверить граф перед запуском

check_workflow — отсутствующие пакеты, отсутствующие файлы моделей, незаданные обязательные входы, мёртвые связи, нет узла вывода — в одном ответе

validate_workflow + workflow_deps + шаблон local_check

Шаблоны подграфов

разворачиваются и переподключаются (вынесенные виджеты сохраняются)

разворачиваются на стороне клиента

Стоимость обнаружения в токенах

компактная нотация узлов (экономия 93% относительно object_info, 987 узлов); графы FlowZip ~72% дешевле litegraph

не заявленная цель

Установить недостающее

ComfyUI-Manager: install_node_pack, install_model, restart_comfyui, update_comfyui

реестровый install_node, download_model (в фоне, с возможностью отмены), полное обновление/смена версии

От нуля до запуска

это делает агент: comfy_install — промпт, заполняемый с этой машины (существующая установка, этот Python, ускоритель этой машины), и любой неудачный вызов возвращает команды запуска/установки

говорит вам выполнить comfy install в терминале; launch_comfyui / stop_comfyui / switch_comfyui_version управляют уже существующей установкой

Запускать процесс ComfyUI

нет — только перезапуск (через Manager); шеллом владеет агент

субпроцессы comfy-cli, поэтому да

Облачные/партнёрские модели, аккаунты, кредиты

нет, намеренно

auth_login, partner_generate, шлюзы согласия на траты

Управление заданиями

submit_workflow, job_status, cancel_job, get_queue, interrupt

один инструмент job: status / wait / watch / cancel / queue

Поверхность MCP

43 инструмента + 2 промпта + 3 ресурса

39 инструментов

Размер / лицензия

~3 700 строк, MIT

~16 000 строк, AGPL-3.0-or-later или коммерческая

Разработано

Alienrobot — создан для нашей собственной VFX/генеративной работы и используется в ней

команда ComfyUI, вместе с самой платформой

Объём обязательств

цикл: обнаружение, преобразование и оценка результата

вся установка: жизненный цикл, аккаунты, партнёрские API, пакеты

Что выбрать

  • Нет GPU → Cloud MCP. Ничто локальное не сравнится с оборудованием, которого у вас нет.

  • «Установи, запусти и поддерживай в работе» → Comfy-Org/comfy-mcp. Жизненный цикл, партнёрские модели, фоновые загрузки, закрепление версий.

  • «Первый результат работает, а наметанный глаз его отвергает» → этот. Шесть пальцев, поплывший фон, жёсткая кромка матов, заметный шов тайла, клип, который кипит. Это цикл, и это сервер, построенный целиком вокруг него.

Они сочетаются: ничто не мешает запускать оба, и имена инструментов не конфликтуют. (А вот имена пакетов конфликтовали — этот тоже короткое время назывался comfy-mcp, и это проигрышный спор с людьми, которым принадлежит пространство имён ComfyUI. Отсюда comfyui-loop-mcp; импортируемый пакет — comfy_loop, и оба можно устанавливать бок о бок.)

Что мы не будем добавлять

Целиком перенимать список функций конкурента — так получаются два посредственных инструмента. То, что здесь взято от них, — это то, что нужно циклу: предполётная проверка, статус заданий, чтение хвоста логов, запас VRAM, обновления. Что остаётся за рамками — намеренно:

  • Аккаунты, кредиты, облачные партнёрские модели. Суть в том, что «ничего не покидает вашу машину, без регистрации, без счётчика». Кредитный шлюз противоречит этому. Если вам нужны Kling или Veo, их сервер делает это правильно, со шлюзами согласия, которые этому репозиторию незачем изобретать заново.

  • Запуск и остановка процесса ComfyUI. HTTP-клиент не может запустить сервер, который не запущен, а направлять его на машину, на которой у вас нет доступа к шеллу, — это поддерживаемый случай, а не крайний. restart_comfyui (через Manager) — честный предел, но «не могу» — не то же самое, что «не поможет»: агент обычно имеет шелл, поэтому недоступный сервер возвращает команды установки/запуска для этой машины и ожидает, что агент их выполнит. Ни этот сервер, ни сервер Comfy-Org не устанавливают ComfyUI за вас (их вариант указывает вам на comfy install в терминале); разница в том, что здесь инструкции возвращаются через вызов инструмента и адресованы тому, кто может по ним действовать.

  • Сохранение / публикация / воспроизведение воркфлоу как сервис. save_workflow отдаёт вам файл, прошедший проверку round-trip. Где он живёт после этого — ваше дело.

Три примитива MCP в привязке к циклу

Первобытный

Что он открывает

Шаг цикла

Инструменты

check_comfyui, list_nodes, get_node, list_models, search_models, search_templates, get_template

Открой, не угадывай

find_missing_nodes, install_node_pack, install_model, restart_comfyui, update_comfyui

Расширь (установи, что нужно шаблону)

check_workflow

Проверь до того, как будет задействован GPU

inflate_workflow, flowzip_to_api

Сожми (токены, экономные графы)

template_slots, run_template

Запусти заведомо" good template" с переопределениями (без графа в контексте)

upload_image, submit_workflow

Сборка → Запуск

get_result, get_image (возвращает реальное изображение)

Смотри

loop_start, loop_record, loop_sweep, loop_best, loop_ledger, loop_finish, loop_report

Рэтчет + журнал, на диске

system_status, get_queue, job_status, cancel_job, interrupt, free_vram, comfyui_logs

Контроль

Подсказки

comfy_loop (полный метод), comfy_skill (компактный), comfy_install (bootstrap)

Вся дисциплина, одна команда

Ресурсы

comfyui://object_info (live), comfyui://loop-method, comfyui://skill

Доки + правда

Три вещи делают его циклом, а не просто API-обёрткой:

  1. get_image возвращает отображаемый результат модели — это шаг, который делает «взгляд» реальным. Модель видит реальные пиксели.

  2. Ответы инструментов продвигают цикл. submit_workflow при успехе говорит "верно, не точно — теперь СМОТРИ"; при отклонении говорит "это не итерация — фупукни и дай-верной исправь и повторно отправь." get_result заканчивается директивой: "не останавливайся здесь — ПОСМОТРИ, Затем поменяй один параметр или объяви, что краткое выполнено."

  3. Инструкции сервера несут политику предпочтения цикла (см.ниже), которую клиент внедряет при подключении.

Политика предпочтения цикла (инструкции сервера)

При рукопожатии сервер говорит агенту когда зацикливаться, а когда нет:

  • ВСЕГДА делай открытие из живого, актуального API перед записью; проверь выполнением; node_errors — это не итерации — исправь и отправь снова.

  • ПРЕДПОЧИТАЙ ЦИКЛ всегда, когда натренированный глаз может отвергнуть результат — композиция/количество, качество сходства, матовый/кромка, апскейл/реставрация, текстура швов, временная стабильность видео, «сделай правильно».

  • RATCHET — держи лучшее; сохраняй изменение только если оно побило прежнее, иначе откатись и куй другое другое; поворотный параметр → схема → работа на плапе. Проверка на объективном тесте только там, где есть определение; иначе — действуй на глаз.

  • SKIP цикл только для механических задач (конвертация формата, чистый API и нулевой API'news) and текст: * — Let's keep the original URL! Wait, construct: SKIP зацикливайся только для механических задач (конвертация формата, чистый API-запрос, или когда пользователь явно хочет просто исполняемый граф).

  • Когда не уверен, сделай как минимум один проход «посмотри-и-критикуй», прежде чем объявить готовым.

Механизм Rachet/ledger/pivot адаптирован из автоцикла Карпатого, настроен для субъективной работы с изображениями (объективный граф только там, где есть; человек чек-поинт для подписи, а не бег навсегда). Эти строки политики живут в серверных instructions + ответы инструментов; полный метод живёт в comfy_loop фразе, который служит репозиторию loop дока слабо.

MCP не может заставить поведение — он показывает возможности и подсказки. Именно поэтому цикл становить сильный, хорошо ограниченный дефолт, который агенту многократно повторяют языках. Для генеральной гарантии в Claude установи тот же текст как всегда включённый скилл:

mkdir -p ~/.claude/skills/comfyui-workflows
cp comfy_loop/docs/SKILL.md ~/.claude/skills/comfyui-workflows/

Skill = вечновключённая дисциплина, MCP = инструменты, которыми он управляет. Это тот же файл, который comfy_skill иконостал, позволяет им не различаться — и он отзывает к comfy_install для загрузки, а не собственный устаревший рецепт.


Инструмент

Discover

Инструмент

Аргументы

Возвращает

check_comfyui

—

Шаг 0 цикла и настоящая предварительная проверка. Если ничего не отвечает, возвращается что при этом сделать — применительно к этой машине: запустить найденную установку, создать новую или открыть туннель для удалённого URL (см. Устранение неполадок). Если ответ приходит, она всё равно называет, что стоит между текущим состоянием и рабочим рендером: torch на CPU (любой рендер работает, ~50x медленнее, и ничто не сообщает об ошибке), нет весов на диске (полностью функциональный ComfyUI, который не может отрендерить ничего), нет ComfyUI-Manager (с двумя командами для исправления, поскольку restart_comfyui сам является маршрутом Manager). В остальных случаях — количество узлов, версии ComfyUI/torch, свободная/общая VRAM по каждому устройству, наличие ComfyUI-Manager (нет Manager = нет установок, нет перезапуска) и занята ли очередь — либо явный ответ «недоступен».

list_nodes

keyword=""

Узлы, у которых класс или отображаемое имя совпадает (строгое надмножество поиска только по классам в скилле). При опущенном keyword возвращается количество.

get_node

class_name, verbose=False

Интерфейс одного узла в компактном виде @Name +req:T ?opt:T -out:T (примерно на 90 % меньше токенов); verbose=True — полный JSON (значения по умолчанию, мин/макс).

list_models

class_name, input_name=""

Фактические файлы моделей, которые загрузчик предлагает на диске (источник истины), считанные из его перечисления; поддерживается и устаревший список, и кодировка COMBO. Имя файла никогда не выдумывается.

search_models

keyword="", model_type=""

Каталог загружаемых моделей (список ComfyUI-Manager) — найти чекпоинты/LoRAs/VAEs/апскейлеры, которых у вас ещё нет; для каждого результата указано, установлен ли он уже. Установка через install_model.

search_templates

keyword="", source="online"

online (по умолчанию): полный открытый каталог (Comfy-Org/workflow_templates, ~550), поиск по имени/названию/описанию вживается из GitHub — без установки. installed — только то, что есть в этой установке ComfyUI.

get_template

name, pack="", source="online", fmt="flowzip"

Получает шаблон. fmt="flowzip" (по умолчанию) — компактный текст FlowZip (в среднем ~72 % меньше, чем сырой JSON litegraph); fmt="json" — полный litegraph. В любом случае это litegraph — преобразуйте через flowzip_to_api перед отправкой. Онлайн-шаблон может требовать узлы или модели, которых у вас нет, — проверьте через find_missing_nodes.

inflate_workflow

flowzip

Разворачивает текст FlowZip обратно в полный JSON litegraph.

flowzip_to_api

flowzip

Преобразует FlowZip/litegraph → формат API/prompt для submit_workflow: разрешает связи, сопоставляет значения виджетов с поименными входами (с приведением типов) и прослеживает транзитные соединения Reroute до реального источника — у Reroute нет backend-класса, поэтому связь, указывающую на него, нужно переподключить, иначе API-граф будет ссылаться на несуществующий узел (отвязанные и циклические цепочки попадают в отчёт, а не вызывают сбой). Субграфы разворачиваются, а не пропускаются: их внутренности приходят в неймспейсе <instance>:<inner>, переподключаются через границу, с сохранёнными вынесенными значениями виджетов. Неизвестные классы по-прежнему пропускаются и фиксируются в отчёте. Проверьте результат перед запуском; check_workflow поймает остальное, прежде чем вы потратите GPU-минуту.

template_slots

name, source="online", pack=""

Перечисляет переопределяемые входы шаблона (node_id → параметры + текущие значения) без загрузки полного графа, включая параметры внутри субграфов. Также возвращает текст собственных Note/MarkdownNote автора, где и живут триггерные слова и нужные веса, и приводит его как недоверенные данные, а не как указания.

run_template

name, overrides={}, source="online", pack=""

Запускает проверенный шаблон с переопределениями {node_id: {input: value}} — получение → преобразование → применение → отправка, не загружая граф в контекст. Затем get_result/get_image. Шаблоны с субграфами тоже работают — их внутренности разворачиваются по пути.

Расширение (установить то, что требует шаблон, — требуется ComfyUI-Manager на хосте)

Инструмент

Аргументы

Результат

find_missing_nodes

name, pack="", source="online", workflow=None

Сверяет классы узлов с /object_info и сопоставляет каждый отсутствующий узел с ID устанавливаемого пакета. Работает с шаблоном или с уже имеющимся у вас workflow (в формате API или litegraph), рекурсивно обходя подграфы. Только чтение.

install_node_pack

pack_id, version="latest"

Устанавливает пакет через очередь ComfyUI-Manager (доверенный реестр, без произвольного кода). Затем требуется перезапуск.

install_model

name

Загружает модель из каталога (из search_models) в правильную папку models/<type>/ через Manager. Перезапуск не нужен — проверьте с помощью list_models.

restart_comfyui

—

Перезапускает ComfyUI (через Manager), чтобы новые узлы зарегистрировались в /object_info. Честно сообщает об ошибке: HTTP ответ не означает, что перезапуск произошёл.

update_comfyui

target="comfyui"|"nodes"|"all"

Обновляет ядро ComfyUI и/или все установленные пакеты через очередь Manager, затем сообщает, что требуется перезапуск. Запускает сторонний код — сначала скажите об этом. Не в середине цикла: это переносит поведение узлов под храповик, ранние проходы которого измерялись на старом коде.

Проверка — всё, что можно узнать до того, как в дело вступает GPU

Инструмент

Аргументы

Результат

check_workflow

workflow (словарь API или litegraph)

Один ответ на вопрос «запустится ли это на этой машине»: классы узлов, которых у вас нет (разрешаются в ID пакетов в том же проходе), имена файлов моделей, которых нет в списке этого загрузчика (с ближайшим, что у вас есть), не заданные обязательные входы, соединения, указывающие на отсутствующие узлы, значения вне объявленного диапазона узла и граф без выходного узла — который запускается зелёным и не даёт ничего посмотреть. /prompt тоже находит их: по одной на каждый запрос, и отсутствующий чекпойнт выглядит точно так же, как отсутствующий пакет. Чисто здесь означает правильную структуру, а не корректность — вам всё равно нужно смотреть на пиксели.

Сборка → Запуск → Просмотр

Инструмент

Аргументы

Результат

upload_image

path, overwrite=True

Загружает локальное изображение в каталог input/ ComfyUI; возвращает имя, которое нужно указать в узле LoadImage.

submit_workflow

workflow (словарь в формате API), client_id

При успехе: prompt_id + подсказка «теперь СМОТРИ». При неудаче: node_errors + подсказка «исправьте этот узел и отправьте снова».

get_result

prompt_id, timeout_s=120

Опрашивает /history; возвращает filename/subfolder/type каждого вывода, сообщает, сколько узлов было обслужено из кэша (при фиксированных зернах повторно выполняются только узлы ниже по потоку от вашего изменения — итерации намеренно дёшевы) + указание смотреть и итерировать. Выполнение, прерванное на середине, возвращается как узел, вызвавший сбой, и его исключение (при OOM даётся подсказка «free_vram, затем снизьте разрешение») вместо вводящего в заблуждение «завершено, но выходные данные не созданы».

get_image

filename, subfolder="", image_type="output"

Фактическое изображение, возвращаемое модели, чтобы она могла оценить пиксели.

compare_images

filename_a, filename_b, mode="side_by_side"|"difference", amplify=1.0

Сравнение в виде изображения. difference = 0.5+0.5*(a−b): идентичные области отображаются ровным средне-серым, так что отклонения, незаметные глазу, бросаются в глаза. У MCP-клиента нет командной оболочки для ffmpeg — без этого «сравнить свои результаты» невыполнимо.

image_diff_stats

filename_a, filename_b

Средняя/максимальная абсолютная разница + % изменённых пикселей — контроль «я изменил только то, что хотел». Ловит «мелкую правку», которая незаметно переписывает кадр.

measure_image

filename, metric="sharpness"|"tile_seam"|"brightness"

Объективная оценка для храповика, когда в постановке задачи есть объективный тест. tile_seam сравнивает стык при зацикливании с внутренним стыком (~1.0 = действительно тайлы, >2 = настоящий шов — то, что глаз пропускает); sharpness = энергия краёв, растёт с реальной детализацией и падает, когда проход лишь смягчил изображение.

video_info

filename, subfolder=""

Размеры, fps и количество кадров для видеовыхода. Вызывайте его перед индексацией кадров — вам нужен диапазон, и нужно знать, одинаковой ли длины два клипа, которые вы собираетесь сравнивать.

get_video_frame

filename, frame=0, subfolder=""

Один кадр видеовыхода по индексу кадра, возвращаемый как изображение. Видеочасть get_image: get_result уже сообщает о gifs/videos, но все остальные инструменты LOOK работают только с Pillow и не могут декодировать mp4 — поэтому для графов VHS/AnimateDiff/WAN команда «вызовите get_image и СМОТРИ» была невыполнима.

compare_video_frames

filename_a, filename_b, frame=0, mode="side_by_side"|"difference", amplify=1.0

То же сравнение, но на одном и том же индексе кадра в обоих клипах. Сравнение по временно́й метке незаметно ломается, как только длины расходятся (ограничение кадров, обрезка, другой fps) — вы с полной уверенностью сравниваете два не связанных между собой момента. При несовпадении числа кадров предупреждение впечатывается в изображение, а не остаётся текстом, который можно пробежать глазами.

video_temporal_stats

filename, stride=1, max_frames=120, roi=None

Нестабильность от кадра к кадру в виде числа — объективный критерий для вопроса «не кипит ли оно?», чего не может показать ни один отдельный кадр. Это наивная разница между соседними кадрами, поэтому реальное движение учитывается: используйте её на ОДНОМ И ТОМ ЖЕ клипе до/после изменения или передайте roi на область, которая должна быть статичной. Проверено на известной паре (сырой покадровый своп 3.53 → сглаживание оптическим потоком 2.38).

Цикл как устойчивое состояние — храповик — это инструмент, а не упражнение на память. Длинный цикл сжимается; если лучший на данный момент результат и журнал живут только в контексте модели, храповик молча перестаёт срабатывать, модель повторяет изменения, которые уже отвергла, и может выдать регрессию как финальный результат. Поэтому они живут на диске.

Инструмент

Аргументы

Результат

loop_start

brief, gate=""

Открывает запуск → run_id. gate — это объективный тест, если он есть в брифе ("должно бесшовно тайлиться", "ровно 3 яблока").

loop_record

run_id, change, outcome, graph=None, score=None

Записывает проход и применяет храповик. "better" сохраняет этот граф как новый лучший (откатываемый). "worse"/"same" сразу возвращают лучший граф, так что откат — это один вызов, плюс список уже опробованных изменений, чтобы не повторять тупик. Если оба прохода имеют объективный score, число переопределяет вердикт — модель, которая хочет закончить работу, назовёт регрессию "better".

loop_sweep

run_id, workflow, node_id, input_name, values

Прогоняет один и тот же граф по не более чем 8 значениям одного входа за один вызов — для значений, до которых не достучаться рассуждением (denoise, cfg, strength). Всё остальное держится одинаковым, так что результаты отличаются ровно одной переменной. Таблица значение → prompt_id записывается в запуск, так что сжатая модель восстанавливает её из loop_ledger, а не перезапускает свип. Свип создаёт один записанный проход, а не N.

loop_best

run_id

Лучший на данный момент граф. Источник истины после сжатия — он, а не ваши воспоминания.

loop_ledger

run_id

Журнал цикла только на добавление: каждый проход, что изменилось, что это дало. Восстанавливает нить после сжатия; это также журнал, который вы передаёте пользователю при сдаче.

loop_finish

run_id, summary=""

Закрывает запуск на контрольной точке сходимости; возвращает финальный журнал + лучший граф для предъявления при сдаче.

loop_report

run_id, out_path=""

Отрисовывает весь запуск одной самодостаточной HTML-страницей — каждый проход, что было сохранено, что откачено, миниатюры встроены в base64, так что она открывается при выключенном ComfyUI. Финальное изображение ничего не доказывает; именно выброшенные проходы показывают, что цикл сошёлся.

Доставка

Инструмент

Аргументы

Результат

save_workflow

workflow (API dict), name="", save=True

API → UI/litegraph, чтобы человек мог открыть и отредактировать его; сохраняется в список воркфлоу ComfyUI. Проверка round-trip: результат конвертируется обратно в API и сравнивается с вашим входом, потому что widgets_values позиционен и незаметная ошибка на единицу сдвигает параметры — правдоподобный, но неверный файл хуже, чем никакой.

Управление

Инструмент

Аргументы

Результат

system_stats

—

Устройство / VRAM (полезно при настройке разрешения/батча или после OOM).

get_queue

—

Что выполняется и что в очереди.

job_status

prompt_id

Где находится один запуск без блокировки: в очереди (с его позицией), выполняется, завершён с N результатами — или ошибка выполнения, которая его остановила. То, что нужно, когда в полёте несколько запусков — например, loop_sweep.

cancel_job

prompt_id=""

Убирает один ожидающий запуск из очереди или прерывает его, если этот id сейчас выполняется. Без id очищает очередь ожидания, не трогая выполняющуюся задачу. interrupt — грубая версия.

interrupt

—

Отменяет текущий запуск.

free_vram

unload_models=True

Выгружает модели и сбрасывает кэш исполнителя (POST /free). Собственная дешевизна цикла здесь работает против вас — кэшированные проходы занимают VRAM, — так что это дешёвый вариант, который стоит попробовать, прежде чем переписывать граф, словивший OOM. Не мгновенно (выполняется на следующей итерации воркера очереди) и не может затронуть VRAM другого процесса; подтвердите через system_stats.

comfyui_logs

lines=60, grep=""

Отдаёт последние строки собственного лога ComfyUI, где сбои сами себя объясняют: трейсбек внутри узла, OOM, кастомный узел, не импортировавшийся при запуске (и именно поэтому его класс отсутствует в object_info).

Промпты: comfy_loop (полный автономный метод) и comfy_skill (компактный навык) — оба подаются дословно из markdown репозитория, плюс comfy_install — рецепт начальной настройки, сгенерированный под машину, на которой работает сервер: установка, если она уже есть; интерпретатор, из которого собирать venv (собственный интерпретатор сервера, так что Python никогда не является обязательным условием для решения задачи); наличие comfy-cli и git; и сборка torch, которая действительно нужна ускорителю этой машины (CUDA / ROCm / MPS / нет). Сервер ничего из этого выполнить не может; агент может — и именно к нему это обращено. Ресурсы: comfyui://object_info (актуальный полный дамп), comfyui://loop-method, comfyui://skill.


Посмотрите, как цикл работает в действии

Полностью выполнен через этот MCP-сервер на реальном ComfyUI (RTX 4090, SD1.5), бриф: "чёткое, резко сфокусированное студийное макрофото одного красного яблока на тёплом деревянном столе, тонкая текстура кожицы, богатая детализация". Сид зафиксирован на 42, так что каждый проход меняет ровно одну ручку, и эффект можно приписать именно ей. Объективная метрика — дисперсия лапласиана (стандартная мера резкости/фокуса).

Пять проходов цикла слева направо: мягкое плоское яблоко становится чётким, насыщенным, с богатой текстурой

Проход

Одно изменение

Резкость (varLap)

Вердикт на глаз

1

базовый — 6 steps, cfg 2.5

425

Мягкое, плоское, матовое. Самое слабое.

2

steps 6 → 24

1204

Резче — но высокое число объясняется текстурой дерева, кожица яблока всё ещё пластиковая.

3

cfg 2.5 → 7.5

515

Яблоко становится насыщеннее (цветастее, на кожице крапинки) — метрика падает, потому что фон смягчился.

4

euler → dpmpp_2m + karras

740

Победитель. Чёткий блик, видны лентицели, правдоподобное дерево.

5

steps 24 → 36

661

≈ проход 4. Убывающая отдача → стоп.

Урок, на котором построен цикл, зафиксирован вживую: метрика достигла пика на проходе 2, но проход 2 — не лучшее изображение — его оценка оказалась завышена из‑за фоновой текстуры, а не из‑за деталей яблока. Победитель (проход 4) был выбран взглядом. Зелёное число — валидное, а не верное. (example_apple.png — это результат прохода 4.)

…и вторая половина: когда ошибается модель

Яблоко показывает, почему нельзя слепо доверять метрике. Этот запуск показывает, почему нельзя слепо доверять модели — а это и есть вся причина, по которой храповик это инструмент, а не пометка в промпте.

Задача: «бесшовная тайловая текстура брусчатки — без видимого шва на стыке краёв», с объективным контролем (measure_image → tile_seam). Сид одинаковый на всех проходах, так что каждый проход меняет ровно одну вещь. Каждая текстура ниже размножена 2×2 — шву совершенно негде спрятаться.

Три прохода, размноженные 2×2: базовый вариант со швами, циклический тайлинг устраняет швы, x_only возвращает шов и откатывается

Проход

Одно изменение

tile_seam

Храповик

1

базовый SDXL

h 1.77 · v 1.23 → пограничный

оставлен (первый)

2

SeamlessTile + MakeCircularVAE

h 0.78 · v 1.12 → бесшовно

НОВЫЙ РЕКОРД

3

tiling → x_only

h 1.03 · v 1.56 → швы вернулись

ОТКАТЕН

На проходе 3 модель сообщила loop_record, что результат — "better". Это было не так: x_only тайлит по горизонтали и оставляет вертикальный стык сломанным — на правом изображении это видно: камни срезаны ровно у горизонтального шва. Объективный показатель пересил заявление, восстановил проход 2 и вернул хороший граф обратно.

Это тот сбой, для предотвращения которого и существует этот сервер: агент, который хочет закончить, назовёт регрессию улучшением. Если бы «лучший результат на данный момент» жил в контексте модели, а не на диске, эта регрессия стала бы финальным ответом.


Установка

Короткая версия: попросите своего агента сделать это. Вставьте это в Claude Code (или любой MCP-клиент с оболочкой) и остановитесь:

Настройте ComfyUI loop MCP из https://github.com/huikku/comfyui-loop-mcp — зарегистрируйте его у моего клиента, а также установите и запустите ComfyUI, если он ещё не запущен.

У него есть всё необходимое, чтобы сделать это без вас: регистрация сервера — это одна команда claude mcp add, а после подключения промпт comfy_install возвращает бутstrap для вашей машины — существующий ComfyUI для запуска, интерпретатор, из которого собрать venv, сборку torch, которая действительно нужна вашей видеокарте, ComfyUI-Manager и место, куда класть модели. Затем check_comfyui называет всё недостающее (нет weightsuous, torch на CPU, нет Manager) как то, что агенту нужно исправить, а не чем-то просто ответственность.

Если вы предпочтёте вставить конфиг, а не читать описания, — сервер запускается прямо из GitHub: ничего не нужно клонировать, ничего не нужно pip install:

{
  "mcpServers": {
    "comfyui": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/huikku/comfyui-loop-mcp", "comfyui-loop-mcp"],
      "env": { "COMFYUI_URL": "http://localhost:8188" }
    }
  }
}

Claude Code — одной строкой:

claude mcp add comfyui -- uvx --from git+https://github.com/huikku/comfyui-loop-mcp comfyui-loop-mcp

Склонируйте репозиторий вместо этого, и .mcp.json уже на месте — Claude Code предложит сервер при первом открытии, вообще без команд. После добавления переподключите клиент; MCP-серверы считываются в момент подключения.

Для разработки на нём:

git clone https://github.com/huikku/comfyui-loop-mcp && cd comfyui-loop-mcp
pip install -e .            # or: uv tool install --editable .

Требуется Python ≥ 3.10 и доступный ComfyUI. Устанавливает mcp[cli], httpx, anyio, pillow. Работает с MCP SDK 1.x и 2.x — в 2.0 FastMCP переименован в MCPServer, а хелпер Image перенесён, и сервер импортирует его в любом случае.

Раньше было установлено как comfy-mcp? Это имя принадлежит серверу Comfy-Org на PyPI, поэтому этот сервер теперь называется comfyui-loop-mcp (импортируемый пакет — comfy_loop, команда — comfyui-loop-mcp). Сначала выполните pip uninstall comfy-mcp и обновите конфигурацию MCP-клиента. Уже имеющиеся на диске прогоны цикла находятся автоматически — старый каталог ~/.comfy-mcp/runs продолжает использоваться, пока вы не укажете COMFY_LOOP_STATE_DIR в другом месте.

Всегда активная дисциплина (Claude Code)

Метод также устанавливается как навык, поэтому он загружается по триггерным словам, а не ждёт, пока его попросят — попросите агента сделать это тоже, либо:

mkdir -p ~/.claude/skills/comfyui-workflows
cp comfy_loop/docs/SKILL.md ~/.claude/skills/comfyui-workflows/

Файл используется тот же самый, что раздаёт промпт comfy_skill, так что навык и сервер не могут разойтись.

Конфигурация

Переменная окружения

По умолчанию

Назначение

COMFYUI_URL

http://localhost:8188

Ваш сервер ComfyUI

COMFYUI_ONBOARDING_DIR

корень репозитория над этим пакетом

Каталог, где промпты comfy_loop / comfy_skill читают свою разметку

COMFYUI_TEMPLATES_REF

main

Git-ссылка на Comfy-Org/workflow_templates, которую считывает онлайн-каталог шаблонов

COMFYUI_TEMPLATES_LIVE

не задано

Задайте 1, чтобы получать самый свежий индекс каталога из GitHub вместо встроенного сжатого снимка

COMFY_LOOP_STATE_DIR

~/.comfyui-loop-mcp/runs

Где живут храповик и журнал. Откат к прежнему ~/.comfy-mcp/runs (до переименования), если запуски циклов уже там

Подключение к удалённому ComfyUI

ComfyUI обычно привязывается к 127.0.0.1, поэтому ComfyUI на другой машине недоступен по сети по умолчанию. Два варианта:

  • SSH-туннель (проще всего, ComfyUI остаётся закрытым): пробросьте порт и оставьте COMFYUI_URL на localhost:

    ssh -N -L 8188:localhost:8188 your-remote-host
    # COMFYUI_URL stays http://localhost:8188
  • Привяжите ComfyUI к сети и указывайтесь на него напрямую (делайте это только в доверительной сети — это открывает API без аутентификации):

    python main.py --listen 0.0.0.0 --port 8188
    # COMFYUI_URL=http://<remote-ip>:8188

Использование

  1. В вашем агенте загрузите промпт comfy_loop (или позвольте ему прочитать ресурс comfyui://loop-method), чтобы подтянуть полный метод. Если ваш клиент внедряет инструкции сервера, политика «предпочитать цикл» уже активна.

  2. Поставьте цель. Потом он выполнит check_comfyui → list_nodes / get_node / list_models → построит JSON-схему API → submit_workflow → get_result → get_image, затем будет критиковать и повторять — по одному изменению за проход — пока не сможет назвать ни одного дефекта, после чего представит результат на утверждение.

Устранение неполадок

  • «ComfyUI is NOT reachable» — ответ — это набор инструкций, а не жалоба, но они адресованы агенту, у которого есть оболочка, которой у этого сервера нет: агент ищет ComfyUI на этой машине ($COMFYUI_PATH, рабочую область comfy-cli, ~/ComfyUI, ~/comfy, ~/code, ~/github, /opt) и либо возвращает команду запуска с использованием собственного venv-python этой установки, либо, если установки нет, дает последовательность клонирование + venv + Manager + запуск. Если COMFYUI_URL — удалённый, он намеренно не предлагает установить всё локально — от этого просто останется второй, лишний ComfyUI на той машине, — а вместо этого выдаёт SSH-туннель. Такой ответ возвращает каждый инструмент, а не только check_comfyui; совет приложен на транспортном уровне.

  • «Node/model not found» — установите пак/модель на стороне ComfyUI, затем перезапустите ComfyUI, чтобы /object_info увидел его (до этого момента API устаревший).

  • get_image returns nothing — убедитесь, что в графе есть узел SaveImage / PreviewImage; get_result перечисляет то, что было реально создано.

  • install_node_pack заблокирован / ничего не делает — инструментам установки нужен ComfyUI-Manager на хосте, и уровень безопасности Manager должен разрешать установку через API. После установки restart_comfyui обязателен, чтобы /object_info показал новые узлы.

  • find_missing_nodes выбирает «не тот» пак — несколько паков могут экспортировать узел с одинаковым именем; при совпадении берётся первый найденный в реестре. Если установка не даёт нужный класс, проверьте выбранный пак и установите явно правильный.

Лицензия

MIT.

Available Tools

32 tools
check_comfyuiA

Confirm ComfyUI is up and reachable (loop step 0).

Returns the installed-node count and device/VRAM. If this fails, ComfyUI isn't running or is on another port — do not start guessing node names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool checks connectivity and returns node count and device/VRAM. It also warns about failure implications. No annotations exist, so the description carries the full burden, but it omits potential side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose and immediately provide failure guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an existing output schema, the description fully covers the tool's behavior, including its role in a loop, return data, and failure implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 applies. The description adds value by explaining the return values (installed-node count, device/VRAM) beyond the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'confirm' and resource 'ComfyUI reachability', clearly stating the tool's purpose as a connectivity check. It distinguishes from sibling tools like 'system_stats' by focusing on reachability and loop integration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance: use for initial connectivity check, and if it fails, do not guess node names. However, it does not explicitly contrast with other tools like 'system_stats' or 'get_node' for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_imagesA

See what changed between two passes (loop step 3: LOOK — the comparison).

mode="side_by_side": both outputs on one canvas — what moved, at a glance. mode="difference": 0.5 + 0.5*(a-b) — identical regions read FLAT MID-GRAY and only real changes pop. This is how you answer "did the background actually stay put?", which the eye is bad at. Raise amplify (e.g. 4.0) to surface subtle drift.

Use it every pass against your best-so-far: a change that altered more than you intended is a regression even if the new bit looks nice.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoside_by_side
amplifyNo
filename_aYes
filename_bYes
subfolder_aNo
subfolder_bNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description details both modes (side_by_side layout, difference formula with visual result) and the amplify parameter effect. Does not explicitly state it is read-only but implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, uses bullet-like structure. Somewhat lengthy but each part adds value; could tighten file parameter explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 6 parameters, the description covers key behavioral details (mode, amplify, use case) but omits file parameter semantics and return value information, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. Explains mode and amplify well (2 of 6 parameters), but leaves filename_a, filename_b, subfolder_a, subfolder_b undocumented. Partial coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares two images ('See what changed between two passes') and ties it to a loop step, distinguishing it from siblings like image_diff_stats (numerical stats) and get_image (retrieve).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides practical guidance: use every pass against your best-so-far, and explains when to use each mode. Lacks explicit when-not-to-use or alternative tools, but context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_missing_nodesA

Diff a template's nodes against what's installed, and resolve each missing node to the pack that provides it (via ComfyUI-Manager's registry mapping).

Fetches the template (same args as get_template), lists the node classes it uses, subtracts what /object_info already has, and for each missing class reports the installable pack id to pass to install_node_pack. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
packNo
sourceNoonline

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries the behavioral disclosure burden. It explicitly declares the tool is 'Read-only' and details the steps: fetches template, lists node classes, subtracts what's installed, and reports missing nodes with pack IDs. This provides full transparency about inputs, process, and outputs without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two clear paragraphs: the first states the core purpose, and the second elaborates the process. Every sentence adds value without fluff. It is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has an output schema (not shown but indicated), the description does not need to detail return values. It covers the tool's purpose, process, and relation to siblings. It explains dependencies (template, object_info, registry mapping). The only gap is parameter documentation, which is evaluated separately. Overall, it provides sufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage. The description only mentions 'same args as get_template', which adds minimal context by referencing another tool but does not explain the meaning or usage of the individual parameters (name, pack, source). This is insufficient for an agent to understand parameter semantics without external knowledge.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Diff a template's nodes against what's installed, and resolve each missing node to the pack that provides it'. It specifies the action (diff and resolve) and resource (template nodes vs installed). This distinguishes it from siblings like get_template (fetches template) and install_node_pack (installs packs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it uses the same args as get_template, implying it should be used after fetching a template and before installing missing nodes with install_node_pack. It notes the process of subtracting installed nodes, guiding usage context. However, it does not explicitly state when not to use it or mention alternatives beyond referencing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flowzip_to_apiA

Convert FlowZip (or litegraph) into API/prompt format ready for submit_workflow.

Inflates FlowZip if needed, then maps the litegraph to the flat API graph using the live object_info (resolves links, maps widget values to named inputs). This is the bridge for authoring/adapting graphs compactly and running them.

Best-effort: subgraph instances and unknown nodes are skipped and reported; widget drift between an old template and a newer node shows up as a node_errors when you submit_workflow the result — read it, fix that node, re-submit. Review the API graph before running.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowzipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It details the transformation process (inflating, mapping, resolving links) and discloses limitations (best-effort, skipped subgraphs, widget drift leading to errors). However, it does not explicitly state whether the operation is read-only or has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and each sentence adds value without redundancy. It efficiently conveys the tool's function, best-effort nature, and post-processing advice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description need not explain return values. It covers the conversion process, edge cases (skipped nodes, widget drift), and provides guidance. It is reasonably complete for a converter tool, though it could mention prerequisites like live object_info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage for the single parameter 'flowzip', so the description must compensate. It explains that the parameter is a FlowZip or litegraph and can be inflated, which adds meaning beyond the empty schema. However, it lacks details on format, encoding, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb 'Convert' and specifies the resource 'FlowZip (or litegraph)' with a target format 'API/prompt format ready for submit_workflow'. It distinguishes itself from siblings like inflate_workflow and submit_workflow by describing its bridging role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states that this tool is intended for authoring/adapting graphs compactly and as a step before submitting workflows. It provides guidance on handling errors ('review the API graph before running') but does not explicitly compare to alternatives or specify when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_imageB

Fetch a rendered output so you can LOOK at it (loop step 3: LOOK — part 2).

Returns the actual image to the model. This is the step that makes the loop work: don't declare a workflow done off a green run — view the pixels, judge them against the brief, then change one thing and re-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
subfolderNo
image_typeNooutput

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns the actual image to the model, implying a read-only retrieval. Since no annotations are provided, the description carries the full burden for behavioral disclosure. While adequate for the core behavior, it omits potential side effects (e.g., does it consume the image? is there caching?) and does not address authentication or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two paragraphs with some repetition (e.g., 'loop step 3: LOOK — part 2' revisited). It could be more concise by merging the first sentence and the loop context. Overall, it is somewhat verbose for the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters with no schema descriptions and no output schema, the description leaves significant gaps: it does not explain which parameter is required (filename), what format identifiers take, or what the response contains. For a tool that returns binary image data, the absence of error handling or type hints is a deficiency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides zero information about the three parameters (filename, subfolder, image_type). With 0% schema description coverage, the description must compensate but fails entirely. The agent receives no guidance on how to specify which image to fetch, making correct invocation difficult.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a rendered output image for visual inspection, using active verbs like 'Fetch' and 'LOOK'. It distinguishes itself from siblings by embedding the tool in a loop workflow (step 3: LOOK), though it does not explicitly compare with similar tools like 'compare_images'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: this is part of a loop where the agent should view pixels and judge against the brief before re-running. It advises against declaring workflow done based on a green run alone. However, it lacks explicit when-not-to-use or mention of alternatives like 'compare_images' for comparison tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nodeD
ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo
class_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_queueA

Show what's running and pending in ComfyUI's execution queue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Note is a read operation, no params, output schema exists. Description does not explicitly confirm read-only nature or mention side effects, but tone suggests no destructive actions. Adequate given simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear subject and action. No extraneous information. Front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and presence of output schema, description is complete enough. No additional details needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. Description adds nothing beyond schema, but baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool shows running and pending items in ComfyUI's execution queue. Verb 'show' and resource 'execution queue' are specific. Distinguishes from siblings like 'submit_workflow' and 'interrupt'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use when checking queue status but does not explicitly state when to use or compare with alternatives like 'system_stats' or 'check_comfyui'. No exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resultA

Poll /history for a submitted prompt and return its output files (loop step 3: LOOK — part 1, find what was produced).

Blocks up to timeout_s for the run to finish. Returns each output's filename / subfolder / type — feed those to get_image to view the pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_idYes
timeout_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses blocking behavior up to timeout_s and polling, but does not mention error handling, rate limits, idempotency, or whether it's read-only. Basic behavioral info is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with a clarifying note. It is efficient and front-loaded with the core action, though the loop reference adds some extraneous context for a multi-step process.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with two parameters and an output schema, the description covers the core behavior (blocking, output format, follow-up with get_image). It lacks details on error cases or timeout handling, but the output schema likely documents return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description must compensate. It explains timeout_s as the blocking duration, and the prompt_id is implicitly the identifier for the submitted prompt. This adds meaning beyond the schema's titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool polls /history for a submitted prompt and returns output files, specifying the action (poll), resource (history for a prompt), and result (output files). It distinguishes from siblings like get_image (which views pixels) and get_node (which gets node info).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says to use after submitting a prompt, blocks up to timeout_s, and directs to feed outputs to get_image. It implies when to use but does not explicitly state when not to use or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_templateA

Fetch one workflow template as a known-good starting point.

source="online" (default): from the official GitHub catalog — no install needed; pack is ignored. source="installed": from this ComfyUI (pack required).

fmt="flowzip" (default): compact FlowZip text — ~72% fewer tokens than the raw litegraph JSON (median), enough to read/adapt the graph. fmt="json": the full litegraph. Either way it's litegraph, NOT the API/prompt format submit_workflow needs — adapt to API (resolve passthroughs, widgets_values -> named inputs via get_node), or inflate a FlowZip with inflate_workflow. If from the online catalog, first confirm you have its nodes/models — run find_missing_nodes then install_node_pack, or verify with list_nodes/list_models.

ParametersJSON Schema
NameRequiredDescriptionDefault
fmtNoflowzip
nameYes
packNo
sourceNoonline

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description fully carries the burden. Discloses that output is litegraph format (not API), token reduction stats, and that online templates require node/model verification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with front-loaded purpose, then clear bullet-like explanation of parameters and usage context. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, output schema exists, sibling tools like search_templates and run_template), the description is complete. It explains the output format, prerequisites, and next steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description explains all four parameters in detail: name, source (behavior of online vs installed), pack (required for installed), and fmt (flowzip vs json, with token savings). Adds significant meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Fetch', resource 'workflow template', and distinguishes between online and installed sources. Does not explicitly differentiate from sibling 'search_templates' but provides enough context to avoid confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use online vs installed, flowzip vs json, and mentions post-fetch steps like adapting to API format or checking nodes/models via other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_diff_statsA

Quantify the change between two passes — the 'I changed only what I meant to' gate.

Returns mean/max absolute difference and the % of pixels that moved. Pair it with compare_images: the picture tells you WHAT changed, this tells you HOW MUCH — and catches the case where a 'small tweak' quietly rewrote the frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
filename_aYes
filename_bYes
subfolder_aNo
subfolder_bNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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 the return values (statistical metrics) and implies a read-only operation, but does not explicitly state that the tool does not modify files or require special permissions. The warning about catching unintended changes adds some transparency, but more explicit statements about safety and side effects would improve it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with a line break, each sentence adds value. It is front-loaded with the core purpose and includes a memorable phrase ('I changed only what I meant to' gate) that helps recall. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main return values and the relationship with a sibling tool. However, it fails to address how the optional subfolder parameters affect behavior or defaults. Since an output schema exists (not shown), the return structure can be assumed documented, but parameter usage context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the input schema lacks descriptions for all 4 parameters. The description does not mention any parameter names, purposes, or usage details (e.g., what filename_a and filename_b refer to, or how subfolders work). For a tool with 4 parameters and no schema descriptions, the description must compensate, but it provides zero parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool quantifies change between two image passes, returning mean/max absolute difference and percentage of pixels changed. It differentiates from the sibling CompareImages by explaining that CompareImages shows what changed while this tool shows how much, and it warns about detecting unintended large changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends pairing with compare_images and explains the complementary roles (what vs. how much). It does not provide explicit when-not-to-use scenarios, but the context is sufficiently clear for an AI agent to decide when to invoke this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inflate_workflowA

Expand FlowZip text back into a full litegraph workflow JSON.

Reverse of the FlowZip that get_template returns. Structure (nodes, types, links, widget values) is preserved; cosmetic fields are not. To RUN it, still adapt the litegraph to API/prompt format for submit_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowzipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that structure (nodes, types, links, widget values) is preserved while cosmetic fields are not, clearly detailing behavioral traits beyond schema. Minor omission: no mention of error handling or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: first describes action, second specifies preservation, third gives post-processing steps. No wasted words, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and an existing output schema, the description covers input, behavior, and next steps adequately. Could mention potential errors from invalid flowzip, but overall complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining that 'flowzip' is FlowZip text from get_template. It adds meaning about the parameter's origin and format beyond the schema type string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Expand FlowZip text back into a full litegraph workflow JSON' and distinguishes from siblings like get_template (which produces FlowZip) and flowzip_to_api (which converts to API format). Verb 'expand' and resource 'FlowZip to litegraph JSON' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly indicates it is the reverse of get_template and that the output must be adapted for submit_workflow, providing context on when to use. Could be more explicit about alternatives, but effectively guides the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

install_modelA

Download a model from the catalog by its exact name (from search_models), into the correct models// folder, via ComfyUI-Manager.

Trusted catalog only — Manager whitelists the source. Unlike nodes, models do NOT need a ComfyUI restart (loaders re-scan the folder); once it completes, verify with list_models. Large models can take a while — the download continues server-side even if this call's poll window ends.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, yet description covers key behaviors: no restart needed, async continuation, and trust/whitelist source. Lacks specifics on error handling or permissions, but provides substantial transparency for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no redundancy, front-loaded with the main action. Every sentence adds value: the how, the constraints, and important behavioral notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given existence of output schema (not shown), return values need not be explained. The description covers parameter source, folder destination, async behavior, and verification step. Could mention failure modes, but overall adequate for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'name' with 0% schema description coverage. The description adds crucial semantic context: the name must be an exact catalog name from search_models. This compensates well for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (download/install), the resource (model from catalog), and the destination (models/<type>/ folder). It distinguishes from nodes (no restart needed) and references sibling tool search_models for exact name, making intent and scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells to use exact name from search_models and to verify with list_models after completion. Also warns about large model download times and server-side continuation. Does not explicitly say when not to use, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

install_node_packA

Install a custom-node pack by its ComfyUI-Manager registry id (from find_missing_nodes) — trusted registry only, no arbitrary code.

Queues the install, starts the queue, and polls until done. A ComfyUI RESTART is required afterward before /object_info reflects the new nodes — call restart_comfyui, then re-query. Fails clearly if Manager's security level blocks API installs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pack_idYes
versionNolatest

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the behavior: queues, starts, polls, requires restart, and fails on security blocks. Mentions trust and safety, providing clear expectations for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences plus a brief note; every sentence adds value. Front-loaded with core action and key constraint, then details the process and post-condition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full workflow: queueing, polling, restart requirement, and error handling. Output schema exists, so return value explanation is unnecessary. Complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Explains pack_id as the registry id from find_missing_nodes, but does not clarify the version parameter (its default 'latest' is only in schema). Schema coverage is 0%, so description partially compensates but leaves a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool installs a custom-node pack using its ComfyUI-Manager registry id, specifying the source as 'trusted registry' and referencing find_missing_nodes for the id. Distinguishes from sibling tools like install_model and find_missing_nodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indicates the tool should be used for trusted registry packs, mentions the prerequisite of obtaining the id from find_missing_nodes, and advises a subsequent restart via restart_comfyui. Does not explicitly state when not to use, but the context implies avoidance for arbitrary code.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interruptA

Cancel the currently executing prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description lacks any behavioral details beyond the action itself, such as side effects, reversibility, or state requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the essential information with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and a straightforward purpose, the description is mostly complete. However, it could mention expected state or result beyond the action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist (schema coverage 100%), so the description does not need to add parameter information. Baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool cancels the currently executing prompt, specifying the action and target. It distinguishes from sibling tools like 'submit_workflow' or 'loop_start'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies using the tool to stop execution, but does not explicitly state when not to use it or provide alternatives. Context from siblings suggests a clear use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsA

List the real model files a loader offers (loop step: never hallucinate a checkpoint/LoRA/VAE filename).

Reads the loader's enum from object_info (handles both the legacy list and the newer COMBO encoding). If input_name is omitted, reports every enum-typed input on the node. Pick ONLY from the returned list.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYes
input_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses how the tool works: it reads the loader's enum from object_info, handles both legacy list and COMBO encoding, and reports every enum-typed input if input_name is omitted. This provides good transparency, though it could mention the output format (which is covered by output schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct yet informative: a single sentence for purpose, then technical details, then usage warning. Every sentence adds value without repetition. It is well-structured and easy to read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description provides sufficient context: purpose, technical behavior, parameter guidance, and a caution. An output schema exists to cover return values. It could include an example or mention of expected response, but overall it is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It explains the effect of omitting input_name (reports all enum-typed inputs) and implies that class_name identifies the loader. However, it does not fully describe class_name, and the description is incomplete for the class_name parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List the real model files a loader offers'. It specifies the resource (model files) and action (list), and adds context about avoiding hallucination. This differentiates it from sibling tools like search_models (which searches) and install_model (which installs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'never hallucinate a checkpoint/LoRA/VAE filename' and 'Pick ONLY from the returned list'. It explains when input_name can be omitted to get all enum-typed inputs. However, it does not explicitly mention when not to use this tool or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_nodesA

Search installed nodes by keyword (loop step: discover, don't guess).

Matches the keyword against BOTH the class name and the display name, so a node found by its UI label ("Load Image") still turns up. Returns class_name -> display_name. Class names are case-sensitive and differ from display names — use the class_name in workflow JSON. Omit keyword to get the total count only (the full list is large).

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description fully discloses behavior: dual matching, case sensitivity, display name vs class name distinction, count-only mode when keyword omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with main purpose, every sentence adds value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one optional parameter and an output schema, the description covers input behavior, return format, and edge cases (omitting keyword). Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description explains the 'keyword' parameter meaning and behavior (optional, default empty, count mode). Adds significant value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Search installed nodes by keyword' and distinguishes from siblings like 'get_node' and 'find_missing_nodes'. Specifies matching against class and display names, and returns a mapping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context for usage: keyword search, and omitting keyword for count. Does not explicitly list when not to use, but sibling differentiation is implied by description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_bestA

Fetch the best-so-far graph — to revert to it, or to deliver it as the final.

Use this after a compaction, or any time you're unsure the graph in your context is still the best one. It is the source of truth; your memory is not.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the tool as the 'source of truth' implying authority and reliability, but does not disclose side effects or read-only nature given no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no waste: purpose, when to use, and a behavioral trait. Excellent front-loading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description adequately covers purpose and usage, though it could mention the return value type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds no meaning to the `run_id` parameter beyond the schema's title 'Run Id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches the best-so-far graph for reverting or delivery. However, it does not differentiate from sibling loop tools like loop_finish or loop_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends use after compaction or when unsure about the current graph's validity. Lacks a direct 'when not to use' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_finishA

Close the loop at the convergence checkpoint — you can't name a defect anymore.

Marks the run converged and returns the final ledger + the best graph, ready to present. Then STOP and ask the user to approve or request changes; don't keep inventing variations to avoid stopping.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
summaryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: it closes the loop, marks convergence, returns final ledger and best graph, and instructs the agent to stop. No contradictory or missing behavioral aspects are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the main action, and contains no extraneous words. Every sentence is meaningful and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description need not explain return values. It covers purpose, guidelines, and behavior well. However, the lack of parameter documentation is a gap, slightly reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the parameters 'run_id' or 'summary'. It fails to add meaning beyond the input schema, which is critical given the low coverage. The agent must guess the purpose of these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'close the loop' and the resource 'convergence checkpoint', and explains that it marks the run as converged and returns the final ledger and best graph. This distinguishes it from sibling tools like loop_start and loop_record, which are for earlier stages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: after convergence, stop and ask for user approval. It warns against continuing to invent variations, which is a clear when-not-to-use instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_ledgerA

The append-only loop log: every pass, what changed, what it did.

Read it after a context compaction to recover the thread — what the brief was, what's already been tried (so you don't retry a dead end), and which pass is best. This is also the log you hand the user at sign-off; it's the story of how the result got good.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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 describes the tool as read-only ('append-only', 'read it') and discloses the content: what changed, what it did. It also explains behavioral context (recover thread, avoid retries, best pass). This provides sufficient transparency for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (three sentences) and front-loaded with the core purpose. Each sentence adds value: stating it is append-only, describing its contents, and listing use cases. There is no wasted text, though the parameter is entirely unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter) and the presence of an output schema (documenting return values), the description adequately covers purpose and usage context. However, the lack of parameter explanation is a notable gap. The description would be complete if it briefly mentioned that run_id identifies the loop session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, run_id, has no schema description (0% coverage) and the tool description does not explain what run_id represents or how to obtain it. The description focuses on the tool's output and usage context, not the input parameter. This leaves the agent without guidance on what value to provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is an append-only loop log that records each pass, what changed, and what it did. It specifies the purpose: read after context compaction to recover thread, avoid retrying dead ends, determine best pass, and provide user sign-off. This distinguishes it from sibling tools like loop_record (which likely records) and loop_report (which likely summarizes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Read it after a context compaction to recover the thread' and 'hand to user at sign-off'. It implies it is for reading only, but does not explicitly mention when not to use it or alternatives. The purpose is clear enough that usage context is well-understood.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_recordA

Record a pass and apply the ratchet (loop step 5: DECIDE).

change the ONE thing you changed this pass ("denoise 0.6 -> 0.45"). outcome your verdict vs the best-so-far: "better" | "worse" | "same". graph the API graph you just ran — REQUIRED when outcome is "better", because that's what gets stored as the new best and handed back on a revert. score an objective score from measure_image, when the brief has a gate. If both this pass and the best have one, the NUMBER decides — not your verdict. (A model that wants to be finished will call a regression "better".) outputs this pass's output files, straight from get_result — pass them through so loop_report can show what each pass actually looked like.

On "worse"/"same" you get the best graph back: revert to it and try a DIFFERENT change. Never build on a regression — that's how a loop wanders instead of converging.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
graphNo
scoreNo
changeYes
run_idYes
outcomeYes
outputsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It explains the revert behavior on 'worse'/'same,' the requirement for graph with 'better,' and the role of score. It also mentions passing outputs for loop_report. However, it does not explicitly describe side effects or error handling, but the key behaviors are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat lengthy but well-structured, with bullet points for parameters and clear explanations. It front-loads the purpose. Minor redundancy (e.g., 'Never build on a regression' is reiterated) could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (7 parameters, loop context) and the presence of an output schema, the description covers the essential aspects: input parameter behavior, decision logic, and the revert mechanism. It does not detail return format, but the output schema likely handles that. The description is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning for each parameter. It explains 'change' as the modification made, 'outcome' as verdict vs best-so-far, 'graph' as required when outcome is 'better,' 'score' as an objective measure for gates, 'outputs' as files for loop_report, and 'note' and 'run_id' implicitly. This provides significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Record a pass and apply the ratchet (loop step 5: DECIDE).' It specifies the verb 'Record a pass and apply the ratchet' and the resource 'loop step 5.' The purpose is distinct from sibling tools like loop_start, loop_best, loop_finish, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when and how to use the tool. It explains that on 'worse' or 'same' outcomes, the best graph is returned and a different change should be tried. It also notes that graph is required when outcome is 'better,' and explains the role of score in decision-making. This distinguishes usage from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_reportA

Render the whole run as ONE self-contained HTML page — every pass, what changed, what was kept, what was reverted, and the final.

This is the artifact worth keeping. The final image alone proves nothing; the evidence of convergence — the passes you threw away — is what shows the loop actually worked. Hand it over at the sign-off checkpoint alongside the result.

Images are downscaled and base64-inlined, so the page renders with ComfyUI off, on someone else's machine, or emailed. Writes next to the run state by default; set out_path to put it anywhere.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
out_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description solely discloses key behaviors: images are downscaled and base64-inlined, the page can render offline or via email, and output is written next to the run state by default with optional out_path. This covers important traits beyond the schema, though permissions or performance are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it starts with the primary purpose, explains why this artifact is important, then provides technical details about image handling and output location. Every sentence adds value without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (though not shown), the description need not explain return values. It covers the tool's purpose, usage, output format, and file location. However, it does not indicate whether the result is a success message or status, which might be useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description explains that out_path can be set to place the report anywhere, adding meaning beyond the schema's default string type. The run_id parameter is implied by context (the run to report), but no explicit description is given. This is adequate but not rich.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders the entire run as a self-contained HTML page, detailing what changed, was kept, reverted, and final. This is specific to generating a final report, distinguishing it from siblings like loop_best or loop_record which handle other aspects of the loop workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: at the sign-off checkpoint alongside the result, emphasizing the artifact's value as evidence of convergence. However, it does not explicitly state when not to use it or reference alternative tools, though the purpose is sufficiently distinct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loop_startA

Open a loop run — do this BEFORE the first submit (loop step 0).

brief is what "right" means, in the user's words; you'll be judged against it. gate is the objective test IF the brief has one ("must tile seamlessly", "exactly 3 apples", "identity preserved") — leave empty for purely aesthetic work.

Returns a run_id. Pass it to loop_record every pass. This is what makes the ratchet real: your best graph is stored HERE, not in your context, so it survives compaction and can actually be reverted to.

ParametersJSON Schema
NameRequiredDescriptionDefault
gateNo
briefYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description covers key behavioral traits: returns run_id, stores best graph externally for persistence across compaction, enables reversion. Does not mention authorization or rate limits, but adequate for a start tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three paragraphs with clear structure: imperative instruction, parameter explanations, return value and significance. Concise but could be slightly tighter; no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully covers purpose, usage timing, parameter semantics, return value (run_id), and behavioral significance. Output schema exists but description adds value beyond it. Complete for a start tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 2 params with 0% description coverage, but description adds substantive meaning: 'brief is what right means' and 'gate is the objective test'. Compensates for lack of schema-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it opens a loop run, with specific verb+resource ('Open a loop run'). Distinguishes from sibling tools like loop_record, loop_best, etc. by explaining this is step 0.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit timing instruction: 'do this BEFORE the first submit'. Explains when to use 'gate' (if brief has objective test) vs leave empty. Does not explicitly mention when not to use, but context of siblings provides differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_imageA

Score an output objectively, for the ratchet (metric: sharpness | tile_seam | brightness).

Use ONLY where the brief has an objective test — then feed the score to loop_record so the ratchet can't be fooled by a model that wants to be done:

tile_seam "seamless texture" — compares the wrap-around join to an interior join. ~1.0 = genuinely tiles; >2 = a real seam. The eye waves this through. sharpness "upscale/restore, add detail" — edge energy. Rises with real detail, falls when a pass just softened the image. Compare ACROSS passes. brightness mean / stddev / p99 — exposure and blown-highlight checks.

A score is not the judgement. A graph with a great number can still look wrong — gate on the metric, decide with your eyes.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNosharpness
filenameYes
subfolderNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains what each metric measures (e.g., tile_seam compares wrap-around join to interior join). However, it does not explicitly state if the tool is read-only or if it requires specific permissions, though this is implied by its measurement nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise but uses line breaks and dashes that may not render well in all contexts. It is front-loaded with the main purpose, and each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not described) and no annotations, the description covers the main use case well. However, it does not mention the return type or output schema, and lacks explanation of 'objective test'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only adds context for the metric parameter by listing values and meanings. It does not explain the filename or subfolder parameters, leaving them solely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Score an output objectively' for specific metrics (sharpness, tile_seam, brightness). It distinguishes itself from siblings by focusing on objective measurement for the ratchet system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use ONLY where the brief has an objective test' and advises feeding scores to loop_record. Also warns that 'A score is not the judgement' and to use eyes, providing clear context and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_comfyuiA

Restart ComfyUI (via ComfyUI-Manager) so newly installed nodes register in /object_info. The server is briefly unavailable; poll check_comfyui after.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses that server is briefly unavailable and recommends polling check_comfyui. Adequately transparent for a restart operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and context, no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and existing output schema, description covers why, side effect, and follow-up. Could mention output schema content but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, baseline is 4. No additional parameter info needed, description handles purpose and behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Restart ComfyUI', a specific verb+resource, and explains the purpose: to register newly installed nodes in /object_info. Differentiates from siblings like check_comfyui and install_node_pack.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage after installing nodes to register them, and explicitly tells agent to poll check_comfyui after restart. No explicit when-not-to-use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_templateA

Run a known-good template with input overrides — WITHOUT loading the graph into context. Fetches the template, converts to API format, applies overrides, and submits. Use template_slots first to see what you can override.

overrides: {node_id: {input_name: value}} (node ids and inputs from template_slots). After it runs, call get_result then get_image and LOOK — a green run is valid, not correct.

Limitation: subgraph templates can't be expanded (converter coverage ~88% of non-subgraph nodes); if nodes are skipped it's reported and the run may be incomplete. Confirm the template's nodes/models exist first (find_missing_nodes).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
packNo
sourceNoonline
client_idNocomfy-mcp
overridesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It details the internal steps (fetch, convert, apply overrides, submit), discloses the converter coverage (~88%) and that skipped nodes are reported. It does not explicitly state whether the operation is read-only or modifies state, but the context implies it executes a run (non-destructive). Overall, good behavioral disclosure beyond the missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise and well-structured: purpose, usage, overrides format, post-run steps, and limitations. Minor informal phrasing ('LOOK') but adds clarity. Could be slightly tighter, but effectively communicates essential information without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (context signal), the description does not need to detail return values. It provides sufficient context: prerequisites (template_slots, find_missing_nodes), the process, limitations (subgraph, converter coverage), and post-run actions. Lacks explanation of 'pack' and 'source' but defaults are provided. Reasonably complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the 'overrides' parameter in detail (format: {node_id: {input_name: value}} and source from template_slots). However, it does not explain 'pack', 'source', or 'client_id' beyond default values. While overrides is the most complex parameter, the lack of explanation for others reduces the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Run a known-good template with input overrides') and resource ('template'), distinguishing it from siblings like 'submit_workflow' and 'get_template'. It emphasizes the key differentiator: 'WITHOUT loading the graph into context.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to use 'template_slots' first for overrides, and after execution to call 'get_result' then 'get_image' (with a caveat about interpreting results). Also recommends confirming node/model existence with 'find_missing_nodes', and notes the limitation with subgraph templates. Provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_workflowA

Convert an API graph to UI/litegraph format so a human can open and edit it.

The loop builds API format because that's what /prompt runs — it is NOT the file you drag onto the ComfyUI canvas. Call this when the user asks for the editable workflow.

The result is VERIFIED by converting it back to API format and diffing against what you passed in; any mismatch is reported. widgets_values is positional and a silent off-by-one shifts parameters — a plausible-but-wrong file is worse than none, so if the round-trip doesn't match, fix it before shipping it.

With save=True and a name, it's written to ComfyUI's workflows dir so it shows up in the UI's workflow list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
saveNo
workflowYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses verification via round-trip diffing, warns about silent off-by-one in widgets_values, and explains that mismatches are reported and should be fixed. Also describes save behavior comprehensively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (about 90 words) yet thorough. Each sentence adds value, front-loading the primary purpose and then covering verification, warnings, and save behavior without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity and the presence of an output schema, the description covers all necessary behavioral details: purpose, when to call, verification mechanism, edge case warnings, and persistence. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaning: workflow is the API graph, name and save control persisting the file. It explains the role of each parameter beyond the schema, compensating for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Convert an API graph to UI/litegraph format so a human can open and edit it.' It specifies the verb 'convert' and resource, and distinguishes from sibling tools by noting that the loop builds API format and this tool is for the editable format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this when the user asks for the editable workflow.' It also implies when not to use it (the loop builds API format) and explains the save behavior. Additionally, it provides guidance on handling widgets_values positional off-by-one errors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_modelsA

Search the downloadable model catalog — find checkpoints/LoRAs/VAEs/ controlnets/upscalers you may NOT have installed yet (the local equivalent of the cloud's model search). Reads ComfyUI-Manager's model list; each result shows whether it's already installed on THIS box.

Filter by keyword (name/filename/base/description) and optional model_type (checkpoint, lora, vae, controlnet, upscale, clip, diffusion_model, ...). Install one with install_model(name). Requires ComfyUI-Manager on the host.

This is a catalog of known models; list_models shows what a specific loader currently offers on disk (ground truth). Discover here, then verify against list_models after installing.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNo
model_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it reads ComfyUI-Manager's model list, shows installation status, and requires the add-on; no obvious undisclosed behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, efficient but slightly lengthy; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, parameters, prerequisites, and sibling relationship; output schema exists but not described, acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, description explains keyword filters (name/filename/base/description) and model_type with examples, compensating well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it searches a downloadable model catalog for models not yet installed, lists specific model types (checkpoints, LoRAs, etc.), and distinguishes from list_models.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly when to use (discover models) vs list_models (verify installation), and states prerequisite (ComfyUI-Manager).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_templatesA

Search known-good workflow templates to adapt (few-shot beats zero-shot).

source="online" (default): the OFFICIAL open catalog on GitHub (Comfy-Org/workflow_templates) — the same ~550-template set the Cloud MCP's search is built from. You do NOT need these installed; they're browsed straight from the repo. Matches keyword against name + title + description.

source="installed": only templates on THIS ComfyUI right now (/api/workflow_templates — every installed pack's example workflows). Smaller, but guaranteed runnable on your install without adding anything.

Then fetch one with get_template. Note an online template may reference nodes/ models you haven't installed — reconcile against object_info before running.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoonline
keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It transparently describes that online templates may reference missing nodes/models and that installation is not required for browsing. However, it does not explicitly confirm non-destructive behavior, though implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with multiple focused sentences—no wasted words. It front-loads the purpose and then details the sources. Could be slightly more compact, but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown), the description fully covers tool behavior, parameter semantics, usage guidance, and limitations. It is complete for a search tool with two simple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully compensates by explaining the 'source' parameter options (online vs installed) and their meaning, and that 'keyword' matches against name+title+description. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it searches workflow templates from two distinct sources, with a clear verb ('search') and resource. It also distinguishes itself from sibling 'get_template' by positioning it as a follow-up step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use each source: 'online' for the official catalog (browsed without installation) and 'installed' for guaranteed runnable templates. Advises to fetch with get_template and reconcile against object_info for online templates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_workflowA

Queue an API-format workflow for execution (loop step 2: RUN).

workflow is the flat API/prompt-format dict: {node_id: {class_type, inputs}}. Do NOT pass litegraph/UI format here.

On success: returns the prompt_id — then call get_result to fetch outputs and get_image to LOOK at them. Running with zero errors means the graph is VALID, not CORRECT — you still have to inspect the pixels. On failure: returns node_errors keyed by node id. That is NOT an iteration — read the error, fix that specific node, and re-submit until it executes.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYes
client_idNocomfy-mcp

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully compensates. Details both success (returns prompt_id) and failure (node_errors) outcomes. Explains that zero errors means graph is VALID but not CORRECT, requiring pixel inspection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with purpose, uses bullet-like structure for failure handling. Every sentence adds value; no filler. Efficiently conveys complex information in a compact form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Completely covers usage context within a workflow system, referencing necessary post-execution steps and sibling tools. Output schema exists, so return values need not be described. All essential behavioral aspects are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage; description adds critical meaning for 'workflow' parameter (flat API dict format). 'client_id' is not elaborated but has a default. Description greatly enhances understanding of the primary parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool queues an API-format workflow for execution (loop step 2: RUN). Specifies the input format as flat API/prompt-format dict, distinguishing it from litegraph/UI format. Action and resource are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: on success call get_result/get_image, on failure read node_errors and fix specific node. Also warns against passing wrong format. Clearly differentiates from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_statsA

Report device / VRAM usage — useful when tuning resolution/batch or after an OOM.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description fully carries behavioral disclosure. 'Report' implies read-only, no side effects mentioned. Transparent enough for a monitoring tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no wasted words. Highly concise and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema (unknown richness). Description covers purpose and usage scenarios completely for a simple stat reporter. Could add more detail on output format but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; description adds no param info beyond schema, but baseline for 0 params is 4. Schema coverage is 100%, so no gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it reports device/VRAM usage, provides specific use cases (tuning resolution/batch, after OOM). Distinguishes from 30+ sibling tools as the only system stats reporter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions when to use (tuning, after OOM), giving clear context. No explicit when-not-to-use or alternatives, but context is sufficient for the tool's scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_slotsA

List a template's overridable inputs WITHOUT loading the full graph JSON.

Converts the template to API format and reports each node's literal (non-wired) inputs and current values — the curated parameter list you can change with run_template. Far smaller than the raw graph. Subgraph/unknown nodes can't be expanded and are reported (their inputs aren't overridable this way).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
packNo
sourceNoonline

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses conversion to API format, reports literal inputs and current values, and identifies limitations for subgraph/unknown nodes. However, it does not mention potential side effects, authentication needs, or rate limits, missing some behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary purpose. Each sentence adds value: first sentence states core function, second explains process, third details boundaries. No redundancy or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description explains output and limitations well, it completely omits parameter semantics. Given zero schema coverage, this omission makes the tool's input interface opaque. An output schema exists (not provided), so return values are not required, but parameter documentation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description fails to explain any of the three parameters ('name', 'pack', 'source'). The description focuses entirely on output behavior, leaving parameter meaning undefined. This is a critical gap for agent invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear verb ('List') and resource ('a template's overridable inputs'), immediately stating the tool's core function. It distinguishes itself from siblings like 'get_template' by emphasizing it avoids loading full graph JSON, and explicitly links to 'run_template' for subsequent parameter changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool ('without loading the full graph JSON', 'far smaller than the raw graph') and when not to use it ('Subgraph/unknown nodes can't be expanded', 'their inputs aren't overridable this way'). It also names the sibling 'run_template' as the next step, providing clear contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_imageA

Upload a local image into ComfyUI's input/ dir so a LoadImage node can use it.

Returns the name to reference in the workflow. (Video nodes like VHS_LoadVideo* read files you place directly in ComfyUI's input/ dir instead.)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It reveals the upload destination and return value, but lacks details on overwrite behavior (default true) and any limitations. Still reasonably transparent for a simple file upload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: two sentences with a parenthetical note. Front-loaded with purpose, no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low param coverage and no output schema details, the description covers the core use case but misses parameter explanations. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It implies 'path' is the local file path but does not explicitly define either parameter, especially 'overwrite'. This is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Upload' and the resource 'local image into ComfyUI's input/ dir', and specifies the purpose: so a LoadImage node can use it. It also mentions the return value, making it distinct from sibling tools like 'get_image' or 'install_model'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool (for LoadImage node) and when not to (for VHS_LoadVideo* nodes, which read files placed directly in the directory). This provides clear context and 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.

  1. 32 tool updatesv0.2.0
    • First observedcheck_comfyui
    • First observedcompare_images
    • First observedfind_missing_nodes
    • First observedflowzip_to_api
    • First observedget_image
    • First observedget_node
    • First observedget_queue
    • First observedget_result
    • First observedget_template
    • First observedimage_diff_stats
    • First observedinflate_workflow
    • First observedinstall_model
    • First observedinstall_node_pack
    • First observedinterrupt
    • First observedlist_models
    • First observedlist_nodes
    • First observedloop_best
    • First observedloop_finish
    • First observedloop_ledger
    • First observedloop_record
    • First observedloop_report
    • First observedloop_start
    • First observedmeasure_image
    • First observedrestart_comfyui
    • First observedrun_template
    • First observedsave_workflow
    • First observedsearch_models
    • First observedsearch_templates
    • First observedsubmit_workflow
    • First observedsystem_stats
    • First observedtemplate_slots
    • First observedupload_image

TDQS

B3.4/5.0

Scored across 32 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but there is minor overlap between compare_images and image_diff_stats (both compare images, though one visual and one statistical) and between get_node (no description) and other tools. Overall, agents can distinguish them.

Naming Consistency5/5

All 32 tools follow a consistent verb_noun pattern with lowercase and underscores (e.g., check_comfyui, find_missing_nodes, loop_start). No mixing of conventions.

Tool Count4/5

32 tools is on the high side, but each tool serves a specific function in the ComfyUI loop workflow, including operations, installation, looping, and evaluation. Could be slightly reduced, but still appropriate for the scope.

Completeness5/5

The tool set covers the entire loop workflow end-to-end: start, run, evaluate, compare, record, finish, plus supporting operations for node/model management and template handling. No obvious gaps for the stated purpose.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers