Skip to main content
Glama

update_comfyui

Update a local ComfyUI installation by choosing ComfyUI core, every custom node pack, or comfy-cli itself. Updating all custom packs requires user confirmation first.

Instructions

Update the LOCAL install — ComfyUI core, the custom node packs (asks first), or comfy-cli.

Wraps comfy update <target>.

Args: target: "comfy" (default) updates ComfyUI core (git pull + reinstall). "all" updates every installed custom node pack via the node manager — NOT core, and the only target that prompts. "cli" updates comfy-cli itself. confirm_update_all: only read for target="all". The user is always prompted by name on a client that supports MCP elicitation regardless of this flag. Set it True ONLY when the user has actually agreed — the fallback for a client that cannot be prompted, never a way to clear an error.

Returns: A synthesized {"ok": True, "message": ...} (comfy-cli prints human text here, no JSON envelope).

Gotchas: - For target="all", ok: True is NOT proof every pack updated — the node manager swallows a per-pack failure and still exits 0. Read message and re-check server_info's freshness.packs. - Restart afterward: a running ComfyUI keeps the code it loaded at boot (target="cli" needs no restart). - One update at a time: refused immediately while another update (or switch_comfyui_version) is in flight.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNocomfy
confirm_update_allNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it excels: it discloses that target='all' prompts, that ok:True does not guarantee success, that a restart is needed, that updates are mutually exclusive, and that confirm_update_all is only a fallback. It even explains the return envelope is synthesized. No aspect of side effects, error handling, or concurrency is left ambiguous.

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?

Though lengthy, every sentence earns its place. The structure (Intro → Args → Returns → Gotchas) is logical and front-loaded with the purpose. The use of formatting (backticks, bullets) improves scannability. No filler or redundancy is present.

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 output schema and no annotations, the description covers all essentials: parameter semantics, return format, failure modes, restart requirements, concurrency constraints, and how to verify success (re-checking freshness.packs). It even references related tools (server_info, switch_comfyui_version) to aid the agent. Nothing an agent needs to call this safely is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must explain both parameters—and it does comprehensively. For target, it enumerates all three values and their effects; for confirm_update_all, it explains when it is read, when to set True, and its role as a fallback. This adds far more meaning than the bare schema with defaults.

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 opens with a precise action and scope: 'Update the LOCAL install' and enumerates the three targets (core, custom node packs, comfy-cli). It wraps `comfy update <target>`, making the behavior unmistakable. This clearly differentiates it from siblings like install_node (adds nodes) and switch_comfyui_version (changes versions).

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 details each target's effect and when the prompt occurs, and the gotchas clarify concurrency with switch_comfyui_version. However, it never explicitly says 'use this tool instead of X' or lists alternatives; an agent must infer from context that update is for refreshing existing components. It could be more direct about when not to use it, but the context is sufficient for a capable agent.

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