Skip to main content
Glama

comfyui-mcp — drive ComfyUI with ANY LLM

The local-first, agent-native control plane for ComfyUI — an MCP server + live sidebar agent that generates images, video and audio, authors and runs workflows, manages models and custom nodes, and edits your live ComfyUI graph in natural language. Bring whatever model you have: Claude or ChatGPT on your subscription, Gemini on your Google login, a free local model via Ollama (fully offline), or any hosted model over one API key (DeepSeek, GLM, MiMo, Kimi, GPT, Claude via OpenRouter). Same tools, same panel, every tier — and the built-in LLM Arena scores them all on real ComfyUI tasks so you know exactly what your model can do. One config targets local installs, LAN, VPS, or Comfy Cloud.

npm version Node.js License Documentation

comfyui-mcp MCP server comfyui-mcp MCP server

Deploy on RunPod  One-click GPU pod — a ready-to-run ComfyUI with this project + Agent Panel + ComfyUI-Manager v2 preinstalled, on your own GPU. No setup.

Works on macOS, Linux, and Windows. Auto-detects your ComfyUI installation and port.

108 MCP tools | 32 AI skills (Flux · WAN · LTX 2.3 video · Qwen · Z-Image · Ideogram 4 · ERNIE · ANIMA · model registry · Civitai · node authoring · launch/perf flags) | 13 installer packs | 11 slash commands | 4 autonomous agents | 4 hooks

The plugin ships expert skills that grow with every release — model-specific generation guides with curated download URLs, workflow recipes, troubleshooting, and custom-node authoring — so Claude knows the right sampler, CFG, resolution, and model files for each architecture without trial and error.

✅ Now available: the ComfyUI Agent Panel on ComfyUI-Manager & the Comfy Registry

An autonomous AI agent in your ComfyUI sidebar — on Claude, ChatGPT, Gemini, or ANY local/hosted LLM (Ollama and every OpenAI-compatible endpoint). Subscriptions work with no API key; local models work with no account at all. Pick a provider and it drives your live graph: edits, spatial layout, one-shot workflow/pack loads, rewind/rollback, a pending-message tray, activity cards, multi-tab — and it asks before spending paid API credits. Search comfyui-agent-panel in ComfyUI-Manager to install. Read more →

📖 Full documentation: comfyui-mcp.artokun.io/docs


Quick Start

1. Install ComfyUI (if you haven't already): ComfyUI Desktop or from source

2. Add the MCP server to your Claude Code config (~/.claude/settings.json):

{
  "mcpServers": {
    "comfyui": {
      "command": "npx",
      "args": ["-y", "comfyui-mcp"],
      "env": {
        "CIVITAI_API_TOKEN": ""
      }
    }
  }
}

3. Start using it. With ComfyUI running, ask Claude to generate an image:

> Generate an image of a sunset over mountains

Claude will find (or download) a checkpoint, build a workflow, execute it, and return the image.

Note: This runs as a standalone MCP server — no need to clone this repo. npx will download and run it automatically.

Scope: local, remote, or Comfy Cloud

comfyui-mcp is local-first: a self-hosted ComfyUI on Mac/Linux/Windows is the primary target, with the same agent reaching remote installs (RunPod, VPS, LAN, reverse-proxied) from one config. Local-first, not local-only.

More than a bridge. Most ComfyUI MCP servers are thin connectors — they forward a prompt and hand back an image. comfyui-mcp is a full control plane: it authors and edits the graph node-by-node, runs and iterates on workflows, manages models and custom nodes, and ships model-specific expertise (samplers, CFG, resolutions, curated model URLs) so the agent gets it right without trial and error. If you want a minimal local relay, a lightweight server is fine; if you want an agent that actually operates ComfyUI, that's this project.

For Comfy Cloud users, Comfy-Org ships an official Comfy Cloud MCP (currently invite-only beta) which is cloud-exclusive and maintained by the Comfy team. comfyui-mcp also includes a community cloud-mode (set COMFYUI_API_KEY — see Deployment modes) so a single MCP can target all three deployment shapes from one config; pick whichever fits your workflow.

Remote / hosted connector (one command)

Want to use comfyui-mcp from Claude Desktop's Custom Connectors or any remote client — like Comfy's own cloud.comfy.org/mcp connector? Run it as an authenticated, publicly-reachable Streamable-HTTP server with one flag:

npx -y comfyui-mcp@latest --tunnel

This forces the HTTP transport, generates an auth token, opens a cloudflared quick tunnel, and prints a ready-to-paste https://…/mcp URL + token + Claude Desktop connector snippet. Auth accepts Authorization: Bearer <token> or X-API-Key: <token> (matching Comfy Cloud's convention). See the Remote / hosted connector guide for the full walkthrough and headless usage.

Auth is opt-in: with no COMFYUI_MCP_HTTP_TOKEN set and no --tunnel, the default stdio (and plain --http on loopback) behavior is unchanged — open and local. OAuth (Comfy's browser sign-in flow) is a planned follow-up.


Related MCP server: ComfyUI MCP

Claude Code Plugin

This package also ships as a Claude Code plugin, providing slash commands, skills, agents, and hooks on top of the MCP tools.

Install as a plugin

# In Claude Code
/plugin marketplace add artokun/comfyui-mcp
/plugin install comfy

Slash commands

Command

Description

/comfy:gen <prompt>

Generate an image from a text description — auto-selects checkpoint, builds workflow, returns image

/comfy:viz <workflow>

Visualize a workflow as a Mermaid diagram with nodes grouped by category

/comfy:node-skill <pack>

Generate a Claude skill for a custom node pack from Registry ID or GitHub URL

/comfy:debug [prompt_id]

Diagnose why a workflow failed — reads history, logs, traces root cause, suggests fixes

/comfy:batch <prompt, params>

Parameter sweep generation across cfg, sampler, steps, seed, etc.

/comfy:convert <file>

Convert between UI format and API format workflows

/comfy:install <pack>

Install a custom node pack — git clone, pip install, optional restart

/comfy:gallery [filter]

Browse generated outputs with metadata — filter by date, count, or filename

/comfy:compare <a vs b>

Diff two workflows side by side — shows added/removed nodes and changed parameters

/comfy:recipe <name> <prompt>

Multi-step recipes: portrait, hires-fix, style-transfer, product-shot

Built-in skills

32 skills total — model-family guides (Flux, WAN, LTX 2.3, Qwen, Z-Image, Ideogram 4, ERNIE, ANIMA + anime / WAN / Z-Image LoRA training), the model-registry (curated download URLs), the civitai pairing skill, node authoring, the launch/performance-flags matrix, and the core four below. Full list on the plugin docs page.

Installer packs. packs/ bundles 13 one-command ComfyUI setups — ANIMA, Ideogram 4, LTX-2.3, ERNIE, WAN (animate / longer-videos / transparent), Qwen (image / image-edit), Z-Image (turbo / base / xy-plot) and artokun-flow (WAN Animate — replace / animate). Each is a manifest of custom nodes + model URLs + workflow that drives both apply_manifest and generated install-windows.bat / install-runpod.sh, with CI that validates every model link + payload size. See packs/README.md.

Skill

Description

comfyui-core

Workflow format, node types, data flow patterns, pipeline architecture, MCP tool usage guide

prompt-engineering

CLIP weight syntax (word:1.3), BREAK tokens, embeddings, model-specific prompting for SD1.5/SDXL/Flux/SD3

troubleshooting

Common error catalog — OOM, dtype mismatches, missing nodes, NaN tensors, black images, CUDA errors, with VRAM estimates per model

model-compatibility

Compatibility matrix — loaders, resolutions, CFG, samplers, ControlNets, LoRAs, and VAEs per model family (SD1.5/SDXL/Turbo/Lightning/Flux/SD3/LTXV)

Agents

Agent

Model

Description

comfy-explorer

Sonnet

Researches custom node packs — reads docs, queries /object_info, generates comprehensive skill files

comfy-debugger

Sonnet

Autonomously diagnoses workflow failures — gathers logs + history, identifies failing node, checks models + custom nodes, proposes and optionally applies fixes

comfy-optimizer

Sonnet

Analyzes workflows for performance — detects redundant nodes, VRAM waste, wrong CFG/steps for model family, precision issues, suggests optimizations

Hooks

Event

Trigger

Action

PreToolUse

enqueue_workflow

VRAM watchdog — checks GPU memory via /system_stats and warns if < 1GB free before execution

PreToolUse

stop_comfyui, restart_comfyui

Save warning — prompts user to save unsaved workflow changes before stopping ComfyUI

PostToolUse

Any comfyui tool

Job completion notify — checks for completed jobs and injects completion summaries into the conversation

Background Scripts

Script

Description

monitor-progress.mjs

Progress monitor — connects to ComfyUI's WebSocket for real-time step progress (e.g., step 5/14 (36%)). Run as a background Bash task after enqueuing workflows. Reports completion with output filenames, errors with node details. Replaces polling get_job_status in a loop.


Panel agent (Claude · ChatGPT · Gemini · any local/hosted LLM)

Beyond the headless MCP server, this package ships the panel orchestrator that powers the ComfyUI Agent Panel — an autonomous agent embedded in ComfyUI's sidebar that drives the live canvas. It runs in the background on your own subscription (Claude or ChatGPT), started on demand by the panel's Connect button:

npx -y comfyui-mcp@latest connect

Drive a REMOTE ComfyUI from your own machine (connect)

When ComfyUI runs somewhere with no Node/agent (a RunPod pod, a cloud box) you can still run the agent on your machine and drive that remote ComfyUI — no agent login on the box, nothing to install or configure remotely:

npx -y comfyui-mcp@latest connect https://abcd1234-8188.proxy.runpod.net

This is sugar for --panel-orchestrator with COMFYUI_URL set from the URL: the orchestrator runs locally on your Claude/ChatGPT login and reaches the remote ComfyUI over its public proxy URL. For a remote HTTPS pod, connect automatically opens a secure, token-gated wss:// tunnel (via Cloudflare) to the local agent bridge and hands the pod's panel that URL — so the pod's HTTPS page reaches your machine with no browser prompt, in any browser (a secure page can't open a plain ws:// socket to your box — mixed content / Private Network Access). A local ComfyUI uses the plain ws://127.0.0.1:9180 loopback bridge; add --insecure-bridge to force that loopback for a remote pod (then arrange your own path to it, e.g. an SSH port-forward). Either way the panel JS runs in your local browser and the agent — and your login — run only on your machine, so nothing is installed remotely.

To finish: open the remote ComfyUI in your browser, turn on Settings → General → "Use external/local orchestrator (advanced)" in the Agent panel, then click Connect. (In that mode the panel connects straight to the local bridge instead of asking the ComfyUI host to spawn an orchestrator it can't run.)

Multi-provider, full parity. The orchestrator depends on a provider-neutral AgentBackend port (dependency injection), with two adapters:

  • ClaudeBackend — the Claude Agent SDK (@anthropic-ai/claude-agent-sdk), a persistent streaming session over the claude.ai subscription (OAuth, no key).

  • CodexBackend — OpenAI Codex over the codex app-server JSON-RPC protocol (@openai/codex), on the ChatGPT subscription (codex login, no key).

Both are optional dependencies, and the panel picks a provider, not a port — each backend runs its own orchestrator on its own loopback bridge port. A capability matrix lets the panel degrade gracefully (e.g. conversation-rollback is Claude-only today, since the Codex app-server resumes whole threads only).

The live-canvas tools and model knowledge are identical across providers. The panel_* tool definitions live in one shared list, registered onto both the in-process Claude SDK MCP server and a @modelcontextprotocol/sdk server over a loopback streamable-HTTP MCP that the orchestrator hosts for Codex (which can only host config-declared MCP servers). The headless comfyui MCP is likewise injected into both — in-process for Claude, declared via codex app-server -c mcp_servers for ChatGPT — so generation, models, and workflow tools are the same everywhere.

New tools that give every backend the same expertise and a cost guardrail:

Tool

Description

list_skills / read_skill

Discover and read bundled model-family + workflow skills — the knowledge Claude loads natively, exposed to any MCP client (e.g. the Codex backend)

list_packs / read_pack_workflow

List one-command installer packs (custom nodes + weights + ready workflow; all local-GPU / free) and read a pack's graph

list_workflow_templates

List the connected ComfyUI's official workflow templates (the templates package + custom-node-provided templates)

check_workflow_runtime

Classify a workflow as local (your GPU, free) or api / mixed / unknown (hosted API nodes = paid credits) so the agent asks before spending paid API credits

panel_load_workflow

(panel tool) Load a full workflow onto the live canvas in one shot — by bundled pack name (read server-side, never shuttled through chat) or by graph JSON

panel_strip_workflow / panel_slice_workflow

(panel tools) De-virtualize a tangled graph (Get/Set buses, Reroutes, subgraphs, bypass → real connections) or carve one rgthree-toggled pipeline out of a monolith — by pack, server-side path, or inline graph; for understanding/rebuilding expert workflows without hand-tracing

See the design doc — docs/design/agent-backend-injection.md — for the port, the capability matrix, and the per-provider "clink" points, and the panel docs for the full sidebar UX.


MCP Tools

108 tools across workflow execution, generation, iteration, composition, models, and more:

Image Generation (high-level)

Tool

Description

generate_image

Generate from a text prompt — builds a txt2img workflow, fills unspecified params from your defaults, auto-selects a checkpoint

generate_with_controlnet

Generate conditioned by a ControlNet image (pose/depth/canny/normal) + prompt

generate_with_ip_adapter

Generate guided by a reference image's style/subject via IP-Adapter (needs ComfyUI_IPAdapter_plus)

Audio Generation (high-level)

Tool

Description

generate_audio

Generate audio from a text prompt — supports ACE Step 1.5 (music with lyrics/structure) and Stable Audio 3 (music, instruments, SFX); auto-selects local models

Assets & Iteration

Tool

Description

view_image

Return a generated asset's bytes as an inline image so the agent can see the result

analyze_color

Palette / contrast / color statistics for a generated image (dominant colors, average + luminance stats, contrast checks) so the agent can reason about color without a vision round-trip

regenerate

Re-run the workflow that produced an asset_id, with optional parameter overrides

list_assets

Browse recently generated assets (newest-first) by asset_id

get_asset_metadata

Full provenance for an asset, including the originating workflow

Defaults

Tool

Description

get_defaults

Show merged generation defaults with per-source attribution

set_defaults

Update runtime defaults; persist: true writes the config file

Workflow Execution

Tool

Description

enqueue_workflow

Submit a workflow (API format JSON) — returns prompt_id immediately, non-blocking

get_job_status

Check execution status of a job by prompt ID

get_queue

View the current execution queue (running + pending)

get_queued_workflow

Inspect the full workflow payload for one pending queue item

move_queued_job

Move a pending job to the front/back by requeueing it with a new prompt ID

edit_queued_job

Patch or replace a pending queued workflow and requeue it with a new prompt ID

cancel_job

Interrupt the currently running job — escalates (interrupt → verify → /free) and reports WEDGED if it won't die; clear_pending: true also drops all pending jobs in the same call

get_system_stats

Get system info — GPU, VRAM, Python version, OS

Workflow Visualization

Tool

Description

visualize_workflow

Convert a workflow to a Mermaid flowchart with nodes grouped by category

mermaid_to_workflow

Convert a Mermaid diagram back to executable workflow JSON

Workflow Composition

Tool

Description

create_workflow

Generate a workflow from templates: txt2img, img2img, upscale, inpaint, controlnet, ip_adapter, ace_step_15, stable_audio_3

modify_workflow

Apply operations: set_input, add_node, remove_node, connect, insert_between

get_node_info

Query available node types from ComfyUI's /object_info endpoint

Workflow Validation

Tool

Description

validate_workflow

Dry-run validation — checks missing nodes, broken connections, invalid output indices, missing model files

Workflow Library

Tool

Description

list_workflows

List saved workflows from ComfyUI's user library

get_workflow

Load a specific saved workflow by filename

strip_workflow

De-virtualize any workflow (absolute path, library filename, or inline graph) — resolve GetNode/SetNode buses, Reroutes, subgraph defs, and bypassed nodes into real connections and return the flat graph. Reads ANY path server-side, so it loads ad-hoc/expert workflows the cached library can't.

slice_workflow

Un-chunk a toggle-template monolith — slice ONE rgthree Fast-Groups-Bypass-toggled pipeline out into a standalone activated graph (seed from the named groups' output nodes, backward-closure, un-bypass). Pair with strip_workflow to then flatten the buses.

save_workflow

Save a workflow to the ComfyUI user library

Image Management

Tool

Description

upload_image

Copy a local image into ComfyUI's input/ directory for img2img, inpaint, or ControlNet

workflow_from_image

Extract embedded workflow metadata from a ComfyUI-generated PNG (reads prompt and workflow tEXt chunks)

list_output_images

Browse recently generated images and videos from the output directory, sorted newest-first — recurses into subfolders (e.g. SaveVideo's output/video/…) and returns each result's subfolder

Model Management

Tool

Description

search_models

Search HuggingFace for compatible models (checkpoints, LoRAs, VAEs, etc.)

download_model

Download a model from a URL to the correct ComfyUI subdirectory

list_local_models

List installed models by type: checkpoints, loras, vae, upscale_models, controlnet, embeddings, clip, unet, diffusion_models, text_encoders

list_extra_paths

View standalone or Desktop ComfyUI extra search-path config

add_extra_path

Add a model/custom_nodes search path to the extra paths YAML

remove_extra_path

Remove a stored extra search path from the extra paths YAML

Memory Management

Tool

Description

clear_vram

Free GPU VRAM by unloading cached models — calls ComfyUI's /free endpoint, reports before/after stats

get_embeddings

List installed textual inversion embeddings

Registry & Discovery

Tool

Description

search_custom_nodes

Search the ComfyUI Registry for custom node packs by keyword

get_node_pack_details

Get full details of a custom node pack (description, author, nodes, install info)

generate_node_skill

Generate a Claude skill .md file from a Registry ID or GitHub URL

Diagnostics

Tool

Description

get_logs

Get ComfyUI server logs with optional keyword filter (e.g., error, warning, a node name)

get_history

Get execution history with full error details, Python tracebacks, timing, and cached node info

Process Control

Tool

Description

stop_comfyui

Stop the running ComfyUI process (saves PID and launch args for restart)

start_comfyui

Start ComfyUI using info saved from a previous stop

restart_comfyui

Stop and restart ComfyUI, preserving all launch arguments

Generation Tracker

Tool

Description

suggest_settings

Suggest proven sampler/scheduler/steps/CFG settings from local generation history — query by model family, LoRA hash, or text search

generation_stats

Show local generation tracking statistics — total runs, unique combos, breakdown by model family

Every enqueue_workflow call automatically logs settings to a local SQLite database (generations.db). Same settings combos get a reuse_count bump instead of duplicates, creating a natural popularity signal. Models and LoRAs are identified by content hash (AutoV2 / SHA256), not filenames — so renamed files still group together.

# View local stats from the CLI
npm run generations:stats

Model Settings

Community-maintained preset library (model-settings.json) with research-backed sampler, scheduler, steps, and CFG values for 10+ model families. User overrides in model-settings.user.jsonc (auto-created from template on install, gitignored).


Examples

Generate an image

> /comfy:gen a cyberpunk city at night with neon lights

Claude will:

  1. Check installed checkpoints (download one if needed)

  2. Build a txt2img workflow with your prompt

  3. Execute it on ComfyUI

  4. Return the generated image

Visualize a workflow

> /comfy:viz ~/workflows/my-workflow.json

Produces a Mermaid diagram with nodes grouped by category:

flowchart LR
  subgraph Loaders
    1["CheckpointLoaderSimple"]
  end
  subgraph Conditioning
    2(["Positive Prompt"])
    3(["Negative Prompt"])
  end
  subgraph Sampling
    5{{"KSampler<br/>steps:20 cfg:8"}}
  end
  1 -->|MODEL| 5
  2 -->|CONDITIONING| 5
  3 -->|CONDITIONING| 5

Debug a failed workflow

> /comfy:debug

Automatically reads the last execution history and logs, identifies the failing node, checks for missing models or node packs, and suggests a fix.

> /comfy:debug abc123-def456

Diagnose a specific execution by prompt ID.

Parameter sweep

> /comfy:batch a cat in a field, cfg:5-10:2, sampler:euler,dpmpp_2m

Generates a grid of images across all parameter combinations and presents a summary table with results.

Supported sweep parameters: cfg, steps, sampler, scheduler, seed, denoise, width, height.

Multi-step recipes

> /comfy:recipe hires-fix a dramatic fantasy landscape with castles

Runs a two-pass pipeline: txt2img at 512x768, then img2img upscale to 1024x1536 with detail enhancement.

Available recipes:

Recipe

Description

portrait

Generate at 1024x1024, then 2x upscale to 2048x2048

hires-fix

Low-res generation → img2img upscale with denoise 0.4-0.5

style-transfer

Apply a style prompt to an existing image via img2img

product-shot

Product image with clean white background

Convert workflow format

> /comfy:convert ~/workflows/my-ui-workflow.json

Converts between ComfyUI's UI format (nodes + links arrays) and API format (node IDs → {class_type, inputs}).

Install a custom node pack

> /comfy:install comfyui-impact-pack

Searches the registry, shows details, clones the repo to custom_nodes/, installs dependencies, and offers to restart ComfyUI.

> /comfy:gallery last 5
> /comfy:gallery today

Lists recent outputs with embedded metadata — shows checkpoint, prompt, seed, steps, CFG, sampler for each image.

Compare workflows

> /comfy:compare workflow-a.json vs workflow-b.json

Shows added/removed nodes, changed parameters (old → new values), and optional Mermaid diagrams for visual comparison.

Validate before running

> Validate this workflow before I run it

Checks for missing node types, broken connections, invalid output indices, and missing model files — without executing.

Manage models

> What checkpoints do I have installed?
> Search HuggingFace for SDXL turbo models
> Download this model to my checkpoints folder

Manage VRAM

> Free my VRAM
> What embeddings do I have?

Extract workflow from an image

> Extract the workflow from this image: ~/outputs/ComfyUI_00042_.png

Reads the PNG metadata chunks to recover the exact workflow and prompt used to generate the image.

Explore custom nodes

> /comfy:node-skill comfyui-impact-pack

Generates a comprehensive skill file documenting every node, its inputs/outputs, and usage patterns.

Process control

> Restart ComfyUI
> Stop ComfyUI
> Start ComfyUI back up

Configuration

The server auto-detects your ComfyUI installation and port. Override with environment variables if needed:

Deployment modes

comfyui-mcp operates in one of three modes, auto-selected from the environment:

Mode

Trigger

Local FS / process tools?

Local

default

yes

Remote

--comfyui-url / COMFYUI_URL points at a non-loopback host, or --force-remote is set

no — server skips COMFYUI_PATH auto-detection so stale local installs can't silently absorb uploads

Cloud

COMFYUI_API_KEY is set (targets Comfy Cloud)

no — HTTP primitives route via cloud.comfy.org over X-API-Key; WebSocket and local-only tools throw CLOUD_UNSUPPORTED

Some setups (e.g. dstack driving ComfyUI on RunPod) port-forward a remote ComfyUI back to localhost:8188, so the loopback check above gets it wrong — the install isn't actually local. Pass --force-remote (or set COMFYUI_MCP_FORCE_REMOTE=1) alongside --comfyui-url/COMFYUI_URL to force remote mode regardless of hostname:

npx -y comfyui-mcp@latest --comfyui-url http://localhost:8188 --force-remote

Variable

Default

Description

COMFYUI_URL

Full ComfyUI URL, e.g. https://comfy.example.com:8443 — overrides COMFYUI_HOST/PORT/SSL and skips auto-detection. A path prefix is preserved (e.g. https://host/comfyapi) for reverse-proxied instances. Non-loopback hosts opt into remote mode.

COMFYUI_MCP_FORCE_REMOTE

Set to 1/true (or pass --force-remote) to force remote mode even when COMFYUI_URL/--comfyui-url resolves to a loopback host — for port-forwarded remote installs (e.g. dstack/RunPod) that are reachable at localhost. No effect without a COMFYUI_URL/--comfyui-url.

COMFYUI_HOST

127.0.0.1

ComfyUI server address

COMFYUI_PORT

(auto-detect)

ComfyUI server port (tries 8188, then 8000)

COMFYUI_PATH

(auto-detect)

Path to ComfyUI data directory. Auto-detection suppressed in remote/cloud modes.

COMFYUI_PYTHON

python

Python interpreter for cm-cli subprocess operations (useCmCli, sync_node_dependencies) — point it at your ComfyUI venv's python. cm-cli needs the local filesystem, so these are local-mode only; on remote targets use the Manager HTTP path (the default).

COMFYUI_MCP_BRIDGE_HOST

127.0.0.1

Panel-bridge bind host. Set 0.0.0.0 (or a LAN IP) to run the orchestrator on a 24/7 server and connect panels from other machines — requires a token (below); the orchestrator prints a ready-to-paste ws://…/?token=… Bridge URL.

COMFYUI_MCP_BRIDGE_TOKEN

(generated when needed)

Shared secret gating every bridge connection (checked constant-time on the WS upgrade). Mandatory for a non-loopback COMFYUI_MCP_BRIDGE_HOST; pin it so the Bridge URL survives restarts. Never logged beyond the startup banner.

COMFYUI_MCP_DATA_DIR

~/.comfyui-mcp

Base dir for per-instance data (the generations.db used by suggest_settings) when there's no local COMFYUI_PATH (remote/cloud/undetected). Scoped per target under instances/<host_port>/.

COMFYUI_API_KEY

Comfy Cloud API key. When set, cloud mode is active and the server talks to cloud.comfy.org. Never logged.

COMFYUI_CLOUD_URL

https://cloud.comfy.org

Override the Comfy Cloud endpoint (testing/staging).

COMFYUI_AUTH_TOKEN

Generic auth token for a self-hosted ComfyUI behind a reverse proxy / API gateway (distinct from Comfy Cloud). When set, attached to every ComfyUI request. Never logged.

COMFYUI_AUTH_HEADER

Authorization

Header name for COMFYUI_AUTH_TOKEN (e.g. X-API-Key).

COMFYUI_AUTH_SCHEME

Bearer for Authorization, else none

Scheme prefix on the token value (e.g. Bearer, Token).

CIVITAI_API_TOKEN

CivitAI API token for model downloads

HUGGINGFACE_TOKEN

HuggingFace token for higher API rate limits

GITHUB_TOKEN

GitHub token for skill generation (avoids rate limits)

REGISTRY_ACCESS_TOKEN

Comfy Registry API key for publish_custom_node (env-only, never logged)

COMFYUI_DOWNLOAD_CACHE_DIR

~/.comfyui-mcp/cache

Content-addressed model-download cache (dedup + concurrent coalescing)

COMFYUI_LRU_CACHE_SIZE_GB

0

Cap the download cache in GB; 0 disables LRU eviction

COMFYUI_STARTUP_CHECK_INTERVAL_S / …_MAX_TRIES

1 / 20

Readiness-probe interval + max tries when starting a local ComfyUI

COMFYUI_ALWAYS_RESTART

false

Auto-restart a crashed local ComfyUI (bounded by COMFYUI_RESTART_MAX_ATTEMPTS / COMFYUI_RESTART_WINDOW_S)

COMFYUI_MCP_STALL_S

180

Render-wedge watchdog: seconds a sampler step can re-emit the same progress before a STALL/BACKLOG note is prepended to the agent's next turn (clamped 15–3600s; live-tunable from the panel)

COMFYUI_MCP_INTERRUPT_S

30

Seconds cancel_job waits for an interrupt to actually stop a job before escalating to /free and reporting it wedged

LOG_LEVEL

info

Logging verbosity: debug, info, warn, error

Transports

The server speaks stdio by default (what Claude Code, Claude Desktop, and the MCP Inspector expect — no flags needed). For MCP gateways, remote/hosted setups, or fetch-based clients, opt into streamable-HTTP:

# stdio (default)
npx -y comfyui-mcp@latest

# streamable-HTTP on http://127.0.0.1:9100/mcp
npx -y comfyui-mcp@latest --http
npx -y comfyui-mcp@latest --http --host 0.0.0.0 --port 9100   # bind/port overrides

Flag

Env

Default

Description

--http / --transport http

MCP_TRANSPORT=http

stdio

Serve streamable-HTTP at /mcp instead of stdio

--host <h>

MCP_HOST

127.0.0.1

HTTP bind host (use 0.0.0.0 to expose)

--port <n>

MCP_PORT

9100

HTTP port

--comfyui-url <url>

COMFYUI_URL

(auto-detect)

Target a specific (incl. remote) ComfyUI

--force-remote

COMFYUI_MCP_FORCE_REMOTE

false

Force remote mode for a loopback --comfyui-url (e.g. dstack/RunPod port-forwards to localhost)

Other agents & local LLMs (Hermes, OpenClaw, Copilot CLI, Ollama)

comfyui-mcp has first-class support for non-Claude harnesses. One command writes the server entry into the harness's own config (merging, not clobbering):

npx -y comfyui-mcp setup hermes     # → ~/.hermes/config.yaml      (compact by default)
npx -y comfyui-mcp setup openclaw   # → ~/.openclaw/openclaw.json  (compact by default)
npx -y comfyui-mcp setup copilot    # → ~/.copilot/mcp-config.json (full by default)
# flags: --compact | --full, --comfyui-url <url>, --dry-run

Model requirements: tool calling is a hard requirement (no tool calling = doesn't work). Thinking and vision are strongly recommended — without thinking, multi-step tool chains degrade; without vision the agent can generate but can't see its own outputs.

For small/local models, compact tool mode (--compact / COMFYUI_MCP_TOOL_MODE=compact) registers 3 meta-tools (list_toolsdescribe_toolcall_tool) instead of the full ~200-schema surface, pulling schemas into context one tool at a time. Validated end-to-end via Ollama with gemma4:e4b, gemma4:e2b, and qwen3:4b (npm run test:local-llm); gemma3 has no native tool calling and is unsupported. Full guide — hosted-model guidance (DeepSeek/MiMo/GLM class), per-harness setup, troubleshooting: Local LLMs & other agents.

Flag

Env

Default

Description

setup <agent>

Write the comfyui entry into hermes / openclaw / copilot config, then exit

--compact / --tool-mode compact

COMFYUI_MCP_TOOL_MODE=compact

full

Register 3 meta-tools instead of the full ~200-schema surface

Other agents & local LLMs (Hermes, OpenClaw, Copilot CLI, Ollama)

comfyui-mcp has first-class support for non-Claude harnesses. One command writes the server entry into the harness's own config (merging, not clobbering):

npx -y comfyui-mcp setup hermes     # → ~/.hermes/config.yaml      (compact by default)
npx -y comfyui-mcp setup openclaw   # → ~/.openclaw/openclaw.json  (compact by default)
npx -y comfyui-mcp setup copilot    # → ~/.copilot/mcp-config.json (full by default)
# flags: --compact | --full, --comfyui-url <url>, --dry-run

Model requirements: tool calling is a hard requirement (no tool calling = doesn't work). Thinking and vision are strongly recommended — without thinking, multi-step tool chains degrade; without vision the agent can generate but can't see its own outputs.

For small/local models, compact tool mode (--compact / COMFYUI_MCP_TOOL_MODE=compact) registers 3 meta-tools (list_toolsdescribe_toolcall_tool) instead of the full ~200-schema surface, pulling schemas into context one tool at a time. Validated end-to-end via Ollama with gemma4:e4b, gemma4:e2b, and qwen3:4b (npm run test:local-llm); gemma3 has no native tool calling and is unsupported. Full guide — hosted-model guidance (DeepSeek/MiMo/GLM class), per-harness setup, troubleshooting: Local LLMs & other agents.

Flag

Env

Default

Description

setup <agent>

Write the comfyui entry into hermes / openclaw / copilot config, then exit

--compact / --tool-mode compact

COMFYUI_MCP_TOOL_MODE=compact

full

Register 3 meta-tools instead of the full ~200-schema surface

Remote ComfyUI

Point the server at a ComfyUI running anywhere — no local install required:

npx -y comfyui-mcp@latest --comfyui-url http://192.168.1.50:8188
npx -y comfyui-mcp@latest --http --comfyui-url https://comfy.example.com:8443

Behind a reverse proxy / API gateway (path prefix + auth header) — for a self-hosted ComfyUI exposed under a prefixed route with its own auth layer (this is not Comfy Cloud, which is COMFYUI_API_KEY):

COMFYUI_URL=https://gateway.example.com/comfyapi \
COMFYUI_AUTH_TOKEN=your-token \
  npx -y comfyui-mcp@latest --http        # → Authorization: Bearer your-token, requests under /comfyapi

# custom header / scheme:
COMFYUI_URL=https://gateway.example.com/comfyapi \
COMFYUI_AUTH_HEADER=X-API-Key COMFYUI_AUTH_TOKEN=your-token \
  npx -y comfyui-mcp@latest --http        # → X-API-Key: your-token

Auto-detection

Port: Probes 8188 (CLI default) then 8000 (Desktop app default) via /system_stats.

Path: Checks common locations in order:

  • ~/Documents/ComfyUI (macOS/Windows Desktop app data directory)

  • ~/Library/Application Support/ComfyUI (macOS)

  • ~/AppData/Local/Programs/ComfyUI/resources/ComfyUI (Windows Desktop app install)

  • ~/AppData/Local/ComfyUI (Windows)

  • ~/ComfyUI, ~/code/ComfyUI, ~/projects/ComfyUI, ~/src/ComfyUI

  • /opt/ComfyUI, ~/.local/share/ComfyUI (Linux)

  • Scans ~/Documents and ~/My Documents for any directory containing "ComfyUI"

Set COMFYUI_PATH to skip detection and use an explicit path.


How It Works

The server communicates with ComfyUI through its REST API and WebSocket interface:

  • WebSocket — enqueue workflows, receive real-time progress updates (step-by-step via background monitor script), get execution results

  • REST API — system stats, node definitions (/object_info), logs, history, queue management, workflow library, VRAM control (/free), embeddings

  • File system — read/write models directory, detect installation paths, upload images, extract PNG metadata, browse outputs

  • External APIs — HuggingFace (model search), ComfyUI Registry (custom node discovery), GitHub (skill generation), CivitAI (model downloads)

All communication with the MCP client (Claude Code) happens over stdio using the Model Context Protocol. Logs go to stderr to avoid polluting the protocol stream.


Development

Prerequisites

Setup

git clone https://github.com/artokun/comfyui-mcp.git
cd comfyui-mcp
npm install

Scripts

Script

Description

npm run dev

Run from source with tsx (hot reload)

npm run build

Compile TypeScript to dist/

npm start

Run compiled output

npm test

Run unit tests (vitest)

npm run test:integration

Run integration tests (requires running ComfyUI)

npm run lint

Type-check without emitting

npm run generations:stats

Show local generation tracking statistics

npm run sync-agents

Sync Claude skills/commands/hooks to Google Antigravity, OpenCode, and other AI IDE formats that supports .agents files

Local testing with Claude Code

Point Claude Code at your local build instead of the npm package:

{
  "mcpServers": {
    "comfyui": {
      "command": "node",
      "args": ["/path/to/comfyui-mcp/dist/index.js"],
      "env": {}
    }
  }
}

Or test the plugin directly:

claude --plugin-dir ./plugin

Project structure

model-settings.json            # Community-maintained model presets (shipped)
model-settings.user.jsonc.example  # User override template (copied on install)
scripts/
  postinstall.mjs              # Auto-creates user config from template
  generation-stats.mjs         # CLI: npm run generations:stats
src/
  index.ts                 # MCP server entry point (stdio transport)
  config.ts                # Auto-detection & environment config
  comfyui/
    client.ts              # ComfyUI WebSocket/HTTP client wrapper
    types.ts               # TypeScript interfaces
  services/
    workflow-executor.ts   # Execute workflows, handle images & errors
    workflow-composer.ts   # Templates (txt2img, img2img, upscale, inpaint)
    workflow-validator.ts  # Dry-run validation (missing nodes, models, connections)
    image-management.ts    # Upload images, extract PNG metadata, list outputs
    mermaid-converter.ts   # Workflow → Mermaid diagram
    workflow-converter.ts  # UI → API: de-virtualize Get/Set buses + Reroutes, expand subgraphs, resolve bypass (powers strip_workflow)
    workflow-slicer.ts     # sliceWorkflow() — rgthree Fast-Groups-Bypass pipeline un-chunker (shared by the CLI + slice_workflow)
    mermaid-parser.ts      # Mermaid diagram → Workflow
    model-resolver.ts      # HuggingFace search, local models, downloads
    generation-tracker.ts  # SQLite generation log, settings dedup, stats
    file-hasher.ts         # SHA256 hashing of .safetensors with cache
    civitai-lookup.ts      # CivitAI API lookup by content hash
    workflow-settings-extractor.ts  # Extract settings from workflow JSON
    process-control.ts     # Stop, start, restart ComfyUI process
    registry-client.ts     # ComfyUI Registry API
    skill-generator.ts     # Generate node pack skill docs
  tools/                   # MCP tool registration (one file per group)
    workflow-execute.ts    # enqueue_workflow, get_system_stats
    workflow-visualize.ts  # visualize_workflow, mermaid_to_workflow
    workflow-compose.ts    # create_workflow, modify_workflow, get_node_info
    workflow-validate.ts   # validate_workflow
    workflow-library.ts    # list_workflows, get_workflow, strip_workflow, slice_workflow, save_workflow
    image-management.ts    # upload_image, workflow_from_image, list_output_images
    model-management.ts    # search_models, download_model, list_local_models
    memory-management.ts   # clear_vram, get_embeddings
    registry-search.ts     # search_custom_nodes, get_node_pack_details
    skill-generator.ts     # generate_node_skill
    generation-tracker.ts  # suggest_settings, generation_stats
    diagnostics.ts         # get_logs, get_history
    process-control.ts     # stop_comfyui, start_comfyui, restart_comfyui
    index.ts               # Registers all tool groups
  utils/
    errors.ts              # Custom error hierarchy with MCP integration
    logger.ts              # stderr-only logging (safe for stdio transport)
    image.ts               # Base64 encoding utilities
plugin/
  .claude-plugin/          # Plugin manifest
  .mcp.json                # MCP server config for plugin
  commands/                # Slash commands
    gen.md                 # /comfy:gen — image generation
    viz.md                 # /comfy:viz — workflow visualization
    node-skill.md          # /comfy:node-skill — skill generation
    debug.md               # /comfy:debug — failure diagnosis
    batch.md               # /comfy:batch — parameter sweeps
    convert.md             # /comfy:convert — format conversion
    install.md             # /comfy:install — node pack installation
    gallery.md             # /comfy:gallery — output browser
    compare.md             # /comfy:compare — workflow diff
    recipe.md              # /comfy:recipe — multi-step pipelines
  skills/                  # Knowledge bases
    comfyui-core/          # Workflow format, node types, pipeline patterns
    prompt-engineering/    # CLIP syntax, model-specific prompting
    troubleshooting/       # Error catalog with patterns and fixes
    model-compatibility/   # Compatibility matrix per model family
  agents/                  # Autonomous agents
    explorer.md            # Research custom node packs, generate skills
    debugger.md            # Diagnose workflow failures
    optimizer.md           # Analyze and optimize workflows
  hooks/                   # Pre/post tool-use hooks
    hooks.json             # Hook configuration
    vram-check.mjs         # VRAM watchdog before execution
    save-warning.mjs       # Save prompt before stop/restart
    job-complete-notify.mjs # Job completion notification via temp files
  scripts/                 # Background scripts
    monitor-progress.mjs   # Real-time WebSocket progress monitor

Troubleshooting

"ComfyUI not detected on ports 8188, 8000" Make sure ComfyUI is running. The Desktop app uses port 8000 by default; the CLI uses 8188. Set COMFYUI_PORT if you're using a custom port.

"COMFYUI_PATH is not configured" The auto-detection couldn't find your ComfyUI data directory. Set COMFYUI_PATH to the directory containing your models/ folder (e.g., ~/Documents/ComfyUI).

"Multiple ComfyUI installations detected" This is informational — the server uses the first one found. Set COMFYUI_PATH to pick a specific installation.

Model downloads fail For HuggingFace gated models, set HUGGINGFACE_TOKEN. For CivitAI, set CIVITAI_API_TOKEN.

Workflow execution errors Use /comfy:debug to automatically diagnose failures. Or use get_history / get_logs directly to see detailed error messages including Python tracebacks from ComfyUI.

Out of memory (OOM) Use clear_vram to free GPU memory before running large workflows. The VRAM watchdog hook will warn you automatically if memory is critically low. See the troubleshooting skill for model-specific VRAM estimates.

Missing custom nodes Use /comfy:install <pack> to install missing node packs from the registry. The debug command will detect and suggest missing packs automatically.


Contributing

Contributions are welcome! See CONTRIBUTING.md for the dev setup, project conventions, how to add an MCP tool, and the release process.

Quick version: fork → branch (feat/my-feature) → make changes (ensure npm run build and npm test pass; run npm run docs:gen if you touched tools) → open a PR.


Maintainer

Built and maintained by @artokun — a regular contributor across the Comfy-Org ecosystem:

  • Comfy-Org/ComfyUI_frontend — 10 merged PRs, mostly on the v2 graph renderer: subgraph rendering, promoted-widget plumbing, viewport persistence, with backports across cloud/1.41, cloud/1.42, core/1.41, and core/1.42.

  • Comfy-Org/ComfyUI (core) — crash fixes in the Python backend's video/audio save path (#12683, #12550).

Comfy-Org folks (or anyone hiring around the ComfyUI ecosystem): I'd genuinely love to chat — art.longbottom.jr@gmail.com.


License

MIT — see LICENSE for details.


Changelog

See CHANGELOG.md for the full, structured release history.

Available Tools

48 tools
analyze_workflowA

Load a saved workflow and return a structured analysis — sections, node settings, connections, and data flow. Use this to understand any workflow before modifying or executing it. Returns a concise text summary (not raw JSON) optimized for AI reasoning. Prefer this over get_workflow unless you need the raw JSON for enqueue_workflow or modify_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNosummary (default): structured text with sections, node IDs, key settings, virtual wires, and full connection graph — best for AI understanding. overview: mermaid diagram showing sections as summary nodes with cross-section data flow. detail: mermaid diagram for one section (requires section parameter). list: text listing of all sections with data flow summary. flat: single mermaid flowchart of the entire workflow (best for small workflows).summary
sectionNoSection name for detail view. Use view='list' first to see available section names.
filenameYesWorkflow filename (e.g. 'Scene Builder v3.json'). Use list_workflows to see available files.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations present, so description carries full burden. It discloses that the tool returns a text summary (not raw JSON) optimized for AI reasoning and that it loads a saved workflow. It does not explicitly state non-destructiveness but implies read-only analysis. Minor gap in stating side effects or permissions, but overall transparent.

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

Conciseness5/5

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

The description is three sentences, front-loaded with purpose and key details. No unnecessary words; every sentence adds value. Highly concise and well-structured.

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

Completeness4/5

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

Given no output schema, 3 parameters, and no annotations, the description adequately explains the tool's function, output format (text summary), and use case. Could elaborate on return structure, but the summary is sufficient for reasonable understanding. Minor gap for completeness.

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

Parameters3/5

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

Schema has 100% coverage with detailed parameter descriptions (e.g., view enum meanings, filename usage). The tool description adds high-level purpose but does not add meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly specifies the verb 'load' and 'return a structured analysis', identifies the resource 'workflow', and details output components (sections, node settings, connections, data flow). It explicitly distinguishes from sibling tool get_workflow, which returns raw JSON.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('understand any workflow before modifying or executing it') and when not to ('unless you need the raw JSON for enqueue_workflow or modify_workflow'), providing clear guidance against alternatives.

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

cancel_jobA

Interrupt/cancel the currently running ComfyUI job. Optionally target a specific running job by prompt_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_idNoOptional prompt_id to target a specific running job. If omitted, interrupts the current job.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the action (cancel) but does not disclose side effects, irreversibility, or consequences like loss of progress. Minimal behavioral transparency.

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

Conciseness5/5

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

The description is two sentences with no fluff, front-loading the purpose. Every sentence is meaningful and appropriately sized for the tool's simplicity.

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

Completeness4/5

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

For a simple tool with one optional parameter and no output schema, the description is largely sufficient. Could explicitly mention that it only works on running jobs (not queued) but sibling names provide that context.

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

Parameters3/5

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

Schema coverage is 100% and the description adds no new meaning beyond repeating the schema's parameter description. Baseline applies as description provides no extra semantic value.

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

Purpose5/5

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

The description clearly states the verb 'interrupt/cancel' and the resource 'currently running ComfyUI job', with an optional parameter for targeting a specific job. It effectively distinguishes from siblings like cancel_queued_job and clear_queue.

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

Usage Guidelines4/5

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

The description implies usage context (interrupt current or specific running job) but does not explicitly state when not to use or mention alternative tools. Context from sibling names partly compensates.

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

cancel_queued_jobA

Remove a specific pending job from the ComfyUI queue by prompt_id. Does not affect running jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_idYesThe prompt_id of the pending job to remove from the queue

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It clearly states the tool removes pending jobs and does not affect running ones, which is transparent about its scope. However, it lacks details such as whether the action is destructive, requires permissions, or produces any feedback (e.g., success/failure).

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the primary action and key constraint. No wasted words.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description is complete. It adequately covers what the tool does and its limitations (only pending jobs), which is sufficient for an agent to invoke it correctly.

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

Parameters3/5

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

The schema covers 100% of parameters with a description for 'prompt_id'. The description adds no extra meaning beyond the schema, simply restating the parameter's purpose. Baseline 3 is appropriate since schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the verb 'Remove', the resource 'a specific pending job', and specifies the identifier 'by prompt_id'. It explicitly distinguishes itself from sibling tools by noting it does not affect running jobs, which differentiates it from 'cancel_job' and 'clear_queue'.

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

Usage Guidelines4/5

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

The description explicitly says it only affects pending jobs, implying when to use it. However, it does not explicitly state when not to use it (e.g., for running jobs) or mention alternative tools like 'cancel_job' for running jobs. Still, the context is clear enough for correct selection.

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

clear_queueA

Clear all pending jobs from the ComfyUI queue. Does not affect the currently running job.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It transparently discloses that the tool clears pending jobs but leaves the current job unaffected. However, it does not mention whether the action is destructive or if any confirmation is required.

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

Conciseness5/5

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

Two sentences with no superfluous words. The first sentence immediately states the action and target, making it front-loaded and efficient.

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

Completeness5/5

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

For a tool with no parameters and no output schema, the description adequately covers the behavioral scope and key constraint, making it complete for an agent to understand its effect.

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

Parameters4/5

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

The tool has no parameters, and the description adds value by clarifying the scope ('all pending jobs') and the constraint ('does not affect currently running job'), which goes beyond the empty schema.

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

Purpose5/5

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

The description clearly identifies the verb 'Clear' and the resource 'all pending jobs from the ComfyUI queue'. It differentiates from sibling tools like 'cancel_job' by specifying it clears all pending jobs and does not affect the currently running job.

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

Usage Guidelines4/5

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

The description states the tool's purpose and the scope (all pending jobs, not running job). It implies usage for clearing the entire queue, but does not explicitly contrast with sibling tools like 'cancel_queued_job' for selective cancellation.

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

clear_vramA

Free GPU VRAM by unloading cached models from ComfyUI. Use this between generation runs with different model families (e.g. switching from SDXL to Flux) or when running low on VRAM. Optionally unload only models or only memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
free_memoryNoFree cached memory/intermediates (default: true)
unload_modelsNoUnload all cached models (default: true)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses optional behavior (unload only models or only memory) but does not mention potential side effects (e.g., impacting running jobs, requiring no pending generations). The description is adequate but not fully transparent.

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

Conciseness5/5

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

Three sentences, each serving a distinct purpose: purpose, usage, options. No redundancy or filler. The description is front-loaded with the primary action and efficiently provides all necessary context.

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

Completeness4/5

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

Given no output schema and a simple action, the description covers when to use, what it does, and parameter options. It could mention that it is a resource management tool with no effect on workflow definitions or job queues, but it is sufficiently complete for the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100% with clear boolean descriptions. The description adds value by explaining that you can choose to unload only models or only memory, which clarifies the independent usage of the parameters beyond what the schema states.

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

Purpose5/5

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

The description clearly states the action ('Free GPU VRAM'), the resource ('cached models from ComfyUI'), and the context. It distinguishes the tool from siblings that deal with workflows, jobs, or images, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit usage scenarios: between generation runs with different model families or when low on VRAM. It gives concrete examples (SDXL to Flux). It could be improved by mentioning when not to use (e.g., during active generation), but the guidance is solid.

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

create_workflowA

Create a ComfyUI workflow from a named template. Available templates: txt2img, img2img, upscale, inpaint, controlnet, ip_adapter. Returns the complete workflow JSON ready for execution or further modification.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoTemplate parameters (e.g. checkpoint, positive_prompt, negative_prompt, width, height, steps, cfg, seed, sampler_name, scheduler, denoise, image_path, mask_path, upscale_model)
templateYesTemplate name: txt2img, img2img, upscale, or inpaint

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It states 'creates' and 'returns JSON', but does not disclose side effects (e.g., persistence, overwriting), authorization requirements, or whether the workflow is saved. This leaves some ambiguity.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the action and purpose, then lists templates and output. Highly efficient.

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

Completeness4/5

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

For a 2-parameter tool with one required and no output schema, the description adequately covers purpose, available templates, and return value. It could mention whether 'params' is optional or how they affect the workflow, but overall complete enough.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaning by listing example parameter keys for 'params' (e.g., checkpoint, positive_prompt), which the schema only marks as additionalProperties. This helps the agent understand what can be passed.

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

Purpose5/5

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

The description clearly states the tool creates a ComfyUI workflow from a named template, lists all available templates, and indicates the output (complete workflow JSON). This distinguishes it from siblings like dsl_to_workflow or modify_workflow.

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

Usage Guidelines4/5

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

The description explicitly lists the six available templates, guiding when to use the tool. However, it does not mention when not to use it or compare with alternatives like modify_workflow or dsl_to_workflow.

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

download_modelA

Download a model file to the ComfyUI models directory from a URL (HuggingFace or direct link)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesDirect download URL for the model file
filenameNoOverride filename (auto-detected from URL if omitted)
target_subfolderYesTarget subfolder under ComfyUI models/ (e.g. 'checkpoints', 'loras', 'vae')

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the destination directory and acceptable URL sources. However, it does not disclose whether existing files are overwritten, or any permissions or size limitations, which would be useful for a download operation.

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

Conciseness5/5

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

Single sentence that is front-loaded with the core action and destination. No wasted words. Very concise.

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

Completeness4/5

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

Given the tool's relative simplicity, the description covers the main context. There is no output schema, so return values are not explained, but that is acceptable. One could argue for mentioning success/error feedback, but overall it is sufficiently complete.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying that the url is a direct download link, that filename auto-detects from URL if omitted, and that target_subfolder is an enum with examples like 'checkpoints', 'loras', etc. This provides meaning beyond the schema.

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

Purpose5/5

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

Description explicitly states the tool downloads a model file to the ComfyUI models directory from a URL, mentioning both HuggingFace and direct links. This clearly distinguishes it from sibling tools like list_local_models or search_models.

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

Usage Guidelines3/5

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

The description implies usage for downloading models from specific URL types but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. Sibling tools like search_models or list_local_models exist, but no comparative guidance is given.

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

dsl_to_workflowA

Convert the compact workflow DSL (see workflow_to_dsl) back into executable ComfyUI API-format JSON. Useful for authoring/editing workflows in the legible DSL, then converting to run with enqueue_workflow. (Experimental.)

ParametersJSON Schema
NameRequiredDescriptionDefault
dslYesWorkflow DSL text

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes transformation behavior and notes experimental. However, lacks details on error handling, validation, or side effects on invalid input.

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

Conciseness5/5

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

Two efficient sentences, front-loaded with action and resource. No wasted words, includes cross-reference to sibling tool.

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

Completeness4/5

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

Adequate for a simple conversion tool with one parameter and no output schema. Describes input, output format (API JSON), use case, and experimental status. Could specify if output is directly enqueueable.

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

Parameters3/5

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

Single parameter 'dsl' documented in schema with 'Workflow DSL text'. Description adds no extra detail beyond schema. Coverage is 100%, so baseline 3 applies.

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

Purpose5/5

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

Clearly identifies action (convert), resource (DSL to workflow JSON), and distinguishes from sibling tools like workflow_to_dsl (inverse) and enqueue_workflow (consumer).

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

Usage Guidelines4/5

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

Provides context for when to use: after authoring DSL, before enqueue_workflow. Mentions experimental nature. Could be more explicit about when not to use (e.g., if workflow already exists in API format), but sufficient.

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

enqueue_workflowA

Submit a ComfyUI workflow for execution and return immediately with the prompt_id and queue position. Does not wait for completion. Use get_job_status to check progress later, or get_history to retrieve results and images after completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesComfyUI workflow in API format (node ID -> {class_type, inputs})
disable_random_seedNoIf true, do not randomize seed values

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It accurately discloses the asynchronous behavior (immediate return without waiting) and what the tool returns. However, it does not mention error handling or validation behavior for invalid workflows, which is a minor gap.

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

Conciseness5/5

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

Two sentences with no waste. First sentence front-loads the core action and immediate return; second sentence elaborates on async behavior and next steps. Every sentence earns its place.

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

Completeness4/5

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

For a tool with 2 parameters and no output schema, the description adequately explains the immediate return values (prompt_id and queue position) and subsequent workflow. It could mention potential error cases, but overall it is sufficiently complete for a submission tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptive names and descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Submit' and resource 'ComfyUI workflow', specifying it returns immediately with 'prompt_id and queue position'. It distinguishes itself from sibling tools like get_job_status and get_history by mentioning them as alternatives for later progress/results.

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

Usage Guidelines5/5

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

Explicitly says 'Does not wait for completion' and directs the agent to use get_job_status for progress and get_history for results, providing 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.

generate_imageA

Generate an image from a text prompt — the high-level entry point. Builds a txt2img workflow, filling any unspecified parameter from your configured defaults (set_defaults / COMFYUI_DEFAULT_* / config file), auto-selecting a local checkpoint when none is given. Returns the prompt_id immediately; the resulting asset_id arrives in the completion notification and can be passed to view_image or regenerate. For full control over the node graph, use create_workflow + enqueue_workflow instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfgNoCFG scale
seedNoSeed (omit to randomize)
stepsNoSampling steps
widthNoImage width
heightNoImage height
promptYesPositive text prompt
samplerNoSampler name (e.g. euler, dpmpp_2m)
schedulerNoScheduler (e.g. normal, karras)
batch_sizeNoNumber of images to generate
checkpointNoCheckpoint filename; auto-selected from local models if omitted
negative_promptNoNegative prompt (default: empty / from defaults)

TDQS

A4.4/5.0
Behavior4/5

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

Describes building a txt2img workflow, filling unspecified parameters from defaults, auto-selecting checkpoint, and async return of prompt_id with later notification of asset_id. No annotations provided, so description carries full burden. Missing details on error handling or rate limits, but sufficient for typical usage.

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

Conciseness5/5

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

The description is a single paragraph of four sentences, each adding value: purpose, behavioral details, return value handling, and alternative for more control. No redundant or unnecessary words.

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

Completeness4/5

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

Given 11 parameters, no output schema, and no annotations, the description explains the async flow and how to get results. It covers defaults, checkpoint auto-selection, and ties to other tools. Could be slightly more detailed on potential failures, but sufficient for a high-level entry point tool.

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

Parameters3/5

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

Schema coverage is 100% with all parameters documented. The description adds minimal new parameter info beyond noting auto-selection of checkpoint and use of defaults, which is already in schema descriptions. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool generates an image from a text prompt as the high-level entry point. It specifies the verb 'generate' and resource 'image from text prompt', and differentiates from siblings like create_workflow + enqueue_workflow for full control.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (high-level entry point) and when not (for full node graph control use create_workflow + enqueue_workflow). Also mentions return behavior and how to use completion notification with view_image or regenerate.

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

generate_node_skillA

Analyze a ComfyUI custom node pack and generate a Claude skill (.md) file describing all its nodes, inputs/outputs, and usage examples. Accepts a ComfyUI Registry ID or a GitHub repository URL as the source.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesComfyUI Registry node ID (e.g. 'comfyui-impact-pack') or GitHub repository URL
install_inNoOptional directory path to save the generated SKILL.md file

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It does not mention whether the tool modifies anything, permissions needed, or what happens when 'install_in' is omitted (e.g., saving to current directory or returning content). This leaves significant ambiguity 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.

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and contains no unnecessary words. Every sentence adds meaningful information.

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

Completeness2/5

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

With no output schema, the description should clarify what the tool returns or produces. It mentions generating a file but does not specify whether it returns the file path, content, or just creates it. The optional 'install_in' parameter hints at file creation, but behavior without it is undefined. Missing details on overwrite behavior or error handling.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds clarity by explaining the 'source' parameter accepts Registry IDs or GitHub URLs, but adds little beyond the schema's existing description. No additional guidance on 'install_in' beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool analyzes a ComfyUI custom node pack and generates a skill file. The verb ('analyze and generate') and resource ('custom node pack, skill file') are specific, and it distinguishes from siblings like 'get_node_pack_details' by focusing on skill file creation.

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

Usage Guidelines4/5

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

The description specifies acceptable source formats (Registry ID or GitHub URL), implying when to use the tool. However, it does not explicitly mention when not to use it or provide direct alternatives, but the context is clear enough for an agent.

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

generate_with_controlnetA

Generate an image conditioned by a ControlNet preprocessed image (pose skeleton, depth, canny, normal, etc.) plus a text prompt. Upload the control image first with upload_image, then pass its filename as control_image. Unspecified params fall back to your defaults; checkpoint and controlnet_model auto-resolve from local models. Returns prompt_id immediately; asset_id arrives in the completion notification.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfgNo
seedNo
stepsNo
widthNo
heightNo
promptYesPositive text prompt
samplerNo
strengthNoControlNet conditioning strength (default 1.0)
schedulerNo
checkpointNoCheckpoint filename; auto-selected if omitted
control_imageYesFilename of the (already-uploaded) control image in ComfyUI's input dir
negative_promptNo
controlnet_modelNoControlNet model file (in models/controlnet/); auto-selected if omitted

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that returns are asynchronous (prompt_id immediately, asset_id later), and mentions fallback defaults and auto-resolution for checkpoint and controlnet_model. Missing details on potential errors 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.

Conciseness5/5

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

Three sentences, front-loaded with purpose, no redundancy. Each sentence earns its place: purpose, prerequisite, and return behavior.

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

Completeness3/5

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

Given 13 parameters and no output schema, the description covers the workflow outline but lacks parameter ranges, defaults, and output format details. It is adequate but not complete.

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

Parameters3/5

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

Schema coverage is low (38%). The description adds context by explaining auto-resolve and fallback behavior, but it does not describe most parameters (e.g., cfg, seed, steps). It partially compensates but is insufficient given the low coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose: generating images conditioned by a ControlNet preprocessed image plus a text prompt. It distinguishes itself from siblings like generate_image and generate_with_ip_adapter by specifying the ControlNet conditioning.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (with a ControlNet preprocessed image) and gives a prerequisite step (upload control image first with upload_image). However, it does not explicitly list alternatives or scenarios where other tools are better.

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

generate_with_ip_adapterA

Generate an image guided by a reference image's style/subject via IP-Adapter, plus a text prompt. Requires the ComfyUI_IPAdapter_plus custom nodes. Upload the reference first with upload_image, then pass its filename as reference_image. Unspecified params fall back to your defaults; checkpoint auto-resolves. Returns prompt_id immediately; asset_id arrives in the completion notification.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfgNo
seedNo
stepsNo
widthNo
heightNo
presetNoIPAdapterUnifiedLoader preset (default 'PLUS (high strength)')
promptYesPositive text prompt
weightNoIP-Adapter weight (default 0.8)
samplerNo
schedulerNo
checkpointNoCheckpoint filename; auto-selected if omitted
negative_promptNo
reference_imageYesFilename of the (already-uploaded) reference image in ComfyUI's input dir

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool requires custom nodes, defers to default values, auto-resolves checkpoints, and returns a prompt_id immediately with asset_id arriving later. While it doesn't address destructive/revertibility or rate limits, it covers the key behavioral traits relevant for a generation tool.

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

Conciseness5/5

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

The description is concise—five sentences—with each sentence adding essential context. It front-loads the purpose and then provides step-by-step guidance, return behavior, and dependency notice. No extraneous information exists.

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

Completeness4/5

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

Given 13 parameters, 2 required, and no output schema, the description covers the critical workflow (upload first, then use filename), explains auto-resolution of defaults and checkpoint, and describes the return pattern. It lacks specifics on how to retrieve the final asset beyond the notification, but overall it provides sufficient context 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.

Parameters3/5

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

Schema description coverage is only 38%, so the description must compensate. It adds meaning for reference_image (filename of already-uploaded image), checkpoint (auto-selected if omitted), and explains fallback defaults. However, many parameters (cfg, seed, steps, width, height, sampler, scheduler, negative_prompt) are not elaborated beyond their schema names/types, leaving gaps. The description adds some value but not enough to fully compensate for low coverage.

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

Purpose5/5

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

The description explicitly states the tool's purpose: generating an image guided by a reference image's style/subject via IP-Adapter plus a text prompt. It clearly distinguishes from sibling tools like generate_image and generate_with_controlnet by specifying the IP-Adapter mechanism and the need for a reference image.

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

Usage Guidelines4/5

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

The description provides clear usage steps: upload the reference image first using upload_image, then pass its filename as reference_image. It notes the requirement for custom nodes (ComfyUI_IPAdapter_plus) and mentions that unspecified parameters fall back to defaults and checkpoint auto-resolves. This offers good guidance on when and how to use the tool, though explicit when-not-to-use scenarios are absent.

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

generation_statsA

Show local generation tracking statistics — total runs, unique combos, breakdown by model family.

ParametersJSON Schema
NameRequiredDescriptionDefault
model_familyNoFilter stats to a specific model family

TDQS

A3.8/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It accurately describes a read-only operation ('Show...tracking statistics'), with no hidden side effects or permissions implied. However, it does not mention data freshness 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.

Conciseness5/5

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

Description is a single, efficient sentence with no wasted words. It front-loads the purpose and includes key details (total runs, unique combos, breakdown).

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

Completeness4/5

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

For a simple tool with one optional parameter and no output schema, the description covers the essential functionality. However, it does not specify the output format or explain 'unique combos' further, leaving minor ambiguity for an agent.

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

Parameters3/5

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

Schema coverage is 100% (one parameter described). The description adds context like 'local generation tracking' but does not significantly expand on the parameter meaning beyond the schema's description.

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

Purpose5/5

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

The description clearly states the resource (local generation tracking statistics) and the actions (show total runs, unique combos, breakdown by model family). It distinguishes from siblings like get_system_stats by specifying 'generation' tracking.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., get_system_stats, get_history). While the description implies usage for generation statistics, it lacks when-not-to-use or alternative recommendations.

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

get_asset_metadataA

Get full provenance for a registered asset including the workflow snapshot that produced it. Use this to inspect the parameters that generated an image before calling regenerate with overrides.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset id returned by list_assets or job completion

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It implies a read operation and specifies return of full provenance and workflow snapshot. However, it doesn't explicitly state read-only hint or any potential side effects, which is adequate but not excellent.

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

Conciseness5/5

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

Two concise sentences. First sentence introduces purpose and output, second sentence provides usage context. Front-loaded with verb and resource. No waste.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description sufficiently covers what the tool does and when to use it. It leaves no major gaps given the low complexity.

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

Parameters4/5

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

Schema coverage is 100% with one parameter. Description adds context by mentioning the asset_id comes from 'list_assets or job completion', providing useful origin information beyond the schema.

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

Purpose5/5

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

Description clearly states the verb 'Get' and resource 'full provenance for a registered asset', specifying content (workflow snapshot) and use case (inspect parameters). This distinguishes it from sibling tools like regenerate or get_image.

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

Usage Guidelines4/5

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

Explicitly says 'Use this to inspect the parameters that generated an image before calling regenerate with overrides', giving clear context for when to use it. Does not mention when not to use or alternatives, but the context is clear.

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

get_defaultsA

Return the merged view of generation defaults with per-source attribution. Precedence (lowest → highest): config file → COMFYUI_DEFAULT_* env vars → runtime overrides via set_defaults. Per-call MCP tool args always win over these defaults when consumed by a workflow-construction tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a merged view with per-source attribution and details the precedence logic. This is sufficient for a read-only getter tool, as there are no destructive behaviors to disclose.

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

Conciseness5/5

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

The description is two sentences with no fluff. The first sentence states the purpose, and the second adds important precedence details. Each sentence earns its place.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description is reasonably complete. It explains what is returned and the precedence rules. It could optionally mention that this complements set_defaults, but it is not necessary for basic understanding.

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

Parameters4/5

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

The input schema has zero parameters, and the description does not need to add parameter information. Baseline for zero parameters is 4.

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

Purpose5/5

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

The description clearly states it returns the merged view of generation defaults with per-source attribution. It uses a specific verb ('Return') and resource ('generation defaults'), and implicitly distinguishes from sibling tools like set_defaults.

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

Usage Guidelines4/5

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

The description explains the precedence order and notes that per-call MCP tool args always win over defaults, providing context for when the defaults are relevant. However, it does not explicitly state when not to use this tool or mention alternatives beyond the implicit relationship to set_defaults.

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

get_embeddingsA

List installed textual inversion embeddings. These can be used in prompts with the syntax embedding:name (e.g. embedding:easynegative).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It describes the action as listing, implying read-only behavior, but does not explicitly state side effects, auth requirements, or return format. With no output schema, more detail on output would improve transparency.

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

Conciseness5/5

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

The description is brief, with two sentences that immediately convey the purpose and a practical usage example. No unnecessary words.

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

Completeness4/5

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

For a tool with no parameters and no output schema, the description covers the essential context: what the tool lists and how it can be used. Slightly more detail on return format would increase completeness, but it's adequate.

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

Parameters4/5

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

No parameters exist, so the description cannot add meaning beyond the schema. The schema coverage is 100% with zero parameters, meeting the baseline for this dimension.

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

Purpose5/5

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

The description explicitly states 'List installed textual inversion embeddings' with a clear verb and resource. It distinguishes from sibling list tools by specifying 'textual inversion embeddings' specifically.

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

Usage Guidelines4/5

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

Provides usage context by explaining how embeddings are used in prompts with embedding:name syntax. Does not explicitly state when not to use or list alternatives, but the context is clear for a simple list tool.

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

get_historyA

Get execution history for a ComfyUI prompt. Returns status, timing, cached nodes, output details, and full error information including Python tracebacks. Use after a failed enqueue_workflow to diagnose what went wrong.

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_idNoSpecific prompt ID to look up (returned by enqueue_workflow). If omitted, returns the most recent execution.

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description carries the burden. It discloses return values (status, timing, cached nodes, output, error info including tracebacks). This is sufficient for a read operation; no hidden behaviors are omitted.

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

Conciseness5/5

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

Two sentences: first states purpose and returns, second gives usage guidance. No redundancy, every sentence earns its place. Front-loaded with key information.

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

Completeness4/5

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

Given a single optional parameter, no output schema, and no annotations, the description is complete enough. It explains what the tool does, what it returns, and when to use it. Could add more about response structure but sufficient for the complexity.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the only parameter (prompt_id). The description adds usage context but does not enhance parameter semantics beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool gets execution history for a ComfyUI prompt, listing specific return elements (status, timing, cached nodes, output details, error info). This is a specific verb+resource with sufficient detail to distinguish from sibling tools like get_job_status or get_logs.

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

Usage Guidelines4/5

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

Explicitly says 'Use after a failed enqueue_workflow to diagnose what went wrong,' providing clear context for when to invoke. Does not list alternatives or when not to use, but the guidance is direct and actionable.

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

get_imageA

Fetch a generated image from ComfyUI and return it as an inline image. Works with remote ComfyUI instances — does not require COMFYUI_PATH. Use get_history first to obtain the filename.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoImage directory: output (default), input, or tempoutput
filenameYesOutput image filename, e.g. PulID_Klein_00001_.png
save_dirNoLocal directory to save the image file. Defaults to /tmp/comfyui-images/.
subfolderNoSubfolder within the directory, if any

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It mentions working with remote instances and not requiring COMFYUI_PATH. But it does not disclose error behavior (e.g., file not found), authentication needs, or rate limits. This is adequate but not thorough.

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

Conciseness5/5

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

Two concise sentences with no fluff. Every sentence adds value: the first states the action and output, the second provides usage context and dependency information.

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

Completeness3/5

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

No output schema, so description should clarify the return format. It says 'return it as an inline image' but does not specify the encoding (e.g., base64) or structure. It also lacks differentiation from sibling tools like 'view_image', given the large sibling list.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema, only referencing the 'filename' parameter indirectly. It does not explain the other parameters or their nuances.

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

Purpose4/5

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

The description clearly states it fetches a generated image from ComfyUI and returns it inline. The verb 'Fetch' and resource 'generated image' are specific. However, it does not explicitly distinguish from sibling tools like 'view_image' or 'list_output_images'.

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

Usage Guidelines4/5

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

The description provides a key dependency: 'Use get_history first to obtain the filename.' This helps the agent understand the workflow. However, it does not discuss when not to use this tool or alternatives.

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

get_job_statusA

Check the execution status of a ComfyUI prompt/job by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
prompt_idYesThe prompt ID returned by enqueue_workflow

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It correctly implies a read operation, but does not disclose potential errors, rate limits, or whether it is idempotent. Basic transparency is provided but not comprehensive.

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

Conciseness5/5

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

The description is a single sentence of 11 words, no filler, and immediately states purpose. Excellent conciseness with no wasted text.

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

Completeness3/5

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

The tool is simple with one parameter, but no output schema exists and the description does not explain what the status response includes. For a status-checking tool, knowing possible return values (e.g., pending, completed, failed) is important. The description is adequate but incomplete.

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

Parameters3/5

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

Schema coverage is 100%, so the description is not expected to add much. It does not repeat the param description but provides context that the prompt ID comes from 'enqueue_workflow'. This adds mild value, meeting the baseline for high coverage.

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

Purpose5/5

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

The description uses a clear verb ('Check') and specifies the resource ('execution status of a ComfyUI prompt/job'). It mentions the key input ('by its ID'), which distinguishes it from siblings like 'enqueue_workflow' and 'cancel_job'.

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

Usage Guidelines3/5

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

The description implies usage after enqueuing a workflow, but does not explicitly state when to use it versus alternatives, nor does it provide prerequisites or exclusions. No guidance on 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.

get_logsB

Get ComfyUI server runtime logs. Useful for debugging execution errors, model loading issues, missing nodes, and Python tracebacks.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNoFilter log lines containing this keyword (case-insensitive). Examples: 'error', 'warning', 'VRAM', a node name
max_linesNoMaximum number of log lines to return from the end (default: 100)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read operation ('Get') but does not explicitly confirm non-destructiveness or disclose any side effects. It also does not mention log persistence, truncation, or ordering beyond what is in the schema.

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

Conciseness5/5

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

The description is concise with two sentences, front-loading the purpose and use cases. Every word adds value, no redundancy.

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

Completeness3/5

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

For a simple tool with 2 optional parameters and no output schema, the description is adequate but lacks details about return format (e.g., order, whether full logs or recent lines). It mentions specific debugging scenarios, which adds context, but could be more complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented in the input schema. The tool description does not add additional semantic meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves ComfyUI server runtime logs, with specific use cases like debugging errors and model loading issues. It uses a specific verb ('Get') and resource ('logs'), and is distinct from sibling tools like get_history or get_job_status.

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

Usage Guidelines2/5

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

The description provides examples of when to use (debugging execution errors, model loading issues) but does not explicitly state when not to use or contrast with alternative tools. Given siblings like get_job_status and get_history, guidance on differentiation is missing.

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

get_node_infoA

Query ComfyUI's /object_info endpoint to get available node type definitions. Optionally filter by node type name (substring match). Returns node inputs, outputs, and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_typeNoFilter by node class_type name (case-insensitive substring match). Omit to list all available nodes.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It reveals the tool is a query (read-only) operation by mentioning 'Query' and states the return format. However, it does not explicitly state that there are no side effects, no state modifications, or potential error conditions, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise at two sentences. Every word is purposeful: the first sentence states the core action and return value, the second explains the optional filter. No redundant or extraneous text.

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

Completeness4/5

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

Given no output schema, the description adequately summarizes that the tool returns node inputs, outputs, and descriptions. It could mention error handling or endpoint availability, but for a simple read-only query, it is sufficiently complete for an agent to understand the tool's purpose and output.

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

Parameters3/5

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

The input schema has 100% descriptive coverage for the single parameter, and the description merely echoes the schema's substring match explanation. It adds no new semantic meaning beyond what the schema already provides, so baseline score 3 applies.

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

Purpose5/5

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

The description clearly states the tool queries ComfyUI's /object_info endpoint to get node type definitions, specifies optional filtering, and mentions the return type (node inputs, outputs, descriptions). The verb 'Query' and resource 'node type definitions' are specific and distinct from sibling tools like 'get_node_pack_details'.

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

Usage Guidelines3/5

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

The description explains the optional filter parameter but provides no guidance on when to use this tool versus alternatives, such as 'get_node_pack_details' or other info tools. It lacks explicit 'when to use' or 'when not to use' context.

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

get_node_pack_detailsB

Get detailed information about a specific ComfyUI custom node pack from the Registry

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNode pack ID (e.g. 'comfyui-impact-pack')

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It does not state whether the operation is read-only, requires authentication, has rate limits, or what errors may occur. The phrase 'from the Registry' hints at a network call but lacks sufficient detail for an agent to anticipate behavior.

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

Conciseness5/5

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

The description is a single concise sentence. It is front-loaded with the action and resource, and every word contributes meaning. No extraneous information is present.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It does not explain what 'detailed information' entails (e.g., attributes of the node pack), error responses, or pagination. An agent cannot fully understand the tool's behavior or output from this description alone.

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

Parameters3/5

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

The input schema covers the single parameter 'id' with a description and example. Since schema description coverage is 100%, the description adds no extra semantics. The tool description's mention of 'specific ComfyUI custom node pack' aligns with the parameter but does not elaborate on format or constraints beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action ('get detailed information'), the resource ('ComfyUI custom node pack'), and the source ('from the Registry'). It distinguishes itself from sibling tools like 'get_node_info' (which likely targets individual nodes) and 'search_custom_nodes' (which is for searching, not fetching details).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not indicate whether to first search for node packs using 'search_custom_nodes' or whether this tool complements 'get_node_info'. No when-not-to-use or prerequisite information is included.

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

get_queueA

Get the current ComfyUI execution queue showing running and pending jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided. Description reveals that the tool returns running and pending jobs, but does not disclose performance implications, authentication needs, or rate limits. Minimal additional context beyond name.

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

Conciseness5/5

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

Single sentence, no wasted words. Front-loaded with the action and resource.

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

Completeness5/5

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

Given the tool is simple with no parameters or output schema, the description adequately explains what is returned. No further detail is necessary for an agent to use it correctly.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Description adds that it retrieves the 'current' queue, which is marginally helpful. Baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the tool gets the current ComfyUI execution queue, specifying it shows running and pending jobs. This distinguishes it from sibling tools that modify the queue.

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

Usage Guidelines4/5

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

The description implies usage is for viewing the queue state, but lacks explicit guidance on when to use this vs alternatives like cancel_job or clear_queue. It is clear from context but could be more direct.

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

get_system_statsA

Get ComfyUI system information including GPU, VRAM, Python version, and OS details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It correctly conveys read-only behavior and lists returned information. It could mention any required permissions or rate limits, but for a simple info tool, it is sufficient.

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

Conciseness5/5

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

A single sentence that is perfectly concise, front-loading the action and listing key items with no redundant words.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description is complete enough. It could mention that the output is a JSON object, but the listed items provide adequate context.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. The description adds value by enumerating what information is included, compensating for the lack of parameter details.

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

Purpose5/5

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

The description explicitly states the tool retrieves system information and lists specific components (GPU, VRAM, Python version, OS details), making the purpose clear and distinguishing it from all sibling tools.

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

Usage Guidelines4/5

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

No explicit when-to-use or alternatives guidance is provided, but given the tool's simplicity and lack of similar sibling tools, the context is clear and no exclusions are needed.

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

get_workflowA

Load a saved workflow and return its raw JSON. Use analyze_workflow instead if you just need to understand the workflow — it returns a structured summary without flooding context with JSON. Use get_workflow only when you need the actual JSON for enqueue_workflow, modify_workflow, or save_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: 'api' (default, recommended) converts to compact API format with named inputs, connection references, and _meta.mode flags for muted/bypassed nodes. 'ui' returns the raw UI format with layout positions and links arrays.api
filenameYesWorkflow filename (e.g. 'my_workflow.json'). Use list_workflows to see available files.

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description explains the output format options (ui vs api) and their implications. It discloses that the tool returns raw JSON and recommends api format. Could mention that it's a read-only operation, but the context makes it clear.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then usage guidance. No wasted words. Well-structured and efficient.

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

Completeness5/5

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

Given no output schema and no annotations, the description covers purpose, usage context, parameter details, and alternative tools. It is complete for a read operation with two parameters.

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

Parameters5/5

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

Schema coverage is 100%, and description adds significant meaning beyond the schema: explains format parameter with usage details, and for filename suggests using list_workflows to discover available files. Adds high value.

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

Purpose5/5

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

The description clearly states 'Load a saved workflow and return its raw JSON' with specific verb and resource. It also distinguishes from sibling analyze_workflow, achieving high clarity.

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

Usage Guidelines5/5

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

Explicitly says when to use get_workflow vs analyze_workflow, providing specific scenarios where this tool is needed (for enqueue_workflow, modify_workflow, save_workflow). No exclusions needed.

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

list_assetsA

List recently generated assets from the in-memory registry, newest-first. Assets are registered automatically when a workflow completes successfully. The registry is ephemeral and clears on server restart; records expire after COMFYUI_ASSET_TTL_HOURS (default 24h).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax records to return (default: all)
sinceNoISO timestamp — only return assets created at or after this time

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the registry is in-memory, clears on restart, and records expire after a configurable TTL, which is good behavioral context. It does not explicitly state that the tool is read-only, but 'list' implies no side effects.

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

Conciseness5/5

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

Three concise sentences that front-load the core purpose and then add necessary context about registration and expiration. Every sentence adds value with no redundancy.

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

Completeness3/5

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

The description lacks details about the return format or fields of assets, and there is no output schema. While the tool is simple, the description could be more complete by indicating what properties each asset includes.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already well-documented in the schema. The description does not add additional meaning beyond what the schema provides; it only gives broader registry context. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'recently generated assets from the in-memory registry' with sorting order 'newest-first'. It distinguishes from siblings like 'list_output_images' by specifying the registry context.

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

Usage Guidelines4/5

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

The description explains when assets are registered (workflow completion) and their ephemeral nature (TTL and server restart), giving context for usage. However, it does not explicitly state when not to use this tool or name alternatives, though the context implies it for completed workflow assets.

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

list_local_modelsA

List model files installed in the local ComfyUI models directory

ParametersJSON Schema
NameRequiredDescriptionDefault
model_typeNoFilter by model type (e.g. 'checkpoints', 'loras'). Lists all types if omitted.

TDQS

A3.7/5.0
Behavior3/5

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

Despite no annotations, the description is adequate for a simple read operation. It does not mention return format or potential limitations (e.g., scanning subdirectories), but the behavior is straightforward.

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

Conciseness5/5

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

Single sentence with clear subject, verb, and object. No unnecessary words. Properly front-loaded.

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

Completeness5/5

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

Given the tool's simplicity (one optional enum parameter, no output schema), the description is fully complete. It covers all necessary aspects for correct usage.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes the parameter's purpose and default behavior. The description adds no additional semantic value beyond what is in the schema.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'model files', and the location 'local ComfyUI models directory'. It effectively distinguishes from sibling tools like search_models and download_model.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives (e.g., search_models for remote models). There is no mention of prerequisites or scenarios where this tool is appropriate.

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

list_output_imagesA

List recently generated images from ComfyUI's output directory. Returns filenames sorted newest-first. Requires COMFYUI_PATH. For remote ComfyUI, use get_history to find filenames, then get_image to fetch them.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax images to return (default: 20)
patternNoFilter by filename pattern (case-insensitive substring match)

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the output sorting order and the environment requirement. While it doesn't cover edge cases or error states, it adequately informs the agent of the tool's basic behavior for a simple read operation.

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

Conciseness5/5

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

Three sentences with no wasted words. The main action is front-loaded, return format is second, and usage guidance with alternatives is in the third. Every sentence earns its place.

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

Completeness5/5

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

Given the tool's simplicity (2 non-required params, no output schema), the description is fully complete. It covers purpose, output, prerequisite, and alternative tools for a different context. Handles the sibling tool landscape well.

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

Parameters4/5

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

Both parameters have schema descriptions (100% coverage), so baseline is 3. The description adds value by stating the default behavior ('newest-first' sort order) and clarifying the pattern matching as 'case-insensitive substring match', which goes beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('list recently generated images'), specifies the resource ('ComfyUI's output directory'), and distinguishes the behavior ('returns filenames sorted newest-first'), which differentiates it from sibling tools like get_image or view_image.

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

Usage Guidelines5/5

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

Explicitly states the prerequisite ('Requires COMFYUI_PATH') and provides clear guidance for remote ComfyUI scenarios, directing the agent to use get_history and get_image instead. This effectively tells when and when not to use the tool, with alternatives named.

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

list_workflowsA

List saved workflows from the ComfyUI user library.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided; description only restates action without detailing side effects, permissions, or output nature, providing minimal behavioral insight.

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

Conciseness5/5

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

Single sentence, 9 words, front-loaded with no superfluous content.

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

Completeness4/5

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

Sufficient for a simple list tool with no parameters or output schema; slightly more context about scope (user library vs system) would improve completeness.

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

Parameters4/5

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

No parameters exist, so description needs no additional meaning; baseline score of 4 is appropriate for zero-parameter tools.

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

Purpose5/5

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

Description uses specific verb 'list' and resource 'saved workflows from the ComfyUI user library', clearly distinguishing from sibling tools like get_workflow or create_workflow.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or alternatives; usage is implied as a basic list operation but lacks contextual direction among many siblings.

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

mermaid_to_workflowA

Convert a Mermaid flowchart diagram back into a ComfyUI workflow JSON. Parses node definitions, connections (with data type labels), and widget values from the mermaid syntax. Resolves node types and wires connections using ComfyUI's /object_info schemas. Fills missing inputs with defaults. Returns a valid, executable ComfyUI API workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
mermaidYesMermaid flowchart text (with or without ```mermaid code fence). Nodes should use ComfyUI class_type names as labels. Connections should be labeled with data types (e.g., -->|MODEL|).

TDQS

A4.2/5.0
Behavior3/5

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

Discloses parsing, resolution using /object_info schemas, filling defaults, and returning executable workflow. However, it lacks information on error handling, unsupported Mermaid features, or validation, which is notable without annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with primary purpose, no unnecessary words. Each sentence adds essential information about the conversion process.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers input format, processing steps, and output. It could mention supported Mermaid syntax details or limitations, but overall adequate.

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

Parameters4/5

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

The description adds significant meaning beyond the schema's explanation: it specifies Mermaid flowchart text, optional code fences, node labels with class_type names, and connection labels with data types. With 100% schema coverage, this is valuable context.

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

Purpose5/5

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

The description explicitly states the tool converts Mermaid flowchart diagrams to ComfyUI workflow JSON, specifying input format and output. It distinguishes from sibling tools like workflow_to_dsl and visualize_workflow.

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

Usage Guidelines4/5

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

Describes the use case clearly: converting Mermaid text to a ComfyUI workflow. It details parsing steps but doesn't explicitly state when not to use or provide alternatives, though sibling context implies differentiation.

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

modify_workflowA

Apply modification operations to an existing ComfyUI workflow. Supports: set_input, add_node, remove_node, connect, insert_between. Returns the modified workflow JSON and IDs of any newly added nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesComfyUI workflow JSON (as a JSON string or object)
operationsYesArray of operations to apply in order. Each has an 'op' field: set_input, add_node, remove_node, connect, or insert_between

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It states the return value (modified workflow JSON and new node IDs), but lacks details on side effects, validation behavior, error handling, permissions, or reversibility of operations.

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

Conciseness5/5

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

The description is two concise sentences. The first states the primary purpose, and the second lists the supported operations and return value. No unnecessary words.

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

Completeness3/5

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

Given the tool's complexity (multiple operation types, array of operations), the description covers the basic purpose and return value but omits ordering constraints, validation, error cases, and does not leverage an output schema. It is adequate but not complete.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description lists operation types but does not elaborate on parameter semantics beyond what the schema provides. It adds minimal additional meaning.

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

Purpose5/5

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

The description clearly states the tool applies modification operations to an existing ComfyUI workflow, lists five specific operations (set_input, add_node, remove_node, connect, insert_between), and distinguishes it from sibling tools like create_workflow or validate_workflow.

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

Usage Guidelines3/5

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

The description implies usage when modifying a workflow, but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The list of supported operations gives some context for selection but no comparative guidance.

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

regenerateA

Re-enqueue the workflow that produced an existing asset, optionally applying parameter overrides. Overrides are applied to any node input matching the key name (e.g. cfg, steps, sampler_name, scheduler, seed, denoise, text). Seeds are re-randomized by default so each regenerate yields a fresh image unless seed is explicitly passed in overrides.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset id of the source generation
overridesNoMap of input-name → new value applied to every node that already has that input. Common keys: cfg, steps, sampler_name, scheduler, seed, denoise, text.
disable_random_seedNoIf true, do not randomize seed fields. Combine with `overrides.seed` to reproduce the exact original image.

TDQS

A4.6/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavioral traits: seeds are re-randomized by default unless explicitly overridden, and overrides apply to any matching node input. No contradictions.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and every sentence adds essential detail. No waste.

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

Completeness4/5

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

Given the tool's moderate complexity with 3 parameters and no output schema, the description is sufficiently complete. It covers behavior and parameter semantics, though a note about return value (e.g., job ID) would be slightly helpful.

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

Parameters4/5

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

Schema coverage is 100%, giving a baseline of 3. The description adds value by explaining the overrides map with common keys and the disable_random_seed behavior, which supplements the schema.

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

Purpose5/5

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

The description clearly states the tool re-enqueues the workflow for an existing asset with optional overrides. It specifies the verb 're-enqueue' and resource 'workflow', and the examples of override keys distinguish it from similar tools like 'enqueue_workflow'.

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

Usage Guidelines4/5

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

The description explains when to use the tool for regenerating assets with optional overrides. It provides clear context but does not explicitly mention when not to use it or compare with alternatives like 'generate_image'.

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: stops the running process (capturing its config), waits for the port to free, relaunches with the same arguments, and waits for the API to become ready.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excellently discloses the entire lifecycle: stopping the process, capturing config, freeing the port, relaunching with identical arguments, and waiting for API readiness. No contradictions.

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

Conciseness5/5

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

A single, front-loaded sentence that efficiently conveys the entire workflow without wasted words. Every clause adds essential detail.

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

Completeness5/5

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

Given zero parameters and no output schema, the description fully explains what the tool does. It covers the entire restart sequence, making it complete for this simple operation.

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

Parameters4/5

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

The tool has zero parameters, so baseline is 4. No additional parameter information needed.

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

Purpose5/5

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

The description clearly specifies the action 'Restart ComfyUI' and details the entire process: stopping, capturing config, waiting for port, relaunching with same args, waiting for API. This distinguishes it from siblings like start_comfyui and stop_comfyui.

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

Usage Guidelines3/5

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

Usage context is implied but not explicit. The description states what the tool does but does not provide guidance on when to use it versus alternatives like start_comfyui or stop_comfyui, nor does it mention prerequisites or postconditions.

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

save_workflowB

Save a workflow to the ComfyUI user library so it appears in the web UI. Accepts either API format or UI format JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFilename to save as (e.g. 'my_workflow.json'). Will overwrite if it already exists.
workflowYesWorkflow JSON to save (API or UI format)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It mentions that the file will overwrite if it already exists, which is a key behavioral trait. However, it does not disclose other important behaviors like authentication requirements, validation, size limits, or error outcomes.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and contains no fluff. Every sentence adds value.

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

Completeness4/5

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

For a simple 2-parameter tool with full schema coverage, the description adequately explains the destination, format acceptance, and overwrite behavior. It lacks mention of return values or success indicators, but the absence of an output schema reduces the need. Overall, it is fairly complete.

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

Parameters3/5

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

The input schema covers both parameters with descriptions. The main description reinforces that the workflow accepts API or UI format. No additional semantic details beyond the schema are provided, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool saves a workflow to the ComfyUI user library and mentions it accepts API or UI format JSON. The verb 'save' and resource 'workflow' are explicit. However, it doesn't distinguish from sibling tools like create_workflow or modify_workflow, which may have overlapping functionality.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as create_workflow or modify_workflow. No when-not-to-use or context is provided, leaving the agent without decision support.

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

search_custom_nodesB

Search the ComfyUI Registry for custom node packs by keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default 1)
limitNoMax results to return (default 10)
queryYesSearch query for custom node packs

TDQS

B3.3/5.0
Behavior2/5

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

No annotations present, so description carries full burden. It only states the basic action. No disclosure of pagination behavior, auth needs, rate limits, or result format beyond what schema provides.

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

Conciseness5/5

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

One sentence, no wasted words. Efficiently conveys the purpose.

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

Completeness3/5

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

For a simple search tool with no output schema, the description is adequate but could mention that results include node packs or provide usage context.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Search', the resource 'ComfyUI Registry for custom node packs', and the input 'by keyword'. It is concise and distinct from siblings like 'search_models'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, nor when not to use it. No mention of alternatives like 'search_models' or prerequisites.

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

search_modelsB

Search HuggingFace for models compatible with ComfyUI (checkpoints, LoRAs, VAEs, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 10)
queryYesSearch query (e.g. 'SDXL', 'flux', 'controlnet')
filterNoHuggingFace tag filter (e.g. 'diffusers', 'text-to-image')

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and description does not disclose search behavior (e.g., exact match vs fuzzy, return format, pagination, error handling). Minimal transparency for a search tool.

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

Conciseness5/5

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

Single sentence that is front-loaded and efficient, with no wasted words.

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

Completeness2/5

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

No output schema, and description omits return format or what the search results contain. Incomplete for a search tool that returns a list of models.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. Description adds no additional meaning beyond schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states action (Search), resource (HuggingFace models), and scope (compatible with ComfyUI, with examples like checkpoints, LoRAs, VAEs). Distinguishes from siblings like list_local_models and download_model.

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

Usage Guidelines3/5

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

Implicitly indicates when to use (searching for remote models), but lacks explicit when-not-to-use or alternatives. No mention of prerequisites or context.

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

set_defaultsA

Update generation defaults. By default updates the in-memory runtime layer (lost on restart). Pass persist=true to also write the change into the config file (~/.config/comfyui-mcp/config.json by default). Use this to avoid repeating common values like width, height, steps, cfg, sampler, checkpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYesKey/value map of defaults to set. Keys are typically lowercase (e.g. width, steps).
persistNoIf true, write to the config file in addition to runtime.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description details the dual behavior: in-memory (lost on restart) vs. persistent to config file. It mentions the config file path, adding transparency about side effects.

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

Conciseness5/5

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

Two sentences with no redundant words. The first sentence states the action, the second explains the optional behavior and use case. Efficient and front-loaded.

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

Completeness5/5

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

For a simple mutation tool with well-documented parameters, the description covers purpose, behavior modes, and practical usage. No output schema is needed as the return is likely a status.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the values map contains typical defaults (width, steps) and clarifies the persist parameter's effect beyond the schema's minimal description.

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

Purpose5/5

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

The description clearly states 'Update generation defaults' and lists example values like width, height, steps. It distinguishes from sibling tools like get_defaults by implying it modifies rather than retrieves.

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

Usage Guidelines4/5

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

The description explicitly advises 'Use this to avoid repeating common values', providing a clear use case. It also explains the persist parameter but does not explicitly exclude scenarios.

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

start_comfyuiA

Start ComfyUI using process info saved from a previous stop_comfyui call. Supports both Desktop app and manual Python installs. Waits up to 60s for the API to become ready.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description provides key behavior: uses saved info, supports two install types, and waits up to 60s for API readiness. It doesn't cover error handling or permission requirements, but is largely transparent for its scope.

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

Conciseness5/5

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

Three sentences, no superfluous words. Front-loaded with the core purpose, followed by support details and a key behavioral note (60s wait). Highly efficient.

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

Completeness4/5

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

Given no parameters, no output schema, and no annotations, the description covers the essential usage and behavior. It could mention failure modes or prerequisites, but remains adequate for a tool with a simple interface.

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

Parameters4/5

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

There are zero parameters and 100% schema coverage, so the baseline is 4. The description doesn't add parameter info but explains the tool's reliance on saved process info, which contextualizes the param-less input.

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

Purpose5/5

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

The description clearly specifies that the tool starts ComfyUI using saved process info, supports two installation types, and waits for API readiness. It effectively distinguishes from siblings like stop_comfyui and restart_comfyui.

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

Usage Guidelines4/5

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

It indicates usage after a stop_comfyui call by mentioning 'process info saved from a previous stop_comfyui call.' It lacks explicit when-not-to-use or alternatives, but the context implies it's for resuming, not initial launch.

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

stop_comfyuiA

Stop the running ComfyUI process. Captures process info so it can be restarted with start_comfyui. Kills the process tree and resets the WebSocket client.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses destructive behavior (kills process tree) and side effects (resets WebSocket client), which is critical for a stop command.

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

Conciseness5/5

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

Three efficient sentences with no wasted words. The first sentence states the core purpose, followed by important details about process capture and effects.

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

Completeness5/5

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

For a zero-parameter tool, the description is fully adequate. It explains the action, its consequences, and its relationship to sibling tools without needing additional details.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description adds context about the operation's purpose without needing parameter details.

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

Purpose5/5

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

The description clearly states the action (stop) and the resource (running ComfyUI process). It distinguishes from siblings like start_comfyui and restart_comfyui by mentioning process info capture for restart.

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

Usage Guidelines4/5

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

The description implies usage before start_comfyui by mentioning restart capability. However, it does not explicitly contrast with restart_comfyui or explain 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.

suggest_settingsA

Suggest proven sampler/scheduler/steps/CFG settings based on local generation history. Query by model family, LoRA hash, or text search on model/LoRA names.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
searchNoFull-text search on model/LoRA filenames (e.g. 'copax', 'lightning')
lora_hashNoAutoV2 hash (10 chars) of a specific LoRA to find settings for
model_familyNoModel family to query (e.g. 'qwen_image', 'sdxl', 'flux', 'illustrious')

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It indicates the tool suggests settings based on history but does not mention if it is read-only, side effects, or behavior when no history exists. Adequate but minimal.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose, and no extraneous information. Every sentence serves a clear function.

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

Completeness3/5

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

No output schema is provided, yet the description does not explain the format or structure of the returned suggestions. It adequately covers the input parameters but lacks completeness regarding the output, which is essential for an agent to interpret results.

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

Parameters4/5

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

Schema coverage is 100% with descriptions, so baseline is 3. The description adds value by grouping query methods (model_family, lora_hash, search, limit) and explaining their purpose beyond the schema, earning a 4.

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

Purpose5/5

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

The description clearly states it suggests sampler/scheduler/steps/CFG settings based on local generation history, and specifies query methods by model family, LoRA hash, or text search. This distinguishes it from sibling tools like generation_stats or get_history.

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

Usage Guidelines4/5

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

The description implies usage context (when you need proven settings from history) but does not explicitly state when not to use or provide alternatives among siblings. It is clear enough for an AI agent to infer appropriate use.

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 file to ComfyUI's input/ directory so it can be referenced in LoadImage nodes. Tries HTTP upload first (works with remote ComfyUI), falls back to filesystem copy when COMFYUI_PATH is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOverride the filename in ComfyUI's input/ directory. Auto-detected from source path if omitted.
source_pathYesAbsolute path to the local image file to upload

TDQS

A4.1/5.0
Behavior4/5

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

Discloses dual upload strategy (HTTP first, filesystem fallback) and the condition (COMFYUI_PATH set). No annotations provided, so description carries full burden. Missing details like overwrite behavior or supported formats but sufficient for basic usage.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose, then implementation detail. No fluff, though could be slightly restructured for readability.

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

Completeness4/5

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

Given no output schema and simplicity of upload, description covers main purpose and fallback. Could mention file size/type constraints but adequate for selection and invocation.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value: explains auto-detection of filename and that source_path is absolute. Also provides context on the upload mechanism beyond schema.

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

Purpose5/5

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

Clear verb ('Upload') and resource ('local image file to ComfyUI's input/ directory'), with specific purpose ('referenced in LoadImage nodes'). Distinguishes from siblings like download_model or get_image.

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

Usage Guidelines3/5

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

Description mentions fallback behavior but lacks explicit when-to-use or when-not-to-use guidance. No alternatives for uploading images are discussed.

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

validate_workflowA

Validate a ComfyUI workflow without executing it. Checks for missing node types, broken connections, invalid output indices, missing models, and other issues. Returns a list of errors and warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesComfyUI workflow in API format (JSON string or object)

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so description must disclose behavior. It clearly states the tool does not execute the workflow (non-destructive), and returns a list of errors and warnings. This adequately covers the most important behavioral traits for a validation tool.

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

Conciseness5/5

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

Two sentences: first sentence states purpose and key constraint (without execution), second lists checks and return type. No wasted words, front-loaded with essential information.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is complete. It explains input format, behavior, checks performed, and output format. No gaps.

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

Parameters3/5

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

Schema coverage is 100%; the description of the parameter in the schema already explains what 'workflow' is. The tool description adds no additional meaning beyond stating it accepts a JSON string or object, which is already in the schema.

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

Purpose5/5

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

Description clearly states 'validate a ComfyUI workflow without executing it' and lists specific checks (missing node types, broken connections, etc.). It distinguishes from sibling execution tools by emphasizing non-execution. The purpose is unambiguous.

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

Usage Guidelines3/5

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

Implies usage before execution via 'without executing it', but lacks explicit guidance on when to use this tool versus alternatives like 'analyze_workflow'. No when-not or alternative recommendations are provided.

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

view_imageA

Fetch a registered asset's bytes and return them as an inline image so the agent can see the result. Use this after enqueue_workflow completes (asset_id is included in the completion notification) to inspect, critique, or compare generated images. Only supports image mime types (PNG/JPEG/WebP); audio/video assets must be saved to disk via get_image.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesAsset id returned by list_assets or job completion

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description bears full burden. It discloses that only image mime types (PNG/JPEG/WebP) are supported, and directs audio/video to get_image. However, it does not mention error handling, size limits, or any side effects. Since the tool is read-only by design, this is reasonably transparent, but lacks full behavioral detail.

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

Conciseness5/5

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

Three sentences, front-loaded with the main action, no redundant words. Every sentence adds value: action, usage context, constraints, and alternatives. Highly efficient.

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

Completeness4/5

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

For a simple single-parameter tool with no output schema, the description covers purpose, usage timing, and constraints. It provides a sibling tool alternative. However, it does not explain the output format (e.g., base64 vs rendered) or error cases, which could be gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds slight context by mentioning that asset_id comes from job completion, but does not add new semantic meaning beyond the schema. The description does not elaborate on the parameter format or constraints beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action (fetch and return inline image), the resource (registered asset), and the output format (inline image for agent to see). It distinguishes from sibling get_image by specifying that view_image only supports image mime types and provides inline display, while get_image is for audio/video assets to disk.

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

Usage Guidelines5/5

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

Explicitly says 'Use this after enqueue_workflow completes' and provides context that asset_id is in the completion notification. Also specifies when not to use: for audio/video assets, which should use get_image. This gives 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.

visualize_workflowA

Convert a ComfyUI workflow JSON into a Mermaid flowchart diagram. Returns mermaid syntax showing nodes grouped by category (loading, conditioning, sampling, image, output) with connections labeled by data type.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesComfyUI workflow JSON (as a JSON string or object)
directionNoFlowchart direction: LR (left-to-right) or TB (top-to-bottom)LR
show_valuesNoInclude widget values (seed, steps, cfg, etc.) in node labels

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It discloses that the tool converts JSON to Mermaid syntax with category grouping and data type labeling, which is sufficiently transparent for a read-only conversion tool. No side effects or destructive actions are mentioned, which is appropriate.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the main action and includes key details without extraneous words. Every part earns its place.

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

Completeness4/5

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

Given 3 parameters with full schema coverage, no output schema, and no annotations, the description adequately covers the tool's function and output. It could mention that the return value is a string, but the Mermaid syntax mention is sufficiently complete for an agent to understand the result.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter is already documented. The description adds value by explaining the output structure (grouped nodes, labeled connections) but does not add specific semantics to individual parameters beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool converts ComfyUI workflow JSON to a Mermaid flowchart, with specifics about grouping and labeling. It distinguishes itself from the sibling tool 'visualize_workflow_hierarchical' by implying a different visualization approach.

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

Usage Guidelines3/5

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

The description explains what the tool does but does not explicitly guide when to use this tool versus alternatives like 'visualize_workflow_hierarchical' or other visualization siblings. Usage context is implied but not stated.

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

visualize_workflow_hierarchicalA

Visualize a large ComfyUI workflow as a hierarchical diagram. Detects logical sections using node categories from /object_info, resolves Get/Set virtual wires, and produces either a compact overview (sections as summary nodes), a detailed view of one section, or a text listing of all sections. Best for workflows with 20+ nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNooverview: compact diagram with sections as summary nodes; detail: full diagram for one section; list: text summary of all sections; summary: structured text optimized for AI ingestion with node IDs, key settings, virtual wires, and full connection graphoverview
sectionNoSection name to show in detail view (required when view=detail). Use view=list to see available section names.
workflowYesComfyUI workflow in API format or UI format (auto-detected)
directionNoFlowchart direction (default: TB for overview, LR for detail)
show_valuesNoInclude widget values in node labels (detail view only)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses behavioral traits like detecting logical sections, resolving Get/Set virtual wires, and producing different views. However, it does not mention side effects or permissions, though for a visualization tool these are minimal.

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

Conciseness5/5

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

Three concise sentences: first states purpose, second explains features, third provides usage advice. No redundant words, front-loaded with key information.

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

Completeness4/5

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

Given 5 parameters and no output schema, the description covers the major aspects: purpose, usage context, and parameter roles. It mentions output types (overview, detail, list, summary) but could be more explicit about return format for each view, though the 'view' parameter descriptions help.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3), and the description adds significant context: it explains each view type in detail (e.g., 'compact diagram with sections as summary nodes'), clarifies that 'section' is required when view=detail, and mentions defaults for 'direction' and 'show_values'.

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

Purpose5/5

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

The description clearly states 'Visualize a large ComfyUI workflow as a hierarchical diagram' with specific features like detecting logical sections and resolving virtual wires. It distinguishes itself from siblings like 'visualize_workflow' by focusing on large workflows (20+ nodes) and hierarchical structure.

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

Usage Guidelines4/5

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

The description says 'Best for workflows with 20+ nodes,' providing clear usage context. Though it does not explicitly name alternatives, the sibling list includes 'visualize_workflow' which likely serves smaller workflows, implying when not to use this tool.

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

workflow_from_imageB

Extract embedded ComfyUI workflow metadata from a PNG file. ComfyUI stores the full workflow (API format) and prompt data in PNG tEXt chunks. Use this to reverse-engineer how any ComfyUI image was generated.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYesAbsolute path to a ComfyUI-generated PNG file

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It explains what is extracted (full workflow API format and prompt data from tEXt chunks) but does not cover error cases, file requirements, or permission needs. A reasonable disclosure for a simple extraction tool.

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

Conciseness5/5

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

Two concise sentences with no redundant information. Front-loaded with the extraction action and context. Every sentence is informative.

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

Completeness4/5

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

Given the simple tool (one parameter, no output schema), the description adequately covers the how and why. Missing error handling or file validation details, but overall sufficient for an extraction utility.

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

Parameters3/5

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

Schema coverage is 100% (one parameter fully described). The description adds minimal extra meaning beyond the schema's description of 'Absolute path to a ComfyUI-generated PNG file'. Baseline 3 applies.

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

Purpose4/5

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

The description clearly states the action (extract) and resource (workflow metadata from PNG file), and the use case of reverse-engineering. However, it does not explicitly distinguish from sibling tools like analyze_workflow.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives, nor any exclusions. The description implies usage for reverse-engineering, but lacks when-not-to-use or prerequisite context.

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

workflow_to_dslA

Convert a ComfyUI API-format workflow into a compact, human/LLM-readable DSL — easier to read and edit than raw JSON, and round-trips losslessly back via dsl_to_workflow. Connections render as key <- nodeId.outputIndex, literals as key = <JSON>. (Experimental.)

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesComfyUI workflow in API format (node ID -> {class_type, inputs})

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Describes conversion behavior, output format examples, and experimental status. Does not cover auth or side effects, but tool is non-destructive conversion.

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

Conciseness5/5

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

Three sentences, all valuable: purpose+benefit, format description, experimental note. No redundancy, front-loaded.

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

Completeness5/5

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

Simple tool with one parameter. Description explains return format via examples and round-trip ability. No output schema needed for clarity.

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

Parameters4/5

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

Schema has one parameter with good description. Tool description adds meaning by explaining output format and rendering details, complementing the schema.

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

Purpose5/5

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

Describes conversion from ComfyUI workflow to DSL, with benefit (easier to read/edit) and round-trip capability. Distinguishes from sibling dsl_to_workflow and other workflow tools.

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

Usage Guidelines4/5

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

Explicitly states when to use (for compact DSL representation) and mentions round-trip with dsl_to_workflow. Lacks explicit when-not-to-use or alternatives but sufficient for context.

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. Dates show when Glama detected each change.

  1. 48 tool updatesv0.5.0
    • First observedanalyze_workflow
    • First observedcancel_job
    • First observedcancel_queued_job
    • First observedclear_queue
    • First observedclear_vram
    • First observedcreate_workflow
    • First observeddownload_model
    • First observeddsl_to_workflow
    • First observedenqueue_workflow
    • First observedgenerate_image
    • First observedgenerate_node_skill
    • First observedgenerate_with_controlnet
    • First observedgenerate_with_ip_adapter
    • First observedgeneration_stats
    • First observedget_asset_metadata
    • First observedget_defaults
    • First observedget_embeddings
    • First observedget_history
    • First observedget_image
    • First observedget_job_status
    • First observedget_logs
    • First observedget_node_info
    • First observedget_node_pack_details
    • First observedget_queue
    • First observedget_system_stats
    • First observedget_workflow
    • First observedlist_assets
    • First observedlist_local_models
    • First observedlist_output_images
    • First observedlist_workflows
    • First observedmermaid_to_workflow
    • First observedmodify_workflow
    • First observedregenerate
    • First observedrestart_comfyui
    • First observedsave_workflow
    • First observedsearch_custom_nodes
    • First observedsearch_models
    • First observedset_defaults
    • First observedstart_comfyui
    • First observedstop_comfyui
    • First observedsuggest_settings
    • First observedupload_image
    • First observedvalidate_workflow
    • First observedview_image
    • First observedvisualize_workflow
    • First observedvisualize_workflow_hierarchical
    • First observedworkflow_from_image
    • First observedworkflow_to_dsl

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose with no overlaps. For example, analyze_workflow provides a structured summary while get_workflow returns raw JSON; cancel_job targets running jobs while cancel_queued_job targets pending ones. All tools are well-differentiated.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_workflow, list_assets, visualize_workflow_hierarchical). No mixed conventions or inconsistent verb styles.

Tool Count2/5

At 48 tools, the server is excessively large. While each tool serves a specific purpose, the count far exceeds the typical 3-15 range for well-scoped servers and is well over the 25 threshold for 'too many'. Some consolidation would improve coherence.

Completeness5/5

The tool set covers virtually all aspects of ComfyUI management: workflow lifecycle, image generation with various conditioning, model/embedding management, queue control, system management, and analysis tools. No obvious gaps are present.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandyup/comfyui-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server