- run_workflow takes a gallery picture as its workflow (mcp_fill.opening
says what a name opens, for open_workflow too); a picture's workflow
opens with an id of its own, and the tab's mark goes into the workflow
before it loads, so ComfyUI finishing the tab does not drop it.
- With ComfyUI open in two browser tabs a task's actions were split
between them (one opened the task's tab, the other could not find it):
the page that did the last action gets the next first now, another
only when it is gone (mcp_bridge.py, pages keep an id of their own).
- describe_canvas on a big canvas: titles off, then nodes as a line each
with their settings, so every value stays readable.
- search_models names the models that did not fit; begin_task's tool
directory goes by name alone when the answer would be too long.
- ask_user refuses a "test" question with made-up options too.
- Exam round recorded: question 2 with nothing filed away, a big canvas
read right in 3 calls, question 3 in 12 calls.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Antigravity, Claude Code, Cursor and VS Code load tool descriptions on
demand themselves; looking tools up through Anomalous (tool_help, use_tool)
only doubled that: in one Gemini 3.8 Flash run 18 of 29 calls went to it,
while full-set chats had none. tool_help, use_tool, action_catalog.DAILY,
ai_gates.tool_set and the Gates row go.
An app still holding an older list is now told apart by the list it fetched
last (a fingerprint per app in anomalous/ai_tool_lists.json), so the note
under the task header also covers an Anomalous update.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- An AI app calling by an older tool list (tool_help or use_tool not offered,
use_tool for a tool offered directly, a tool the list lacks) is told so, and
the task header shows how to reconnect until the app fetches tools/list again.
- add_lora / set_model compare the base models on the model line
(model_advice.py; the page reports the line) and add base_model_note.
- get_model gives author_examples (sampler, steps, CFG, size, a LoRA's weight
from the Civitai record's example pictures) and the version name.
- run_workflow says ComfyUI's refusal as which node, what is wrong and the tool
that fixes it (run_refusal.py; mcp_run.js passes the refusal as data).
- Gates "When I don't answer": wait for me, or go with the recommendation once
the waiting time runs out (choices with a recommended option only), handed to
the AI in the same call and shown on the stage and under Decisions.
- A tool budget test (count, size, description length, required arguments) and
the exam tasks with their scorecard (docs/architecture/tool-exam.md,
tools/tool_exam.mjs). The tool set's text recommends Full for Antigravity.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The daily tool set now also offers tool_help and use_tool, and the
directory marks the tools reached that way; show_panel joins the daily
set. The "lazy" set is gone: a small model spent a third of its calls
looking tools up and never built what it planned.
- Gates window "Waiting for your answer" (1, 3 or 10 minutes): an open
question tells the AI to wait on with get_answers until then, and while
the user types (POST /anomalous/ai_tasks/{id}/typing) until a minute after
the last key. report and show_panel remind the AI to end each round with
ask_user; a question written in a note is pointed to ask_user.
- "Skip this one" is "Your call": the AI decides and does not ask again.
- ComfyUI's own `$$` widgets (the canvas image preview) are no longer
reported to the AI as the user's canvas change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A third choice for "Tools for the AI" in the Gates window. With "On demand",
AI apps are offered only action_catalog.CORE plus two tools of
mcp_directory.py:
- CORE: begin_task, get_situation, run_workflow, run_status, report, ask_user,
get_answers.
- tool_help: the description and arguments of up to three tools named in the
directory.
- use_tool: calls any tool of the directory.
tools/list drops to 11 tools and about 9,000 characters (daily 22,200, full
40,700). With this set the directory begin_task brings names every tool and
says how to reach the ones not listed.
use_tool has no run of its own. mcp_server._call makes the call the tool it
names before anything else, so the user's gates, the timeline's step, the run
watch and the answer are all that tool's; the timeline never shows use_tool.
An unknown name, the card's own tools or wrong arguments come back as tool
errors that point to tool_help.
The default stays Full. Switching back to Daily or Full in the Gates window
undoes this without a revert, and this commit stands alone if it has to go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the user's real tasks the AI spent many calls finding its way: reading the
canvas, searching node types, looking at combos and the activity log. The
directory gives it what ARCHITECTURE.md gives the code: each tool offered,
under its stage of the work, with its title. The stages are run, canvas,
models, prompts, combos, pictures, voices, the library, and the task and the
user. Seeing it, the AI can go straight to the tool it needs.
The directory is built from action_catalog's stages and the tool specs, so a
new tool shows up by itself, and a test checks that every stage has a heading.
It lists only the tools offered: about 1,100 characters for the daily set and
2,000 for the full one. begin_task's answer carries it, and so does
get_situation's while there is no task. The server's instructions and
begin_task's note point to it.
retext, the helper that rewrites a result's text from its data, moves from
ai_task_runs to mcp_tools, so both modules share it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>