Skip to content

feat: resync with the live Stitch MCP API and add the DESIGN.md wrappers - #22

Merged
gabelul merged 1 commit into
mainfrom
feat/api-drift-refresh
Jul 20, 2026
Merged

feat: resync with the live Stitch MCP API and add the DESIGN.md wrappers#22
gabelul merged 1 commit into
mainfrom
feat/api-drift-refresh

Conversation

@gabelul

@gabelul gabelul commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Google's docs site is a JS shell — it renders nothing to WebFetch or a real browser (the content lives in a cross-origin iframe that throws 500+ exceptions loaded standalone). So this was verified against the live MCP server's tool definitions and 85 real projects returned by list_projects, which turned out to be better ground truth anyway.

Added

Two wrapper skills for tools we had no coverage for, both actively used by Google's own current skills (create_design_system_from_design_md ×6, upload_design_md ×2):

  • stitch-mcp-upload-design-md
  • stitch-mcp-create-design-system-from-design-md

They're a mandatory pair — the upload creates a screen instance, the second call turns it into a design system. Either alone does nothing useful.

Both document the traps, which are exactly what this wrapper layer exists for:

  • selectedScreenInstance.id is the screen instance id, not the source screen id (Google's own schema bolds this)
  • The resulting asset id goes bare to apply_design_system but prefixed to generate_screen_from_text
  • Google's documented base64 -w 0 is GNU-only and fails on macOS with invalid option -- w

Removed

upload_screens_from_images is gone from the live server, and Google's current repo has zero references to it. There is no replacement — the API has no image-upload route at all now. The screenshot→redesign path is documented as unavailable rather than quietly rerouted somewhere that doesn't work.

Refreshed

  • Font enum 47 → 68 values across all five schemas
  • spacing / typography design tokens, ROUND_TWO roundness
  • get_project's example used fictional font namesROBOTO, LATO, POPPINS, FIGTREE, GENERAL_SANS — none of which exist in the real enum. Agents following it would have sent invalid values.

The subtle one, worth reviewing

Input and output DesignTheme are different shapes. The live create_design_system definition has no saturation and no legacy font — but real API responses return both:

Field Present in 85 live projects
font 74
saturation 57
namedColors 15
*FontFamily trio 7

I initially treated the input schema as universal and had them stripped everywhere. That was wrong — it would have made the docs claim less than the API delivers. They're now documented as read-only response fields, removed only from the input schema, and the input/output distinction is written up in docs/mcp-schemas/README.md so the next refresh doesn't repeat the mistake.

Skill count 35 → 36 across banner SVG, README, marketplace, and index. Validator: Passed with 30 warning(s) — no errors.

The docs site is a JS shell that renders nothing to a fetcher or a real
browser, so this was verified against the live MCP server's tool definitions
and 85 real projects from `list_projects` instead. Several things had drifted
since the schemas were last captured.

Added, because Google's own current skills use both and we wrapped neither:

- `stitch-mcp-upload-design-md`
- `stitch-mcp-create-design-system-from-design-md`

They're a mandatory pair — the upload creates a screen instance and the second
call turns it into a design system. Either alone is useless. Both skills
document the two traps: `selectedScreenInstance.id` is the screen *instance*
id and not the source screen id, and the resulting asset id goes bare to
`apply_design_system` but prefixed to `generate_screen_from_text`. Also noted
that Google's `base64 -w 0` is GNU-only and fails on macOS; use `-i` there.

Removed `upload_screens_from_images`. It is gone from the live server and
Google's current repo has zero references to it. There is no replacement —
the API has no image-upload route at all now — so the screenshot-to-redesign
path is documented as unavailable rather than quietly rerouted.

Refreshed the schemas: fonts 47 -> 68 enum values, `spacing` and `typography`
tokens added, `ROUND_TWO` filled in, and the fictional font names in
get_project's example (ROBOTO, LATO, POPPINS, FIGTREE) replaced with values
that actually exist.

The subtle one: input and output DesignTheme are different shapes. The live
`create_design_system` tool definition has no `saturation` and no legacy
`font`, but real API responses return both — `font` in 74 of 85 projects,
`saturation` in 57, plus `namedColors`, `spacingScale` and the `*FontFamily`
trio. Stripping them from the output schemas would have made the docs claim
less than the API delivers. They're now documented as read-only response
fields, removed only from the input schema, and the distinction is written
up in docs/mcp-schemas/README.md so the next refresh doesn't repeat it.

Skill count 35 -> 36 across the banner SVG, README, marketplace, and index.
@gabelul
gabelul merged commit 44b9ef6 into main Jul 20, 2026
1 check passed
@gabelul
gabelul deleted the feat/api-drift-refresh branch July 20, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant