comfyui-loop-mcp
comfyui-loop-mcp

一个面向你自己的 ComfyUI 的循环感知 MCP 服务器。 它不只是调用 API——它运行整个循环:构建 → 运行 → 查看 → 评审 → 修复, 直到输出真正满足需求。
一个以零 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-prompt,该仓库已不再维护;现在它们保存在这个仓库中。)
与 Comfy 官方 MCP 服务器的对比 — 诚实地讲,本地版和云端版
设计定位:发现 vs. 修复 — 本地工具真正赢/输在哪里,以及北极星
与 Comfy 官方 MCP 服务器的对比
ComfyUI 自带两个官方服务器,而这是与它们并行构建的第三个东西——独立构建,并且从问题的另一端入手。
Comfy-Org/comfy-mcp(首次提交于 2026-07-01,比本仓库晚一天,但先公开)通过 comfy-cli 驱动本地 ComfyUI:每个工具都调用 comfy 二进制文件并解析其 JSON 封装。Comfy Cloud MCP(https://cloud.comfy.org/mcp)是一个远程 HTTP 服务器,在 Comfy 的 GPU 上运行图。两者都由 ComfyUI 团队构建和维护。
这个直接通过 HTTP 与 /prompt 和 /object_info 通信——无需 CLI、无需账户、除了 httpx 之外无需安装任何东西——并将其功能范围投入到图运行之后才开始的那一半工作上。
真正的区别
他们的本地服务器将 ComfyUI 安装视为需要管理的东西:启动它、停止它、回滚到另一个版本、登录、在托管的合作伙伴模型上花费积分、跟踪其日志、保持包更新。这确实比本仓库的功能范围更大,而且这是平台供应商最适合拥有的功能范围——每当 ComfyUI、comfy-cli 或合作伙伴 API 变动时,它也会跟着变动。如果你需要的是驱动和维护我的安装,请使用他们的。
这个将输出视为需要管理的东西——因为那是我们负责的部分。它源于 Alienrobot 自己的生产工作,在那里,一个能运行的图是工作的开始,而不是结束。这里没有任何东西会启动进程或花费积分。相反:将像素返回给模型,将两次运行差异化为一张漂移无处可藏的图像,对需求真正要求的东西进行评分,并将迄今最佳保存在磁盘上,这样压缩的上下文就不会丢失它。那是别人没有的部分——不是因为调用 /view 很难,而是因为"让代理查看,并阻止它在回退的基础上继续构建"是一种纪律,而不是一个端点。
本仓库 | Comfy-Org/comfy-mcp | |
通过……与 ComfyUI 通信 | 其 HTTP API( |
|
额外依赖 | 无( |
|
能看到你未安装的 ComfyUI | 能——URL 可达的任何实例,包括你没有 shell 的机器 | 部分能;某些工具本质上仅限本地 |
查看结果 |
|
|
评判结果 |
| — |
保留最佳结果 |
| — |
探索参数 |
|
|
预检工作流图 |
|
|
子图模板 | 展开并重新接线(保留提升的控件) | 在客户端展开 |
探索的 token 成本 | 紧凑节点表示法(比 | 并非明确目标 |
安装缺失项 | ComfyUI-Manager: | 注册表 |
从零到运行 | 由代理完成: | 告诉你在终端中运行 |
运行 ComfyUI 进程 | 不——仅重启(通过 Manager);代理掌控 shell |
|
托管/合作模型、账户、额度 | 不,刻意如此 |
|
任务控制 |
| 一个 |
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 客户端无法启动一个未运行的服务器,而且将本仓库指向一个你没有 shell 的机器是受支持的场景,不是边缘情况。
restart_comfyui(通过 Manager)是诚实的边界——但"不能"不等于"不会帮忙":代理通常确实有 shell,所以一个不可达的服务器会返回本机的安装/启动命令,并期望代理去执行它们。本服务器和 Comfy-Org 的都不会替你安装 ComfyUI(他们的是让你在终端中运行comfy install);区别在于,这里的指令通过工具调用返回,面向任何能够执行它们的人。工作流保存/分享/作为服务复现。
save_workflow交给你一个经过往返验证的文件。之后它存放在哪里,是你自己的事。
Related MCP server: ComfyPilot
三个 MCP 原语,映射到循环
原语 | 暴露什么 | 循环步骤 |
工具 |
| 发现,而非猜测 |
| 扩展(安装模板所需的内容) | |
| 在 GPU 介入之前进行验证 | |
| 压缩(token 高效的图) | |
| 使用覆盖参数运行已知良好的模板(上下文中无图) | |
| 构建 → 运行 | |
| 查看 | |
| 棘轮 + 账本,保存在磁盘上 | |
| 控制 | |
提示 |
| 整套规范,一条命令 |
资源 |
| 事实 + 文档 |
三件事让它具有循环感知能力,而不是普通的 API 封装:
get_image将渲染后的输出返回给模型 —— 这正是让"查看"成为现实的一步。模型真正看到了像素。工具响应推动循环。
submit_workflow在成功时返回*"有效,但不正确 —— 现在查看";在被拒绝时返回"这不是一次迭代 —— 修复指定的节点并重新提交。"*get_result以指令结束:"不要停在这里 —— 查看,然后更改一个参数或宣布简报已满足。"服务器指令携带偏好循环策略(见下文),客户端在连接时注入该策略。
偏好循环策略(服务器指令)
在握手时,服务器告知代理何时循环以及何时不循环:
始终 在编写 JSON 之前从实时 API 发现;通过执行来验证;
node_errors不是迭代 —— 修复并重新提交。偏好循环 只要受过训练的眼睛可能拒绝输出 —— 构图/数量、相似度、遮罩/边缘质量、放大/修复、重新布光、纹理接缝、视频时间稳定性、"让它看起来正确"。
棘轮 —— 保留迄今最佳;仅当更改优于它时才保留,否则回退并尝试其他方案;在平台期从参数 → 接线 → 模型进行转向。仅在简报有客观测试时才以其为门槛;否则按肉眼判断。
跳过 循环仅用于机械性任务(格式转换、纯 API 查询,或用户明确只需要一个可运行的图时)。
不确定时,在宣布完成之前至少进行一次查看与批评的循环。
棘轮/账本/转向机制改编自 Karpathy 的 AutoResearch 循环,针对主观图像工作进行了调整(仅在存在客观门槛时设置客观门槛;以人工签核检查点代替无限运行)。这些策略行存在于服务器 instructions 和工具响应中;完整方法在 comfy_loop 提示中,该提示原样提供仓库的循环文档。
MCP 无法强制行为 —— 它暴露能力和指导。这使得循环成为代理被反复告知偏好的强、范围明确的默认。要在 Claude Code 中获得硬保证,请将相同文本安装为始终开启的技能:
mkdir -p ~/.claude/skills/comfyui-workflows cp comfy_loop/docs/SKILL.md ~/.claude/skills/comfyui-workflows/技能 = 始终开启的纪律,MCP = 它驱动的工具。这与
comfy_skill提示提供的文件相同,因此它们不会分歧 —— 并且它委托comfy_install进行引导,而不是携带自己过时的配方。
工具参考
发现
工具 | 参数 | 返回 |
| — | 循环步骤 0,以及一次真正的预检。当没有任何响应时,它会返回该怎么做,并针对这台机器给出具体建议——启动它找到的安装、创建一个安装,或为远程 URL 打开隧道(参见故障排除)。当它确实响应时,它仍会指出从当前状态到成功渲染之间还缺什么:torch 在 CPU 上运行(所有渲染都能工作,但慢约 50 倍,且没有任何错误报告)、磁盘上没有权重文件(一个功能完整但什么也渲染不了的 ComfyUI)、没有 ComfyUI-Manager(附上修复它的两条命令,因为 |
|
| 类名或显示名称匹配的节点(是该技能仅按类搜索的严格超集)。省略 keyword 以获取数量。 |
|
| 单个节点的接口,以紧凑格式 |
|
| 加载器在磁盘上提供的真实模型文件(真实情况),从其枚举中读取——同时处理旧版列表和 |
|
| 可下载模型的目录(ComfyUI-Manager 的列表)——查找你可能还没有的 checkpoints/LoRAs/VAEs/upscalers;每个结果都会标记是否已安装。使用 |
|
|
|
|
| 获取一个模板。 |
|
| 将 FlowZip 文本展开回完整的 litegraph JSON。 |
|
| 将 FlowZip/litegraph 转换为 |
|
| 列出模板可覆盖的输入(node_id → 参数 + 当前值),无需加载完整图——包括子图内的参数。还会返回作者自己的 Note/MarkdownNote 文本,其中实际包含触发词和所需权重,这些文本被引用为不可信数据,而非指令。 |
|
| 使用 |
扩展(安装模板所需内容——主机上需要 ComfyUI-Manager)
工具 | 参数 | 返回 |
|
| 将节点类与 |
|
| 通过 ComfyUI-Manager 的队列安装包(受信任的注册表,不执行任意代码)。之后需要重启。 |
|
| 通过 Manager 将目录模型(来自 |
| — | 重启 ComfyUI(通过 Manager),使新节点注册到 |
|
| 通过 Manager 的队列更新 ComfyUI 核心和/或所有已安装的包,然后告知你需要重启。会运行第三方代码——先说明这一点。不要在循环中途使用:它会在棘轮机制下改变节点行为,而此前的迭代是在旧代码上测量的。 |
验证 —— 在 GPU 介入之前一切可知的内容
工具 | 参数 | 返回 |
|
| 对"这能否在这台机器上运行"给出一个答案:你没有的节点类(同一轮中解析为包 ID)、不在该加载器列表中的模型文件名(附上你确实拥有的最接近项)、未设置的必填输入、指向不存在节点的连线、超出节点声明范围的值,以及一个没有输出节点的图——它运行全绿却没有任何可看的东西。 |
构建 → 运行 → 查看
工具 | 参数 | 返回 |
|
| 将本地图片上传到 ComfyUI 的 |
|
| 成功时:返回 |
|
| 轮询 |
|
| 实际图片,返回给模型以便其判断像素。 |
|
| 以图片形式返回对比结果。 |
|
| 平均/最大绝对差 + 像素变化百分比——"我只改了我打算改的部分"的关卡。能捕捉到悄悄重写整个画面的"小调整"。 |
|
| 当任务简报包含客观测试时,为棘轮机制提供客观分数。 |
|
| 视频输出的尺寸、帧率和帧数。在索引帧之前调用它——你需要知道范围,也需要知道即将对比的两个片段是否长度相同。 |
|
| 视频输出的按帧索引的单帧,以图片形式返回。这是 |
|
| 在两个片段的同一帧索引处进行相同的对比。按时间戳对比会在长度不同时悄然出错(帧上限、裁剪、不同帧率)——你满怀信心地对比两个毫无关联的时刻。帧数不匹配时,警告会烧录在图片上,而不是留在你可以略过的文字里。 |
|
| 帧间不稳定性以数字呈现——"是否闪烁"的客观关卡,任何单帧都无法展示这一点。使用朴素连续帧差分,因此真实运动会计入:在同一片段变更前后使用它,或对应当静止的区域传入 |
循环,作为持久状态 —— 棘轮是一个工具,不是记忆练习。 一个很长的循环会被压缩;如果最佳结果和账本只存在于模型的 上下文中,棘轮就会悄悄停止转动,模型会重试它已经 拒绝过的更改,并且可能把一个回退版本当作最终结果交出来。所以它们存放在磁盘上。
工具 | 参数 | 返回 |
|
| 开启一次运行 → |
|
| 记录一次通过并应用棘轮。 |
|
| 在一次调用中,对一个输入的至多 8 个值运行同一个图——用于那些你无法靠推理得出的值(denoise、cfg、strength)。其他一切保持不变,因此输出只在一个变量上有所不同。值 → |
|
| 目前最佳图。压缩后的真相来源——你的记忆不是。 |
|
| 只追加的循环日志:每次通过、改了什么、效果如何。压缩后恢复线索;这也是你在签收时交给用户的日志。 |
|
| 在收敛检查点关闭;返回最终账本 + 最佳图以供签收。 |
|
| 将整个运行渲染为一个自包含的 HTML 页面——每次通过、保留了什么、回退了什么,缩略图以 base64 内联,因此即使 ComfyUI 关闭也能打开。最终图像证明不了什么;你丢弃的那些通过才表明循环已经收敛。 |
交付
工具 | 参数 | 返回 |
|
| API → UI/litegraph,这样人类可以打开并编辑它,保存到 ComfyUI 的工作流列表中。往返验证:结果被转换回 API 并与你的输入进行差异比对,因为 |
控制
工具 | 参数 | 返回 |
| — | 设备 / VRAM(在调整分辨率/批处理或 OOM 之后很有用)。 |
| — | 正在运行和排队等待的内容。 |
|
| 一次运行在不阻塞的情况下处于什么状态:已排队(含其位置)、运行中、已完成并带有 N 个输出,或导致其终止的执行错误。当有多个任务在飞行中时——比如 |
|
| 丢弃一个排队的运行,或者如果该 id 正在执行则中断它。不带 id 会清空待处理队列但让正在运行的作业继续。 |
| — | 取消当前运行。 |
|
| 卸载模型并重置执行器缓存( |
|
| 跟踪 ComfyUI 自己的日志,失败会在那里自我解释:节点内部的 traceback、OOM、启动时导入失败的自定义节点(这正是它的类在 |
提示词: comfy_loop(完整自主方法)和 comfy_skill(紧凑
技能),两者都原样从仓库的 markdown 提供,外加 comfy_install——
引导配方,针对服务器所运行的机器生成:如果已经有一个安装则进行安装,
用于构建 venv 的解释器(本服务器自己的,因此 Python 永远不是需要解决的先决条件),
comfy-cli 和 git 是否存在,以及这台机器的加速器实际需要的 torch 构建
(CUDA / ROCm / MPS / none)。服务器无法运行其中任何内容;代理可以,
而它正是这些内容的收件人。
资源: comfyui://object_info(实时完整转储)、comfyui://loop-method、
comfyui://skill。
观看循环实际工作
完全通过这个 MCP 服务器驱动一个真实的 ComfyUI(RTX 4090,SD1.5), 简报:"一张清晰、锐利对焦的微距影棚照片,一个红苹果放在 温暖的木桌上,细腻的皮肤纹理,丰富的细节。" 种子固定为 42,这样每次通过 只改变一个旋钮,效果可以归因。客观指标是 Laplacian 方差(一种标准的清晰度/对焦度量)。

通过 | 一个更改 | 清晰度 (varLap) | 通过观察得出的判定 |
1 | 基线 — 6 步,cfg 2.5 | 425 | 柔和、扁平、哑光。最弱。 |
2 | 步数 6 → 24 | 1204 | 更锐利——但高数字来自木纹,苹果皮仍然塑料感。 |
3 | cfg 2.5 → 7.5 | 515 | 苹果变得更丰富(饱和、皮上斑点)——指标下降因为背景变柔和了。 |
4 | euler → dpmpp_2m + karras | 740 | 胜者。 清晰的高光、可见的皮孔、可信的木头。 |
5 | 步数 24 → 36 | 661 | ≈ 通过 4。收益递减 → 停止。 |
这个循环所基于的教训,现场捕捉:指标在第 2 轮达到峰值,但第 2 轮并不是最好的图像——它的分数被背景纹理抬高了,而不是苹果细节。获胜者(第 4 轮)是通过观察选出的。绿色数字是有效的,不一定是正确的。(example_apple.png 就是第 4 轮的结果。)
……以及另一半:当模型出错的时候
苹果的例子说明了为什么不能盲目信任指标。这次运行说明了为什么不能盲目信任模型——这正是棘轮机制是一个工具而不是提示词里的一句话的全部原因。
需求描述:"一种可无缝平铺的鹅卵石纹理——在接缝处没有可见的缝隙," 并带有一个客观门控(measure_image → tile_seam)。全程使用相同的种子,因此每一轮只改变一件事。下面的每个纹理都平铺为 2×2——接缝无处可藏。

轮次 | 唯一改动 |
| 棘轮 |
1 | baseline SDXL | h 1.77 · v 1.23 → 临界 | 保留(首个) |
2 |
| h 0.78 · v 1.12 → 无缝 | 新最佳 |
3 |
| h 1.03 · v 1.56 → 接缝回归 | 已回滚 |
在第 3 轮,模型告诉 loop_record 结果是**"更好"**。但事实并非如此:x_only 只做水平平铺,让垂直方向的环绕仍然断裂——在右侧图像中可以看到石头在水平接缝处被平切。客观分数推翻了这一说法,恢复了第 2 轮,并把好的图交还回来。
这正是这个服务器存在的意义所要防止的失败:一个想要尽快收工的智能体会把回归称为改进。 如果"目前最佳"存在于模型的上下文中而不是磁盘上,那次回归就会成为最终答案。
安装
简而言之:让你的智能体来做。 把这段粘贴到 Claude Code(或任何带 shell 的 MCP 客户端)里,然后就不用管了:
从 https://github.com/huikku/comfyui-loop-mcp 设置 ComfyUI loop MCP——在我的客户端中注册它,如果 ComfyUI 没有在运行,也一并安装并启动它。
它拥有在不需要你的情况下完成这一切所需的一切:注册服务器只需一条 claude mcp add,一旦连接,comfy_install 提示会返回针对你的机器的引导方案——要启动的现有 ComfyUI、用来构建 venv 的解释器、你的显卡真正需要的 torch 构建版本、ComfyUI-Manager,以及模型应该放在哪里。然后 check_comfyui 会把仍然缺失的东西(没有权重、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? 那个名字属于 PyPI 上的 Comfy-Org 的服务器,所以这个现在叫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 服务器 |
| 本包之上的仓库根目录 |
|
|
| 在线模板目录读取的 |
| 未设置 | 设为 |
|
| 棘轮和账本的存放位置。如果你的运行记录已经在更名前的 |
指向远程 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
使用
在你的智能体中,加载
comfy_loop提示(或让它读取comfyui://loop-method资源)以引入完整方法。如果你的客户端注入了服务器指令,偏好循环的策略已经生效。给它一个目标。它会
check_comfyui→list_nodes/get_node/list_models→ 构建 API 格式的 JSON →submit_workflow→get_result→get_image,然后进行批评和迭代——每轮只改一处——直到它说不出缺陷,然后呈现结果供确认。
故障排查
"ComfyUI is NOT reachable"(ComfyUI 不可达) — 回复是一组指令,而不是抱怨,而且它们是发给智能体的,智能体拥有这个服务器没有的 shell:它会在本机上查找 ComfyUI(
$COMFYUI_PATH、comfy-cli 的工作区、~/ComfyUI、~/comfy、~/code、~/github、/opt),然后要么返回使用该安装自身的 venv python 的启动命令,要么在没有的情况下返回克隆 + venv + Manager + 启动的完整流程。如果COMFYUI_URL是远程的,它会有意不提供本地安装——那只会在一台错误的机器上留下第二个未使用的 ComfyUI——而是给你 SSH 隧道方案。每个工具都会返回这个,不只是check_comfyui;建议是在传输层附加的。找不到节点/模型 — 在 ComfyUI 一侧安装该包/模型,然后重启 ComfyUI,让
/object_info反映它(在此之前 API 是过期的)。get_image返回空 — 确保图中有SaveImage/PreviewImage节点;get_result会列出实际生成的内容。install_node_pack被阻止 / 无操作 — 安装工具需要主机上有 ComfyUI-Manager,并且 Manager 的安全级别必须允许 API 安装。安装后,需要restart_comfyui才能让/object_info显示新节点。find_missing_nodes选择了"错误的"包 — 多个包可能导出同名的节点;解析会取第一个注册表匹配项。如果某个安装没有提供该类,请检查报告的包并显式安装正确的那个。
许可证
MIT。
Available Tools
32 toolscheck_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | side_by_side | |
| amplify | No | ||
| filename_a | Yes | ||
| filename_b | Yes | ||
| subfolder_a | No | ||
| subfolder_b | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| pack | No | ||
| source | No | online |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| flowzip | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| subfolder | No | ||
| image_type | No | output |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | ||
| class_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt_id | Yes | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fmt | No | flowzip | |
| name | Yes | ||
| pack | No | ||
| source | No | online |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filename_a | Yes | ||
| filename_b | Yes | ||
| subfolder_a | No | ||
| subfolder_b | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| flowzip | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pack_id | Yes | ||
| version | No | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| input_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| summary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| graph | No | ||
| score | No | ||
| change | Yes | ||
| run_id | Yes | ||
| outcome | Yes | ||
| outputs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| out_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gate | No | ||
| brief | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | sharpness | |
| filename | Yes | ||
| subfolder | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| pack | No | ||
| source | No | online | |
| client_id | No | comfy-mcp | |
| overrides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| save | No | ||
| workflow | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | ||
| model_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | online | |
| keyword | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | ||
| client_id | No | comfy-mcp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| pack | No | ||
| source | No | online |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
32 tool updates
v0.2.0- First observed
check_comfyui - First observed
compare_images - First observed
find_missing_nodes - First observed
flowzip_to_api - First observed
get_image - First observed
get_node - First observed
get_queue - First observed
get_result - First observed
get_template - First observed
image_diff_stats - First observed
inflate_workflow - First observed
install_model - First observed
install_node_pack - First observed
interrupt - First observed
list_models - First observed
list_nodes - First observed
loop_best - First observed
loop_finish - First observed
loop_ledger - First observed
loop_record - First observed
loop_report - First observed
loop_start - First observed
measure_image - First observed
restart_comfyui - First observed
run_template - First observed
save_workflow - First observed
search_models - First observed
search_templates - First observed
submit_workflow - First observed
system_stats - First observed
template_slots - First observed
upload_image
TDQS
Scored across 32 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Hailuo (MiniMax) AI video generation
MCP server for Luma Dream Machine AI video generation
MCP server for Qwen Image 3 AI image generation
MCP server for Flux AI image generation
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server that bridges AI agents with a local ComfyUI instance to generate and iteratively refine images, audio, and video through conversational tool calls.9 npm1MIT
- AlicenseBqualityBmaintenanceAn MCP server that bridges AI agents with ComfyUI for automated workflow building, execution, monitoring, and output routing.962MIT
- AlicenseAqualityDmaintenanceMCP server that lets OpenCode (or any MCP-compatible AI coding tool) directly control ComfyUI for AI image generation.144MIT
- AlicenseAqualityAmaintenanceThe MCP server that drafts ComfyUI workflows a human can actually read. It lets coding agents build, repair, port, validate, and run ComfyUI workflows against your own ComfyUI instance, delivering clean, organized, fully-labeled workflows.29135 PyPI3MIT