Google Stitch MCP

# Stitch by Google — MCP Skill

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Google Stitch MCP" with this command: npx skills add arielletolome/stitch

Stitch by Google — MCP Skill

Stitch is Google's AI-powered UI design tool (Beta). This skill covers how to interact with Stitch projects and screens via its Remote MCP server using the HTTP API.


Authentication

API Key (Recommended)

Generate your API key at: https://stitch.withgoogle.com/settings (API Keys section)

Set it as an environment variable: export STITCH_API_KEY=YOUR_STITCH_API_KEY

All requests go to: https://stitch.googleapis.com/mcp

Pass the key via header: X-Goog-Api-Key: $STITCH_API_KEY

Making MCP Calls

Stitch exposes a standard MCP HTTP endpoint. To call a tool, POST to the MCP endpoint with the tool name and arguments.

curl -X POST https://stitch.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_STITCH_API_KEY" \
  -d '{
    "method": "tools/call",
    "params": {
      "name": "list_projects",
      "arguments": {}
    }
  }'

Note: Stitch is a Remote MCP server (cloud-hosted), unlike local file-based MCP servers. API Keys persist indefinitely; OAuth tokens expire every ~1 hour.


Available Tools

Project Management

list_projects

Lists all Stitch projects accessible to the user.

  • Read-only: yes
  • Input:
    • filter (optional, string): AIP-160 filter on view field. Values: view=owned (default), view=shared
  • Output: Array of Project objects
# List all owned projects
curl -X POST https://stitch.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_STITCH_API_KEY" \
  -d '{"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'

create_project

Creates a new Stitch project (container for UI designs).

  • Read-only: no (destructive)
  • Input:
    • title (optional, string): Display name of the project
  • Output: Created Project resource with name, title, and metadata
curl -X POST https://stitch.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_STITCH_API_KEY" \
  -d '{"method":"tools/call","params":{"name":"create_project","arguments":{"title":"My Ad Landing Page"}}}'

get_project

Retrieves details of a specific project.

  • Read-only: yes
  • Input:
    • name (required, string): Resource name. Format: projects/{project}. Example: projects/4044680601076201931
  • Output: Project resource object

Screen Management

list_screens

Lists all screens within a Stitch project.

  • Read-only: yes
  • Input:
    • projectId (required, string): Project ID without projects/ prefix
  • Output: Array of Screen objects
curl -X POST https://stitch.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_STITCH_API_KEY" \
  -d '{"method":"tools/call","params":{"name":"list_screens","arguments":{"projectId":"4044680601076201931"}}}'

get_screen

Retrieves details of a specific screen including HTML, screenshot, and Figma export.

  • Read-only: yes
  • Input:
    • name (required): projects/{project}/screens/{screen}
    • projectId (required, deprecated): Project ID without prefix
    • screenId (required, deprecated): Screen ID without prefix

    All three are currently required even though projectId/screenId are deprecated.

  • Output: Screen object with htmlCode, screenshot, figmaExport download URLs

AI Generation

generate_screen_from_text

Generates a new UI screen from a text prompt. Takes a few minutes.

  • Read-only: no (destructive)
  • ⚠️ Don't retry on connection errors — generation may still be in progress. Use get_screen after a few minutes to check.
  • Input:
    • projectId (required, string)
    • prompt (required, string): Describe the screen to generate
    • deviceType (optional): MOBILE | DESKTOP | TABLET | AGNOSTIC
    • modelId (optional): GEMINI_3_FLASH | GEMINI_3_1_PRO (GEMINI_3_PRO is deprecated)
  • Output: Generated Screen objects + SessionOutputComponent entries (may include suggestions)
    • If output_components has suggestions, present them to user. If accepted, call again with the suggestion as the new prompt.
curl -X POST https://stitch.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: YOUR_STITCH_API_KEY" \
  -d '{
    "method": "tools/call",
    "params": {
      "name": "generate_screen_from_text",
      "arguments": {
        "projectId": "YOUR_PROJECT_ID",
        "prompt": "A mobile landing page for a Medicare insurance offer with a bold headline, trust badges, and a prominent CTA button",
        "deviceType": "MOBILE",
        "modelId": "GEMINI_3_1_PRO"
      }
    }
  }'

edit_screens

Edits existing screens using a text prompt. Takes a few minutes.

  • Read-only: no (destructive)
  • ⚠️ Don't retry on connection errors
  • Input:
    • projectId (required, string)
    • selectedScreenIds (required, string[]): Screen IDs without screens/ prefix
    • prompt (required, string): Edit instruction
    • deviceType (optional)
    • modelId (optional): GEMINI_3_FLASH | GEMINI_3_1_PRO
  • Output: Updated Screen objects

generate_variants

Generates design variants of existing screens.

  • Read-only: no (destructive)
  • ⚠️ Don't retry on connection errors
  • Input:
    • projectId (required, string)
    • selectedScreenIds (required, string[])
    • prompt (required, string): Guide variant generation
    • variantOptions (required, object): See VariantOptions below
    • deviceType (optional)
    • modelId (optional)
  • Output: Variant Screen objects

VariantOptions schema:

{
  "variantCount": 3,
  "creativeRange": "EXPLORE",
  "aspects": ["COLOR_SCHEME", "LAYOUT"]
}
  • variantCount: 1–5 (default: 3)
  • creativeRange: REFINE | EXPLORE | REIMAGINE
  • aspects: LAYOUT | COLOR_SCHEME | IMAGES | TEXT_FONT | TEXT_CONTENT

Shared Types

Screen Object

FieldTypeDescription
namestringResource name: projects/{project}/screens/{screen}
idstring(Deprecated) Screen ID
titlestringScreen title
promptstringPrompt used to generate
screenshotFileScreenshot image
htmlCodeFileHTML code of the screen
figmaExportFileFigma export file
themeDesignThemeTheme used
deviceTypeDeviceTypeDevice target
screenMetadataScreenMetadataStatus, agent type, display mode
width / heightstringScreen dimensions
groupIdstringGroup ID for variants

File Object

FieldTypeDescription
namestringprojects/{project}/files/{file}
downloadUrlstringDirect download URL
mimeTypestringe.g. image/png, text/html

ScreenMetadata

FieldValues
statusIN_PROGRESS | COMPLETE | FAILED
agentTypeTURBO_AGENT, PRO_AGENT, GEMINI_3_AGENT, etc.
displayModeSCREENSHOT | HTML | CODE | MARKDOWN | STICKY_NOTE

Common Workflows

Generate a new landing page ad creative

import requests
import json

API_KEY = "YOUR_STITCH_API_KEY"
MCP_URL = "https://stitch.googleapis.com/mcp"
HEADERS = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": API_KEY
}

def stitch_call(tool_name, args):
    payload = {
        "method": "tools/call",
        "params": {"name": tool_name, "arguments": args}
    }
    r = requests.post(MCP_URL, headers=HEADERS, json=payload)
    r.raise_for_status()
    return r.json()

# 1. Create a project
project = stitch_call("create_project", {"title": "Medicare Q4 Campaign"})
project_id = project["result"]["name"].split("/")[1]

# 2. Generate initial screen
result = stitch_call("generate_screen_from_text", {
    "projectId": project_id,
    "prompt": "Mobile landing page for Medicare Advantage with emotional headline, plan comparison table, and green CTA button",
    "deviceType": "MOBILE",
    "modelId": "GEMINI_3_1_PRO"
})

# 3. Get screen details once complete
# (generation takes a few minutes — poll with get_screen)
screens = result["result"].get("screens", [])
if screens:
    screen_name = screens[0]["name"]
    # screen_name format: projects/{id}/screens/{screen_id}
    parts = screen_name.split("/")
    project_id = parts[1]
    screen_id = parts[3]
    
    screen = stitch_call("get_screen", {
        "name": screen_name,
        "projectId": project_id,
        "screenId": screen_id
    })
    
    # Download HTML
    html_url = screen["result"]["htmlCode"]["downloadUrl"]
    print(f"HTML download URL: {html_url}")
    
    # Download screenshot
    screenshot_url = screen["result"]["screenshot"]["downloadUrl"]
    print(f"Screenshot URL: {screenshot_url}")

Generate variants for A/B testing

# After generating a base screen, create variants
variants = stitch_call("generate_variants", {
    "projectId": project_id,
    "selectedScreenIds": [screen_id],
    "prompt": "Test different color schemes and CTA button styles",
    "variantOptions": {
        "variantCount": 3,
        "creativeRange": "EXPLORE",
        "aspects": ["COLOR_SCHEME", "TEXT_CONTENT"]
    },
    "deviceType": "MOBILE",
    "modelId": "GEMINI_3_FLASH"
})

Tips for Ad Creative Use

  • Effective prompts include: device type, ad vertical, emotional tone, specific UI components (hero, CTA, trust badges, form)
  • Pixel-perfect HTML: Use htmlCode.downloadUrl to grab the actual HTML — hand it to Marcus for landing page deployment
  • Figma export: Available via figmaExport.downloadUrl for design review
  • Generation takes 2–5 minutes — don't retry on network errors; check status with get_screenscreenMetadata.status
  • Model choice: GEMINI_3_1_PRO for highest quality, GEMINI_3_FLASH for faster iteration

MCP Client Config (for direct Claude Code / Cursor integration)

{
  "mcpServers": {
    "stitch": {
      "url": "https://stitch.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "YOUR_STITCH_API_KEY"
      }
    }
  }
}

Or via Claude Code CLI:

claude mcp add stitch --transport http https://stitch.googleapis.com/mcp \
  --header "X-Goog-Api-Key: YOUR_STITCH_API_KEY" -s user

Docs Reference

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

GigaChat (Sber AI) Proxy

Integrate GigaChat (Sber AI) with OpenClaw via gpt2giga proxy

Registry SourceRecently Updated
3600smvlx
General

TencentCloud Video Face Fusion

通过提取两张人脸核心特征并实现自然融合,支持多种风格适配,提升创意互动性和内容传播力,广泛应用于创意营销、娱乐互动和社交分享场景。

Registry SourceRecently Updated
General

TencentCloud Image Face Fusion

图片人脸融合(专业版)为同步接口,支持自定义美颜、人脸增强、牙齿增强、拉脸等参数,最高支持8K分辨率,有多个模型类型供选择。

Registry SourceRecently Updated
General

YoudaoNote News

有道云笔记资讯推送:基于收藏笔记分析关注话题,推送最新相关资讯。支持对话触发与每日定时推送(如早上9点)。触发词:资讯推送、设置资讯推送、生成资讯推送。

Registry SourceRecently Updated
1.5K1lephix