MCP
Reference
| # | Tool | Category | Read-Only |
|---|---|---|---|
| 1 | create_project | Project Management | false |
| 2 | get_project | Project Management | true |
| 3 | list_projects | Project Management | true |
| 4 | list_screens | Screen Management | true |
| 5 | get_screen | Screen Management | true |
| 6 | generate_screen_from_text | AI Generation | false |
| 7 | edit_screens | AI Generation | false |
| 8 | generate_variants | AI Generation | false |
| 9 | create_design_system | Design Systems | false |
| 10 | update_design_system | Design Systems | false |
| 11 | list_design_systems | Design Systems | true |
| 12 | apply_design_system | Design Systems | false |
create_project
Section titled “create_project”Creates a new Stitch project. A project is a container for UI designs and frontend code.
{ "type": "object", "properties": { "title": { "type": "string", "description": "Optional. The title of the project." } }, "required": []}Output
Section titled “Output”Returns the created Project resource with generated name, title, and metadata.
Example Prompts
Section titled “Example Prompts”Create a new Stitch project called ‘Marketing Site’ Start a new design project Set up a new project for my app
get_project
Section titled “get_project”Retrieves the details of a specific Stitch project using its project name.
{ "type": "object", "properties": { "name": { "type": "string", "description": "Required. Resource name. Format: `projects/{project}`. Example: `projects/4044680601076201931`" } }, "required": ["name"]}Output
Section titled “Output”Returns a Project resource object.
Example Prompts
Section titled “Example Prompts”Get the details of project 4044680601076201931 Show me the project info What’s in my project?
list_projects
Section titled “list_projects”Lists all Stitch projects accessible to the user. By default, it lists projects owned by the user.
{ "type": "object", "properties": { "filter": { "type": "string", "description": "Optional. AIP-160 filter on `view` field. Supported: `view=owned` (default), `view=shared`." } }, "required": []}Output
Section titled “Output”Array of Project resource objects.
Example Prompts
Section titled “Example Prompts”List all my Stitch projects Show me my projects List shared projects
list_screens
Section titled “list_screens”Lists all screens within a given Stitch project.
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Required. Project ID (e.g., '4044680601076201931'), without `projects/` prefix." } }, "required": ["projectId"]}Output
Section titled “Output”Array of Screen objects.
Example Prompts
Section titled “Example Prompts”List all screens in project 12345 Show me the designs in this project What screens are in my project?
get_screen
Section titled “get_screen”Retrieves the details of a specific screen within a project.
{ "type": "object", "properties": { "name": { "type": "string", "description": "Required. Resource name. Format: `projects/{project}/screens/{screen}`" }, "projectId": { "type": "string", "description": "Required (deprecated). Project ID without prefix." }, "screenId": { "type": "string", "description": "Required (deprecated). Screen ID without prefix." } }, "required": ["name", "projectId", "screenId"]}
projectIdandscreenIdare deprecated in favor ofname(resource name format), but all three are currently required.
Output
Section titled “Output”Returns a Screen object with htmlCode, screenshot, figmaExport file references and download URLs.
Example Prompts
Section titled “Example Prompts”Get the details of screen abc123 in project 12345 Show me the screen info Check the status of this screen
generate_screen_from_text
Section titled “generate_screen_from_text”Generates a new screen from a text prompt. This process normally takes a few minutes. Avoid retrying even when you encounter connection errors. Connection errors don’t necessarily mean failure, try using get_screen after a few minutes. If output_components contains suggestions, present them to the user. If accepted, call again with the suggestion as the new prompt.
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Required. Project ID without prefix." }, "prompt": { "type": "string", "description": "Required. Text prompt describing the screen to generate." }, "deviceType": { "type": "string", "enum": ["DEVICE_TYPE_UNSPECIFIED", "MOBILE", "DESKTOP", "TABLET", "AGNOSTIC"] }, "modelId": { "type": "string", "enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH", "GEMINI_3_1_PRO"] } }, "required": ["projectId", "prompt"]}
GEMINI_3_PROis deprecated. UseGEMINI_3_1_PROorGEMINI_3_FLASHinstead.
Output
Section titled “Output”Returns generated Screen objects and SessionOutputComponent entries (text, suggestions, or design references).
Example Prompts
Section titled “Example Prompts”Generate a mobile login screen for project 12345 Design a dashboard page with charts and statistics Create a landing page with a hero section, features grid, and footer Build a settings page for a dark-themed app
edit_screens
Section titled “edit_screens”Edits existing screens using a text prompt. Similar to generate_screen_from_text, this process normally takes a few minutes. Avoid retrying even when you encounter connection errors. Connection errors don’t necessarily mean failure, try using get_screen after a few minutes.
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Required. Project ID without prefix." }, "selectedScreenIds": { "type": "array", "items": { "type": "string" }, "description": "Required. Screen IDs to edit, without `screens/` prefix." }, "prompt": { "type": "string", "description": "Required. Edit instruction." }, "deviceType": { "type": "string", "enum": ["DEVICE_TYPE_UNSPECIFIED", "MOBILE", "DESKTOP", "TABLET", "AGNOSTIC"] }, "modelId": { "type": "string", "enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH", "GEMINI_3_1_PRO"] } }, "required": ["projectId", "selectedScreenIds", "prompt"]}
GEMINI_3_PROis deprecated. UseGEMINI_3_1_PROorGEMINI_3_FLASHinstead.
Output
Section titled “Output”Returns the updated Screen objects.
Example Prompts
Section titled “Example Prompts”Change the button color to blue on screen abc123 Make the hero text larger and add a subtitle Add a navigation bar to these screens Switch the layout to a two-column grid
generate_variants
Section titled “generate_variants”Generates design variants of existing screens.
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Required. Project ID without prefix." }, "selectedScreenIds": { "type": "array", "items": { "type": "string" }, "description": "Required. Screen IDs to generate variants for." }, "prompt": { "type": "string", "description": "Required. Text guiding variant generation." }, "variantOptions": { "$ref": "#/$defs/VariantOptions", "description": "Required. Variant configuration." }, "deviceType": { "type": "string", "enum": ["DEVICE_TYPE_UNSPECIFIED", "MOBILE", "DESKTOP", "TABLET", "AGNOSTIC"] }, "modelId": { "type": "string", "enum": ["MODEL_ID_UNSPECIFIED", "GEMINI_3_PRO", "GEMINI_3_FLASH", "GEMINI_3_1_PRO"] } }, "required": ["projectId", "selectedScreenIds", "prompt", "variantOptions"]}
GEMINI_3_PROis deprecated. UseGEMINI_3_1_PROorGEMINI_3_FLASHinstead.
VariantOptions
Section titled “VariantOptions”{ "type": "object", "properties": { "variantCount": { "type": "integer", "description": "Number of variants (1–5). Default: 3." }, "creativeRange": { "type": "string", "enum": ["CREATIVE_RANGE_UNSPECIFIED", "REFINE", "EXPLORE", "REIMAGINE"] }, "aspects": { "type": "array", "items": { "type": "string", "enum": ["VARIANT_ASPECT_UNSPECIFIED", "LAYOUT", "COLOR_SCHEME", "IMAGES", "TEXT_FONT", "TEXT_CONTENT"] } } }}Output
Section titled “Output”Returns generated variant Screen objects.
Example Prompts
Section titled “Example Prompts”Generate 3 variants of screen abc123 focusing on layout and color Reimagine my landing page with radical variations Create subtle refinements of these screens Show me 5 different color schemes for this design
create_design_system
Section titled “create_design_system”Creates a new design system for a project. Establishes foundational design tokens (colors, typography, shapes, appearance) that apply across all screens.
{ "type": "object", "properties": { "designSystem": { "$ref": "#/$defs/DesignSystem", "description": "Required. The design system to create." }, "projectId": { "type": "string", "description": "Optional. Project ID. If empty, creates a global (unassociated) asset." } }, "required": ["designSystem"]}DesignSystem
Section titled “DesignSystem”{ "type": "object", "properties": { "displayName": { "type": "string", "description": "Required. Display name." }, "theme": { "$ref": "#/$defs/DesignTheme", "description": "Required. Theme configuration." } }, "required": ["displayName", "theme"]}DesignTheme
Section titled “DesignTheme”{ "type": "object", "properties": { "colorMode": { "type": "string", "enum": ["COLOR_MODE_UNSPECIFIED", "LIGHT", "DARK"] }, "headlineFont": { "type": "string", "enum": ["FONT_UNSPECIFIED", "INTER", "DM_SANS", "GEIST", "..."] }, "bodyFont": { "type": "string", "enum": ["FONT_UNSPECIFIED", "INTER", "DM_SANS", "GEIST", "..."] }, "labelFont": { "type": "string", "enum": ["FONT_UNSPECIFIED", "INTER", "DM_SANS", "GEIST", "..."] }, "roundness": { "type": "string", "enum": ["ROUNDNESS_UNSPECIFIED", "ROUND_FOUR", "ROUND_EIGHT", "ROUND_TWELVE", "ROUND_FULL"] }, "customColor": { "type": "string", "description": "Required. Hex color seed for the dynamic color system." }, "colorVariant": { "type": "string", "enum": ["COLOR_VARIANT_UNSPECIFIED", "MONOCHROME", "NEUTRAL", "TONAL_SPOT", "VIBRANT", "EXPRESSIVE", "FIDELITY", "CONTENT", "RAINBOW", "FRUIT_SALAD"] }, "overridePrimaryColor": { "type": "string", "description": "Optional. Override primary color (hex)." }, "overrideSecondaryColor": { "type": "string", "description": "Optional. Override secondary color (hex)." }, "overrideTertiaryColor": { "type": "string", "description": "Optional. Override tertiary color (hex)." }, "overrideNeutralColor": { "type": "string", "description": "Optional. Override neutral color (hex)." }, "designMd": { "type": "string", "description": "Optional. Markdown design instructions." } }, "required": ["colorMode", "headlineFont", "bodyFont", "roundness", "customColor"]}Output
Section titled “Output”Returns the created design system Asset.
Example Prompts
Section titled “Example Prompts”Create a dark mode design system with Inter font and round corners Set up a design system with blue as the primary color Create a brand identity with Geist font and minimal roundness
update_design_system
Section titled “update_design_system”Updates an existing design system. Identifies the asset by its name field.
{ "type": "object", "properties": { "name": { "type": "string", "description": "Required. Resource name. Format: `assets/{asset}`. Example: `assets/15996705518239280238`" }, "projectId": { "type": "string", "description": "Required. Project ID without prefix." }, "designSystem": { "$ref": "#/$defs/DesignSystem", "description": "Required. The updated design system content." } }, "required": ["name", "projectId", "designSystem"]}Uses the same
DesignSystemandDesignThemeschemas ascreate_design_system.
Output
Section titled “Output”Returns the updated design system Asset.
Example Prompts
Section titled “Example Prompts”Update the design system to use dark mode Change the font to Geist in our design system Update the roundness to fully rounded
list_design_systems
Section titled “list_design_systems”Lists all design systems for a project (or global design systems if no projectId).
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Optional. Project ID. If empty, lists global design systems." } }, "required": []}Output
Section titled “Output”Array of Asset objects containing design systems.
Example Prompts
Section titled “Example Prompts”List all design systems in project 12345 Show me the available design systems What design systems do I have?
apply_design_system
Section titled “apply_design_system”Applies a design system to one or more screens, modifying their appearance to match the system’s tokens (colors, fonts, shapes).
{ "type": "object", "properties": { "projectId": { "type": "string", "description": "Required. Project ID without prefix." }, "selectedScreenInstances": { "type": "array", "items": { "$ref": "#/$defs/SelectedScreenInstance" }, "description": "Required. Screen instances to update (from `get_project`)." }, "assetId": { "type": "string", "description": "Required. Design system asset ID (from `list_design_systems`), without `assets/` prefix." } }, "required": ["projectId", "selectedScreenInstances", "assetId"]}SelectedScreenInstance
Section titled “SelectedScreenInstance”{ "type": "object", "properties": { "id": { "type": "string", "description": "Required. The screen instance ID (NOT the source screen ID). Available from `get_project`." }, "sourceScreen": { "type": "string", "description": "Required. Resource name. Format: `projects/{project}/screens/{screen}`" } }, "required": ["id", "sourceScreen"]}Output
Section titled “Output”Returns the updated Screen objects.
Example Prompts
Section titled “Example Prompts”Apply the blue design system to all screens in project 12345 Restyle these screens with the brand identity Use design system abc to update my screens
Shared Types
Section titled “Shared Types”Screen
Section titled “Screen”A generated screen design within a Stitch project.
| Field | Type | Description |
|---|---|---|
name | string | Resource name. Format: projects/{project}/screens/{screen} |
id | string | (Deprecated) The screen id. |
title | string | Title of the screen. |
prompt | string | Prompt used to generate the screen. |
screenshot | File | Screenshot image of the screen. |
htmlCode | File | HTML code of the screen. |
figmaExport | File | Figma export of the screen. |
theme | DesignTheme | Theme used for generation. |
deviceType | DeviceType | Device type. |
screenType | ScreenType | Screen type. |
screenMetadata | ScreenMetadata | Metadata (agent, status, display mode). |
width | string | Width of the screen. |
height | string | Height of the screen. |
groupId | string | Group id for related screens (e.g., variants). |
groupName | string | Display name of the group. |
generatedBy | string | Generator identifier. |
isCreatedByClient | boolean | true if created via API upload, false if by agents. |
| Field | Type | Description |
|---|---|---|
name | string | Resource name. Format: projects/{project}/files/{file} |
downloadUrl | string | URL for download. FIFE base URL for images. |
mimeType | string | E.g., "image/png", "text/html". |
fileContentBase64 | string | (Write-only) Base64-encoded content for uploads. |
uploadBlobId | string | BlobId from upload service. |
userFeedback | UserFeedback | (Read-only) Latest feedback. |
DesignSystem
Section titled “DesignSystem”Represents visual/functional design guidelines used to generate consistent, branded designs.
| Field | Type | Description |
|---|---|---|
displayName | string | Display name of the design system. |
theme | DesignTheme | Theme configuration. |
Wrapper for design system resources (used by update_design_system).
| Field | Type | Description |
|---|---|---|
name | string | Resource name. Format: assets/{asset} |
designSystem | DesignSystem | The design system content. |
version | string | (Read-only) Version counter. 0 = unversioned. |
DesignTheme
Section titled “DesignTheme”| Field | Type | Required | Description |
|---|---|---|---|
colorMode | ColorMode | true | Light or dark mode. |
headlineFont | Font | true | Headline typography. |
bodyFont | Font | true | Body typography. |
labelFont | Font | false | Label typography. |
roundness | Roundness | true | Corner roundness. |
customColor | string | true | Seed color for dynamic color system (hex, e.g., "#ff0000"). |
colorVariant | ColorVariant | false | Dynamic color system variant. |
overridePrimaryColor | string | false | Override primary color (hex). |
overrideSecondaryColor | string | false | Override secondary color (hex). |
overrideTertiaryColor | string | false | Override tertiary color (hex). |
overrideNeutralColor | string | false | Override neutral color (hex). |
designMd | string | false | Markdown design instructions. |
ScreenMetadata
Section titled “ScreenMetadata”| Field | Type | Description |
|---|---|---|
agentType | AgentTypeEnum | TURBO_AGENT, PRO_AGENT, IMAGE_AGENT, GENIE_AGENT, IMAGE_PRO_AGENT, HATTER_AGENT, GEMINI_3_AGENT |
status | ScreenStatusEnum | IN_PROGRESS, COMPLETE, FAILED |
statusMessage | string | Human-readable status from agent. |
displayMode | DisplayModeEnum | SCREENSHOT, HTML, CODE, MARKDOWN, STICKY_NOTE |
isRemixed | boolean | Whether screen was created from a remix. |
componentRegions | ComponentRegion[] | Component region annotations. |
SessionOutputComponent
Section titled “SessionOutputComponent”Returned from generation tools in output_components.
| Field | Type | Description |
|---|---|---|
text | string | Agent text response. |
suggestion | string | Suggested follow-up for the user. |
design | Design | Generated design reference. |
UserFeedback
Section titled “UserFeedback”| Field | Type | Description |
|---|---|---|
rating | string | POSITIVE or NEGATIVE. |
comment | string | Additional comment. |
designFeedbackReason | string | DESIGN_DOESNT_MATCH_PROMPT, EDIT_DOESNT_MATCH_PROMPT, COMPONENT_ISSUE, INCORRECT_THEME, etc. |
VariantOptions
Section titled “VariantOptions”| Field | Type | Description |
|---|---|---|
variantCount | integer | Variants to generate (1–5). Default: 3. |
creativeRange | CreativeRange | Creative freedom level. |
aspects | VariantAspect[] | Aspects to focus on. |
SelectedScreenInstance
Section titled “SelectedScreenInstance”Used by apply_design_system.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | true | Screen instance ID (from get_project), not the source screen ID. |
sourceScreen | string | true | Resource name. Format: projects/{project}/screens/{screen} |
DeviceType Enum
Section titled “DeviceType Enum”| Value | Description |
|---|---|
DEVICE_TYPE_UNSPECIFIED | Unspecified. |
MOBILE | Mobile device. |
DESKTOP | Desktop device. |
TABLET | Tablet device. |
AGNOSTIC | Not tied to a device. |
ModelId Enum
Section titled “ModelId Enum”| Value | Description |
|---|---|
MODEL_ID_UNSPECIFIED | Unspecified. |
GEMINI_3_PRO | (Deprecated) Gemini 3 Pro. Use GEMINI_3_1_PRO or GEMINI_3_FLASH instead. |
GEMINI_3_FLASH | Gemini 3 Flash. |
GEMINI_3_1_PRO | Gemini 3.1 Pro. |
ScreenType Enum
Section titled “ScreenType Enum”| Value | Description |
|---|---|
SCREEN_TYPE_UNSPECIFIED | Defaults to DESIGN. |
DESIGN | A design screen. |
IMAGE | A pure image. |
PROTOTYPE | A design prototype. |
DOCUMENT | A document (e.g., PRD). |
PROTOTYPE_V2 | A design prototype v2. |
ColorMode Enum
Section titled “ColorMode Enum”| Value | Description |
|---|---|
COLOR_MODE_UNSPECIFIED | Unspecified. |
LIGHT | Light mode. |
DARK | Dark mode. |
ColorVariant Enum
Section titled “ColorVariant Enum”| Value | Description |
|---|---|
COLOR_VARIANT_UNSPECIFIED | Unspecified. |
MONOCHROME | Monochrome variant. |
NEUTRAL | Neutral variant. |
TONAL_SPOT | Tonal spot variant. |
VIBRANT | Vibrant variant. |
EXPRESSIVE | Expressive variant. |
FIDELITY | Fidelity variant. |
CONTENT | Content variant. |
RAINBOW | Rainbow variant. |
FRUIT_SALAD | Fruit salad variant. |
Font Enum
Section titled “Font Enum”29 supported font families:
INTER · DM_SANS · GEIST · SORA · MANROPE · LEXEND · EPILOGUE · BE_VIETNAM_PRO · PLUS_JAKARTA_SANS · PUBLIC_SANS · SPACE_GROTESK · SPLINE_SANS · WORK_SANS · MONTSERRAT · METROPOLIS · SOURCE_SANS_THREE · NUNITO_SANS · ARIMO · HANKEN_GROTESK · RUBIK · IBM_PLEX_SANS · NEWSREADER · NOTO_SERIF · DOMINE · LIBRE_CASLON_TEXT · EB_GARAMOND · LITERATA · SOURCE_SERIF_FOUR
Roundness Enum
Section titled “Roundness Enum”| Value | Description |
|---|---|
ROUNDNESS_UNSPECIFIED | Unspecified. |
ROUND_TWO | (Deprecated) Round 2. |
ROUND_FOUR | Round 4. |
ROUND_EIGHT | Round 8. |
ROUND_TWELVE | Round 12. |
ROUND_FULL | Fully rounded. |
CreativeRange Enum
Section titled “CreativeRange Enum”| Value | Description |
|---|---|
CREATIVE_RANGE_UNSPECIFIED | Unspecified. |
REFINE | Subtle refinements, close to original. |
EXPLORE | Balanced exploration. (Default) |
REIMAGINE | Radical explorations. |
VariantAspect Enum
Section titled “VariantAspect Enum”| Value | Description |
|---|---|
VARIANT_ASPECT_UNSPECIFIED | Unspecified. |
LAYOUT | Element arrangement. |
COLOR_SCHEME | Color palette. |
IMAGES | Image usage. |
TEXT_FONT | Font choices. |
TEXT_CONTENT | Text content. |
MCP Annotations
Section titled “MCP Annotations”MCP Annotations are metadata hints that an MCP server attaches to each tool definition to tell the client (the AI agent or host application) about the tool’s behavioral characteristics. They’re part of the MCP spec and help clients make smarter decisions about tool usage without needing to understand the tool’s implementation.
Each tool includes behavior annotations:
| Annotation | Meaning |
|---|---|
readOnlyHint | true = read-only, no mutations. |
destructiveHint | true = may create/modify/delete resources. |
idempotentHint | true = repeated calls produce same result. |
openWorldHint | true = interacts with external systems. |
How they work with tools in practice
Section titled “How they work with tools in practice”Each tool in the Stitch MCP server declares these as part of its tool registration. For example:
list_projectshasreadOnlyHint: true— it just fetches data, so an agent can call it without worrying about side effects.create_projecthasreadOnlyHint: false,destructiveHint: true,idempotentHint: false— it mutates state, so the client should confirm with the user first.generate_screen_from_texthasdestructiveHint: trueandidempotentHint: false— each call creates a new screen, so retrying on a timeout could produce duplicates.
Why they matter
Section titled “Why they matter”These are hints, not enforced rules. They allow MCP clients to:
- Auto-approve read-only tools without prompting the user
- Show confirmation dialogs for destructive operations
- Safely retry idempotent tools on network failures
- Audit external interactions when
openWorldHintis true
In the Stitch server’s case, all tools have openWorldHint: false because they interact only with the Stitch backend — not arbitrary third-party services.