Forge-Painter demonstrates solid tool design with consistent naming (verb_noun pattern), comprehensive descriptions (avg 150-200 chars), and well-structured input schemas. All 15 tools have explicit @mcp.tool() registration with type-annotated parameters and descriptions. However, output schemas are entirely undocumented, tools return plain strings with no structured format specification. Error handling is minimal (format_error() wrapper exists but lacks recovery guidance). Parameter descriptions are good but lack explicit constraints (e.g., width/height ranges, sampler enum values). No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction.
Return the name of the checkpoint that is currently loaded in Forge.
List all textual inversion embeddings (TI tokens) loaded in Forge. Embeddings are activated directly in prompts by their token name, e.g. 'masterpiece, best quality, <embedding_name>'.
List all LoRA models available in Forge. LoRAs are lightweight style/character adapters you can activate in your prompt with the syntax <lora:name:weight> (e.g. <lora:character_elf:0.8>).
List all Stable Diffusion checkpoints (models) available in Forge. Returns the model title and filename for each checkpoint so you can pick the right one for your art style before generating.
Check the progress of the currently running generation in Forge. Returns the completion percentage and estimated time remaining. Returns 'idle' if nothing is generating.
No output schemas documented. All tools return plain strings; LLMs cannot parse structured results or chain downstream calls. Missing return type specifications violates pattern:tool-description baseline (100% of A+ tools document return types).
Generation tools (txt2img, img2img, inpaint, upscale_image) lack explicit parameter constraints. width/height have no min/max; sampler_name accepts free-form string instead of enum; cfg_scale and denoising_strength lack ranges. Violates pattern:constrained-input baseline.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
List all sampler algorithms available in Forge. The sampler controls how diffusion steps are performed. Different samplers trade speed vs quality. Recommended starters: 'Euler a', 'DPM++ 2M Karras'.
List all upscaler models available in Forge for use with upscale_image().
List all VAE (Variational Autoencoder) models available in Forge. The VAE affects colour accuracy and fine detail. 'Automatic' uses the one baked into the checkpoint; swap it if colours look washed out or over-saturated.
Transform an existing image guided by a text prompt (image-to-image). Useful for restyling character art, adding details to maps, converting sketches to finished illustrations, or applying a new art style.
Inpaint (fill or redraw) a masked region of an existing image. Paint the area to be replaced pure white in the mask image; the rest should be pure black. Great for fixing anatomy, swapping costume pieces, adding/removing props, or retouching TTRPG character portraits.
Interrupt (cancel) the currently running generation in Forge immediately. Use this if a generation is taking too long or if you submitted the wrong prompt and want to stop it before it finishes.
Tell Forge to scan the models folder and reload the list of available checkpoints, LoRAs and embeddings. Run this after copying new model files into the Forge models directory so they appear in get_models(), get_loras(), etc. without restarting Forge.
Switch the active Stable Diffusion checkpoint in Forge. Use get_models() first to see the exact title string to pass here. Model switching can take 10-60 seconds depending on model size.
Generate one or more images from a text prompt using Stable Diffusion Forge. Each image in the batch is saved as <save_path>, <save_path>_1.png, etc. Use seed=-1 for a random seed. Returns the seed(s) that were used so the result can be reproduced later. Images are saved inside the configured OUTPUT_DIR unless save_path is an absolute path.
Upscale an image using a super-resolution model available in Forge. Ideal for taking a draft character portrait or map tile and making it print-ready without re-generating from scratch.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools clearly split into read-only (get_*) and write (txt2img, interrupt_generation, set_model) but lack explicit hints. Agents cannot infer safety without annotations.
Error handling returns plain strings (format_error wrapper) with no recovery guidance. Violates pattern:recovery-guide, errors should tell LLM what to do next (retry, ask user, or fail). No error categorization (retryable vs fatal).
Generation tools accept seed=-1 for random but do not document idempotency. Agents may retry on timeout and generate duplicate images. Missing pattern:idempotent-operation guidance.