stitch-mcp-generate-variants
Stitch MCP — Generate Variants
Generates alternative versions of existing screens using Stitch's native variant generation API. This is more efficient than the text-prompt approach (1 API call vs. 3) and offers fine-grained control over what aspects to vary.
Critical prerequisite
Only use this skill when the user explicitly mentions "Stitch".
You must have both a projectId AND at least one screenId of an existing screen. Variants are always based on an existing design — you can't generate variants from scratch.
When to use
- User wants to explore alternative versions of an existing screen
- After generation, user says "show me some variations" or "try different styles"
- The orchestrator's Step 5b offers "Generate variants"
- A/B testing — creating multiple options for stakeholder review
Call the MCP tool
{
"name": "generate_variants",
"arguments": {
"projectId": "3780309359108792857",
"selectedScreenIds": ["88805abc123def456"],
"prompt": "Explore different color schemes while keeping the layout structure",
"variantOptions": {
"variantCount": 3,
"creativeRange": "EXPLORE",
"aspects": ["COLOR_SCHEME", "IMAGES"]
},
"deviceType": "DESKTOP",
"modelId": "GEMINI_3_1_PRO"
}
}
Parameter reference
projectId — numeric ID only, no prefix
✅ "3780309359108792857"
❌ "projects/3780309359108792857"
selectedScreenIds — array of numeric screen IDs
✅ ["88805abc123def456"]
❌ ["projects/123/screens/88805abc123def456"]
The source screen(s) to generate variants from.
prompt — optional guidance for variant direction
Provide context about what kind of variations the user wants. The variantOptions do the heavy lifting, but the prompt adds nuance.
variantOptions — controls what and how much to vary
| Field | Type | Values | Description |
|---|---|---|---|
variantCount |
int | 1–5 | Number of variants to generate |
creativeRange |
enum | REFINE, EXPLORE, REIMAGINE |
How much to deviate from the original |
aspects |
array | See below | Which design aspects to vary |
creativeRange mapping from user language
| User says | → creativeRange | What it does |
|---|---|---|
| "subtle changes", "minor tweaks", "polish" | REFINE |
Small refinements, stays close to original |
| "alternatives", "different options", "explore" | EXPLORE |
Meaningful differences while keeping the concept |
| "radical", "completely different", "reimagine" | REIMAGINE |
Major departures from the original design |
aspects — what to vary
| Value | Varies | Keeps stable |
|---|---|---|
LAYOUT |
Structure, spacing, component arrangement | Colors, fonts, content |
COLOR_SCHEME |
Colors, gradients, contrast | Layout, fonts, content |
IMAGES |
Photography, illustrations, icons | Layout, colors, text |
TEXT_FONT |
Typography, font choices, sizes | Layout, colors, content |
TEXT_CONTENT |
Copy, labels, placeholder text | Layout, colors, fonts |
You can combine aspects: ["LAYOUT", "COLOR_SCHEME"] varies both simultaneously.
deviceType — optional
Same enum: MOBILE, DESKTOP, TABLET, AGNOSTIC
modelId — optional
| Value | Use when |
|---|---|
GEMINI_3_1_PRO |
Recommended — complex layouts, high fidelity |
GEMINI_3_FLASH |
Fast iteration, wireframes, simple changes |
GEMINI_3_PRO |
Deprecated. Still works but will be removed. Use GEMINI_3_1_PRO instead. |
Output
Returns new screens added to the project. Each variant appears as a separate screen in list_screens.
After generating variants
- Call
stitch-mcp-list-screensto find all new variant screens - Call
stitch-mcp-get-screenfor each to get screenshots - Present side by side: "Here are your 3 variants: [screenshots]. Which one do you prefer?"
- Once the user picks a winner, offer:
- "Edit the chosen variant further?" →
stitch-mcp-edit-screens - "Convert to code?" → framework conversion workflow
- "Generate more variants from the winner?" → another
generate_variantscall
- "Edit the chosen variant further?" →
Anti-patterns
- Never generate variants without an existing screen — you need a source design
- Never use
projects/IDformat for projectId or screenId — both must be numeric - Never set
variantCountabove 5 — the API caps at 5
More from gabelul/stitch-kit
stitch-mcp-get-screen
Retrieves full details of a specific Stitch screen — HTML download URL, screenshot URL, dimensions. This is the final step in design retrieval before code conversion.
35stitch-setup
Step-by-step installer for the stitch-kit plugin and Stitch MCP server. Use this when setting up the plugin for the first time, diagnosing connection issues, or helping a new user get Stitch running in Claude Code or Codex CLI.
33stitch-react-components
Converts Stitch designs into modular Vite + React components — TypeScript, theme-mapped Tailwind, dark mode via CSS variables, and clean component architecture. Use this for Vite/React apps without App Router. For Next.js 15 App Router, use stitch-nextjs-components instead.
24stitch-ui-prompt-architect
Builds Stitch-ready prompts via two paths — Path A enhances vague ideas into polished prompts, Path B merges a Design Spec JSON + user request into a structured [Context] [Layout] [Components] prompt.
23stitch-ideate
Conversational design ideation agent that researches trends, explores visual directions, and refines ideas through adaptive questioning — then produces a rich PRD document and auto-generates Stitch screens. Your design buddy that thinks deeply before designing.
23stitch-react-native-components
Converts Stitch mobile designs into React Native / Expo components — TypeScript, StyleSheet, Expo Router, dark mode via useColorScheme, and proper touch targets. Cross-platform iOS and Android.
22