feat: resync with the live Stitch MCP API and add the DESIGN.md wrappers - #22
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-mdstitch-mcp-create-design-system-from-design-mdThey'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.idis the screen instance id, not the source screen id (Google's own schema bolds this)apply_design_systembut prefixed togenerate_screen_from_textbase64 -w 0is GNU-only and fails on macOS withinvalid option -- wRemoved
upload_screens_from_imagesis 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
spacing/typographydesign tokens,ROUND_TWOroundnessget_project's example used fictional font names —ROBOTO,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_systemdefinition has nosaturationand no legacyfont— but real API responses return both:fontsaturationnamedColors*FontFamilytrioI 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.mdso 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.