| name | transparent-bg |
| description | Produce a truly RGBA-transparent asset from a brief. Handles the |
| trigger_phrases | ["transparent background","transparent png","rgba","alpha channel","no background","cutout","isolated"] |
Transparent background
The problem (see research 13 + 04)
Almost every modern T2I VAE is RGB-only. Asking Imagen 3/4 or Gemini 2.5/3 Flash Image for a "transparent logo" triggers one of two failures:
- Flat background — DALL·E 3, Stable Diffusion families render a white/gray background that must be matted.
- Checkerboard as RGB pixels — Gemini/Imagen literally render the gray-and-white 8×8 tile pattern (because Photoshop screenshots in their training data show transparency that way). This is the "weird boxes" users report. It cannot be fixed by prompting.
Fix hierarchy (apply first that fits)
1. Route to a native-RGBA provider
| Provider | Mechanism |
|---|
gpt-image-1 / gpt-image-1.5 | API param background: "transparent" + output_format: "png" or "webp" |
| Ideogram 3 Turbo | Dedicated /ideogram-v3/generate-transparent endpoint; set rendering_speed: "TURBO" for Turbo tier |
| Recraft V3 | native SVG output (alpha is trivial); rasterize if raster needed |
| LayerDiffuse on SDXL / Flux | In-diffusion-loop transparency adapter; better edges than post-matte |
2. Post-process matte (for everything else)
| Matting model | License | Strength |
|---|
| BiRefNet | MIT | Default choice 2026; best soft-edge handling |
| BRIA RMBG-2.0 | CC-BY-NC-4.0 (hosted API for commercial) | Best overall quality |
| U²-Net | Apache-2.0 | Legacy fallback |
| rembg | wrapper around U²-Net / BiRefNet | Easy CLI integration |
| SAM 2 | Apache-2.0 | For complex/multi-object scenes; 2-stage (segment → matte) |
3. Difference matting (for semi-transparency: glass, hair, smoke)
- Generate the same subject on pure-white background.
- Generate again with same seed on pure-black background.
alpha = (white_version - black_version + 255) / 2 in luminance.
- Works for true semi-transparent objects where
rembg/BiRefNet produce hard-cutout artifacts.
4. Vectorize-and-drop (for flat marks)
- Generate raster at 1024² on white background.
- BiRefNet matte → K-means quantize to N colors →
vtracer or potrace.
- SVG has alpha trivially. Rasterize at target sizes with
@resvg/resvg-js for RGBA PNGs.
Validation (never ship without)
Tier-0 alpha validator (see packages/mcp-server/src/pipeline/validate.ts):
1. Check PNG/WebP header has alpha channel type (RGBA, not RGB).
2. Reject if no pixels have alpha < 255 (it's opaque).
3. Reject if >5% of pixels have alpha ∈ [0.05, 0.95] AND FFT signature shows gray-tile band frequency (Gemini fake checkerboard).
4. Alpha coverage: subject pixels (alpha > 0.5) should occupy 30–85% of frame (sanity check).
5. Premultiplied-alpha check: no RGB values where alpha==0 (cleanup artifacts).
Prompt scaffold for fallback matting flow
Do not ask for transparency in the prompt. Ask for pure white:
[SUBJECT, concrete].
Centered, isolated, no surrounding context or props.
Solid pure white #FFFFFF background.
Clean silhouette with distinct outline.
No drop shadow, no ground plane, no reflection.
1:1 square, 1024x1024.
Then post-process with BiRefNet / BRIA.
Never do this
"transparent background" as a prompt to Imagen or Gemini (checkerboard result).
- Trust
output_format: "png" alone to produce alpha (PNG supports alpha, but the model has to emit it).
- Algorithmic
#FFFFFF → alpha=0 thresholding (loses anti-aliasing, creates jagged edges).
- Post-resize RGBA with non-premultiplied alpha (dark fringes).
Output
transparent/
├── mark.png # RGBA, validated
├── mark@2x.png # optional high-DPI
├── mark.svg # if vector path chosen
└── meta.json # alpha_coverage, matting_method, validation_hash