ask_workspace
Ask the person at the ComfyUI screen a question and wait for their answer. Use it when a step depends on human judgment or preference, optionally offering predefined choices.
Instructions
Ask the person at the ComfyUI screen a question, and wait for their answer.
This is the one tool whose answer comes from a human rather than from the graph. Reach for it when the next step turns on something only they know - which of two results they preferred, what the subject of a prompt should be, whether a value looks right - instead of guessing and building on the guess.
The question goes in a panel below the canvas, not over it. That matters
for the question most worth asking - "look at this and tell me" - because a
modal dialog hides the canvas and closes on a click beside it, so looking is
what cancels it. In the panel the graph stays visible and usable, and they can
pan around before answering. modal=True puts it back in a dialog for a
question that should interrupt rather than wait to be noticed.
It costs them an interruption either way, so it is worth one question rather than three: only one can be waiting at a time, on either surface, and a second call while one is open is refused rather than queued.
choices turns it into a pick, which is the cheaper question to answer.
One click instead of typing, and the answer comes back as one of the strings
you offered rather than something to parse - with choice_index beside it,
because two options can read alike once phrased and an index cannot. Up to six
are drawn as buttons and more become a dropdown. Choices need the panel: a
dialog has no way to offer them, so modal=True with choices is refused.
allow_other adds a free-text box beside the buttons, for when the list may
not cover it; the answer then comes back with choice_index: -1. Leave it off
when the options really are exhaustive - it is one more thing on screen.
Three outcomes, and they mean different things. answer is what they typed
or picked.
dismissed means they closed the box without answering - easy to do by
accident, since clicking beside it counts, so it is not a "no" and not
permission to carry on regardless. timed_out means the wait ran out with the
question still on screen; they may yet answer it, and until they do, another
question cannot be asked.
Args:
question: what to ask. Shown as the body of the dialog.
title: heading above it. Defaults to "Question".
default: text the input starts with, for when there is an obvious answer.
placeholder: grey hint inside an empty input, or in the allow_other box.
choices: options to offer instead of a text box. Each is a button (or an
entry in a dropdown past six of them) and answering picks one.
allow_other: add a free-text box beside the choices, answering with
choice_index: -1. Ignored when there are no choices.
modal: ask in a dialog over the canvas instead of the panel below it.
Harder to miss, but it hides the graph and a stray click dismisses it,
so it suits a question whose answer needs nothing on screen.
seconds: how long to wait, 1 to 600. Keep it well under the per-call
timeout your MCP client enforces, or the client gives up first.
client_id: which tab to ask; defaults to the most recently focused one.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| modal | No | ||
| title | No | ||
| choices | No | ||
| default | No | ||
| seconds | No | ||
| question | Yes | ||
| client_id | No | ||
| allow_other | No | ||
| placeholder | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||