Stitch MCP Server
Generates CSS custom properties from design tokens, optionally with dark-mode block.
Access Google Stitch design-generation API for project and screen management.
Creates structured issue data for Jira from screen designs.
Creates structured issue data for Linear from screen designs.
Generates style guide documentation in markdown format from a screen.
Converts Stitch HTML to React/TSX components with typed props and Tailwind CSS.
Extracts design tokens into a complete tailwind.config.ts from a screen.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Stitch MCP ServerGenerate a screen from text 'modern login page' in project 123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Stitch MCP Server
The most comprehensive MCP server for Google Stitch — 36 tools for design-to-code workflows.
A modular TypeScript MCP (Model Context Protocol) server that wraps Google Stitch's design-generation API with 36 tools across 9 categories — from upstream proxy and code generation to design analysis, export, and project management.
Built by combining the best of davideast/stitch-mcp and GreenSheep01201/stitch-mcp-auto, then extended with advanced design-to-code utilities.
Features
Core
Full upstream proxy — Access all Google Stitch MCP tools directly
Workspace management — Persist project associations per directory via
.stitch-project.jsonAuto project resolution — Tools automatically detect the active project from session, workspace, or argument
Design Intelligence
Design context extraction — Pull colors, typography, spacing, and component patterns from any screen
Design system validation — Check screens against approved tokens for compliance scoring
Dark mode generation — Automatically generate dark variants with configurable contrast
Responsive variants — Adapt screens across mobile, tablet, and desktop with layout strategies
Component variants — Generate multiple visual styles of a component for A/B testing
Code Generation
Screen to React — Convert Stitch HTML to TSX with typed props and Tailwind classes
Screen to Tailwind config — Extract a complete
tailwind.config.tsfrom a designScreen to CSS variables — Generate semantic
:rootcustom properties with optional dark-mode blockDesign tokens — Export as CSS variables, Tailwind config, SCSS, or JSON
Analysis & Export
Accessibility audit — WCAG 2.1 compliance checking with severity scoring
Design comparison — Side-by-side diff of two screens (colors, typography, layout, components)
Design diff — Structured element/style/text/class diff for tracking iterations
Bulk export — Export all screens (HTML + screenshots) from a project
Style guide generation — Visual or markdown design documentation from a screen
Project summary — High-level overview with consistency scoring and recommendations
Integration
PM issue generation — Create structured issue data for Plane, Linear, Jira from screen designs
Template library — 10 predefined UI templates (dashboard, login, kanban, chat, etc.)
Trending designs — Apply modern design trends (glassmorphism, bento-grid, aurora gradients, etc.)
Related MCP server: Stitch MCP Auto
Quick Start
# 1. Clone and install
git clone https://github.com/oogleyskr/stitch-mcp-server.git
cd stitch-mcp-server
npm install
# 2. Build
npm run build
# 3. Set authentication (pick one)
export STITCH_API_KEY="your-api-key"
# OR
export STITCH_ACCESS_TOKEN="your-access-token"
# OR have gcloud CLI configuredAuthentication
Three methods are supported, checked in priority order:
Priority | Method | Environment Variable | HTTP Header |
1 | API Key |
|
|
2 | Access Token |
|
|
3 | gcloud CLI | (auto-detected) |
|
Method 1: API Key (Recommended)
export STITCH_API_KEY="AIza..."Method 2: Access Token
export STITCH_ACCESS_TOKEN="ya29...."
export GOOGLE_CLOUD_PROJECT="my-project-id" # optional, for billingMethod 3: gcloud CLI
gcloud auth login
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT="my-project-id" # optionalThe server automatically runs gcloud auth print-access-token and validates the token format.
Complete Tool Reference
Upstream Stitch Tools (7)
Tools proxied directly to Google's Stitch MCP endpoint.
Tool | Description | Required Parameters |
| List all accessible Stitch projects | — |
| Get project details |
|
| List screens in a project |
|
| Get screen details with download URLs |
|
| Generate a screen from a text prompt |
|
| Edit existing screens with text instructions |
|
| Generate design variants of a screen |
|
Code & Build Tools (4)
Tool | Description | Required Parameters | Optional |
| Fetch raw HTML code of a screen |
| — |
| Fetch screenshot as base64 PNG |
| — |
| Map screens to routes, fetch all HTML |
| — |
| List all available tools with schemas | — | — |
Workspace Tools (3)
Tool | Description | Required Parameters |
| Check if workspace has a linked project | — |
| Link a project to current workspace |
|
| Remove workspace project link | — |
Design Tools (6)
Tool | Description | Required Parameters | Optional |
| Extract colors, typography, spacing, components |
|
|
| Generate screen using extracted design context |
|
|
| Generate CSS vars / Tailwind / SCSS / JSON tokens |
|
|
| Create responsive version for different viewport |
|
|
| Generate multiple related screens consistently |
|
|
| Generate from 10 predefined UI templates |
|
|
Available templates: dashboard, settings, login, profile, pricing, landing-hero, data-table, kanban-board, chat-interface, file-manager
Available styles: modern, minimal, corporate, playful, elegant
Analysis Tools (4)
Tool | Description | Required Parameters | Optional |
| WCAG 2.1 accessibility analysis |
|
|
| Compare two screens for design inconsistencies |
|
|
| Extract reusable UI components |
|
|
| Structured diff between two screens |
|
|
Export Tools (4)
Tool | Description | Required Parameters | Optional |
| Generate visual style guide from a screen |
|
|
| Export complete design system package |
|
|
| Apply modern design trends to a prompt |
|
|
| Bulk export all screens (HTML + screenshots) |
|
|
Available trends: glassmorphism, bento-grid, gradient-mesh, aurora-gradients, 3d-elements, micro-interactions, dark-mode, minimalist, brutalist, neomorphism, retro-futurism, organic-shapes, bold-typography
Codegen Tools (1)
Tool | Description | Required Parameters | Optional |
| Convert screen to React/TSX with Tailwind CSS |
|
|
Integration Tools (1)
Tool | Description | Required Parameters | Optional |
| Generate PM issue data from a screen |
|
|
Advanced Tools (6)
Tool | Description | Required Parameters | Optional |
| Extract complete |
|
|
| Extract CSS custom properties with semantic names |
|
|
| Check screen compliance against design tokens |
|
|
| Generate dark-mode variant of a screen |
|
|
| Generate visual variants of a component |
|
|
| High-level project overview with consistency score |
|
|
Architecture
src/
├── index.ts # Entry point — MCP server setup, tool routing, project resolution
├── auth.ts # Authentication (API key, access token, gcloud CLI fallback)
├── stitch-client.ts # JSON-RPC client, download helpers, screen list parser
├── types.ts # TypeScript interfaces (auth, RPC, tools, design context)
└── tools/
├── helpers.ts # Shared utilities (extractUnique, extractCssValues, validators)
├── upstream.ts # Proxy to upstream Stitch tools (7 tools)
├── code.ts # Screen code/image retrieval, site building (4 tools)
├── workspace.ts # Workspace project management (3 tools)
├── design.ts # Design context, tokens, responsive, batch, templates (6 tools)
├── analysis.ts # Accessibility, comparison, components, design diff (4 tools)
├── export.ts # Style guides, design system export, trends, bulk export (4 tools)
├── codegen.ts # Screen-to-React conversion (1 tool)
├── integration.ts # Screen-to-PM-issue bridge (1 tool)
└── advanced.ts # Tailwind config, CSS vars, validation, dark mode, variants, summary (6 tools)Key Design Decisions
Modular tool files — Each category has its own file with definitions and handlers
Shared helpers — Common HTML extraction functions centralised in
helpers.tsInput validation — All required parameters validated with
requireString/requireNonEmptyArrayAuto project resolution — Three-tier lookup: argument > session cache >
.stitch-project.jsonTimeout protection — All HTTP requests (RPC, downloads) have configurable timeouts
Immutable patterns — Tool definitions are
readonly, args are spread (never mutated)
Integration
Claude Code / Claude Desktop
Add to your MCP config file (.mcp.json or Claude Desktop settings):
{
"mcpServers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}MCPJungle
{
"name": "stitch",
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
},
"tags": ["design", "ui", "stitch", "google"]
}Cursor
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}VS Code (Copilot MCP)
Add to your VS Code settings:
{
"mcp.servers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}Environment Variables
Variable | Required | Description |
| One of three | Google API key for Stitch access |
| One of three | OAuth2 access token |
| Optional | GCP project ID for billing (Bearer auth) |
| Optional | Alias for |
| Optional | Override the Stitch API endpoint URL (default: |
Examples
1. Design-to-Code Workflow
User: "Generate a dashboard screen and convert it to React"
1. generate_screen_from_text → Creates the design in Stitch
2. get_screen_code → Fetches the HTML
3. screen_to_react → Converts to a React/TSX component with Tailwind
4. screen_to_tailwind_config → Extracts a matching tailwind.config.ts2. Design System Audit
User: "Check if our screens follow the design system"
1. project_summary → Overview of all screens with consistency score
2. validate_design_system → Check each screen against approved tokens
3. compare_designs → Compare inconsistent screens side-by-side
4. export_design_system → Export the corrected design system for handoff3. Dark Mode Generation
User: "Create a dark mode version of our app"
1. list_screens → Find all screens in the project
2. extract_design_context → Extract the current design DNA
3. generate_dark_mode → Generate dark variants for each screen
4. screen_to_css_variables → Export CSS vars with dark-mode overrides4. Component Library Build
User: "Build a component library from our designs"
1. extract_components → Pull buttons, cards, forms, nav from a screen
2. generate_component_variants → Create 3-5 visual variants of each component
3. screen_to_react → Convert each variant to React
4. generate_style_guide → Create visual documentation5. Bulk Project Export
User: "Export everything from this project for handoff"
1. project_summary → Get the full project overview
2. export_all_screens → Bulk export all HTML + screenshots
3. export_design_system → Export tokens, components, and documentation
4. generate_design_tokens → Generate CSS variables and Tailwind config6. Rapid Prototyping with Templates
User: "Create a SaaS app prototype"
1. generate_from_template → "dashboard" with "dark theme, analytics focus"
2. generate_from_template → "settings" with "minimal style, dark theme"
3. generate_from_template → "pricing" with "3 tiers, annual toggle"
4. generate_from_template → "login" with "social auth, dark background"
5. build_site → Map all screens to routesContributing
Adding a New Tool
Choose the right module — Pick the tool file that matches the category, or create a new one
Define the tool — Add a
ToolDefinitionto the module's definitions arrayImplement the handler — Write an async function that returns
McpToolResultRegister in the dispatcher — Add a
caseto the module's switch statementWire into index.ts — If it's a new module, import it and add to the routing logic
Add to TOOLS_REQUIRING_PROJECT — If the tool needs a
projectIdBuild and test — Run
npm run buildand verify the tool appears inlist_tools
Tool Handler Pattern
async function handleMyNewTool(
args: Record<string, unknown>,
creds: AuthCredentials,
projectId?: string
): Promise<McpToolResult> {
// 1. Validate inputs
const pid = requireString(args.projectId, "projectId");
// 2. Fetch data
const html = await fetchScreenHtml(pid, screenId, creds, projectId);
// 3. Process
const result = analyzeHtml(html);
// 4. Return structured result
return {
content: [{
type: "text",
text: JSON.stringify({ success: true, ...result }, null, 2),
}],
};
}License
Apache-2.0 -- Contributions welcome.
Available Tools
44 toolsanalyze_accessibilityA
Analyzes a screen for WCAG 2.1 accessibility compliance. Checks color contrast, text sizes, touch targets, semantic structure, and provides actionable recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | WCAG conformance level. | AA |
| screenId | Yes | The screen ID to analyze. | |
| projectId | Yes | The project ID. | |
| includeRecommendations | No | Include fix recommendations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the analysis dimensions (color contrast, text sizes, touch targets, semantic structure) and states that it produces actionable recommendations. The word 'Analyzes' implies a read-only operation, which is transparent enough for an analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the core action and then enumerates the checks. There is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should clarify what the caller receives; it only says 'provides actionable recommendations' without detailing result structure or how level/includeRecommendations affect output. Invocation is feasible because required parameters are in the schema, but output semantics remain vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters clearly. The description does not add parameter-specific meaning, but it does align with the intent of parameters like includeRecommendations and level by describing WCAG checks and recommendations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Analyzes') with a clear resource ('a screen') and domain ('WCAG 2.1 accessibility compliance'), then lists concrete checks. It is distinct from all sibling tools, none of which target accessibility analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear context: use this tool when you need WCAG compliance analysis of a screen. It does not explicitly state when not to use it, but there are no sibling tools offering the same capability, so the purpose alone provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_design_contextB
Generates a new screen using a previously extracted design context for visual consistency.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the new screen to generate. | |
| projectId | Yes | The project ID. | |
| deviceType | No | Target device type. | MOBILE |
| designContext | Yes | The design context from extract_design_context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden, but it only restates the core operation already visible in the schema ('Generates a new screen') and adds minimal context ('for visual consistency'). It does not disclose side effects, output format, failure behavior, or any constraints such as whether an existing screen is modified or a new project must exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that is front-loaded and contains no filler. Every word supports the tool's purpose and key constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too thin. It omits what the function returns, any required sequencing beyond 'previously extracted', and how it differs operationally from similar generation tools. An agent would need to open the schema or infer from the name to fully understand invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds little beyond the schema, though it does reinforce that designContext should come from a previous extraction step. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generates') and resource ('a new screen') and clearly ties the tool to a design context, distinguishing it from generic generation tools like generate_screen_from_text. It does not name the sibling tool directly, but the phrase 'previously extracted design context' is a strong differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'previously extracted design context' implies a prerequisite and suggests the tool is for visual consistency, but there is no explicit statement of when to use this tool versus alternatives like generate_screen_from_text or apply_design_system. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_design_systemADestructive
Applies a design system to a list of screens. Use this tool when the user wants to update one or more screens to match the style of a design system. This tool applies the selected design system's foundational design tokens (colors, fonts, shapes, etc.) to the chosen screens, modifying their appearance to align with the design system.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | Required. The asset id of the design system to apply, can be fetched from 'list_design_systems'. Example: '15996705518239280238', without the `assets/` prefix. | |
| projectId | Yes | Required. The project ID of screen instances to edit, example: '4044680601076201931', without the `projects/` prefix. | |
| selectedScreenInstances | Yes | Required. The screen instances to edit, which is available in the Project info, fetched by `get_project`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| projectId | No | The project ID of the generated screen. This is the same as the input project ID. |
| sessionId | No | The session ID of the generated screen. |
| outputComponents | No | The generated output components. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds that it modifies appearance and applies foundational design tokens, which gives some context. However, it does not disclose potential side effects (e.g., overriding existing styles) or reversibility, so it stays at a baseline level given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loads the core purpose. The first sentence is a clear action statement; the second adds context about design tokens. No filler or rephrasing of the name, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations (destructive profile), a 100% schema-coverage, and an output schema, the description sufficiently explains the tool's role and behavior. It could mention potential irreversibility, but that is already flagged by destructiveHint. The description is adequate for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all three parameters with detailed descriptions, achieving 100% coverage. The description does not add parameter-level details beyond saying it applies the selected design system to chosen screens, which is already implied. Baseline 3 is appropriate when schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the action: 'Applies a design system to a list of screens.' This distinguishes it from sibling tools like create_design_system and update_design_system, which deal with design systems themselves. The second sentence elaborates the scope (modifying appearance via design tokens), reinforcing a specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this tool when the user wants to update one or more screens to match the style of a design system.' This provides clear when-to-use guidance. It does not mention exclusions or alternatives, but the context is specific enough to avoid confusion with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_generate_screensB
Generates multiple related screens in a single operation with consistent design language.
| Name | Required | Description | Default |
|---|---|---|---|
| screens | Yes | Array of screens to generate. | |
| projectId | Yes | The project ID. | |
| deviceType | No | Device type for all screens. | MOBILE |
| sharedDesignContext | No | Optional shared design context for all screens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that generation happens in a single operation and maintains design consistency, but it does not mention side effects such as whether screens are newly created or overwrite existing ones, whether partial failures can occur, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant content. It front-loads the core purpose and includes the key differentiator of batch generation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and the tool involves nested objects and side effects. The description does not explain what the operation returns, whether the batch is atomic, or how existing screens are affected. More behavioral context is needed for an agent to invoke this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds the notion of 'consistent design language,' which relates to sharedDesignContext but does not explicitly map to it. Baseline 3 is appropriate because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Generates multiple related screens in a single operation.' This clearly distinguishes it from single-screen generation tools like generate_screen_from_text, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'multiple related screens' implies when this tool should be used, and 'consistent design language' hints at a use case around design coherence. However, it does not explicitly state when to prefer this over generate_screen_from_text, edit_screens, or generate_variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_siteA
Builds a site from a Stitch project by mapping screens to routes. Returns the design HTML for each page to use as context for code generation.
| Name | Required | Description | Default |
|---|---|---|---|
| routes | Yes | Array of screen-to-route mappings. | |
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the output (design HTML) but does not say whether building the site mutates the project, persists routes, creates artifacts, or has side effects—important for a 'build' action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action and mechanism, the second states the return value and intended use. The most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and return value at a high level, but with no output schema, no annotations, and no stated prerequisites or side-effect behavior, an agent is left guessing about persistence, output shape, and whether the build is safe/idempotent. It is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters are already documented in the input schema. The description's 'mapping screens to routes' phrase reinforces the routes parameter's meaning but does not add meaningful new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Builds a site') and explains the core mechanism (mapping screens to routes), which makes the tool's purpose clear. It also hints at differentiation from code-generation siblings by stating it returns design HTML as context for code generation, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description communicates a clear usage context: invoking this tool produces design HTML meant to feed code generation. It does not explicitly state when to avoid this tool or list sibling alternatives, but the downstream-purpose phrasing gives the agent enough context to choose it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_workspace_projectA
Removes the Stitch project association from the current workspace/folder.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It transparently states that the operation removes an association rather than deleting the project, which is useful nuance. However, it does not disclose whether the action is reversible, whether it affects other workspace state, or whether confirmation is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately conveys the verb, target, and scope, which is ideal for a tool of this simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and no annotations, the description is largely complete: it names the action and the exact thing being removed. A short note on reversibility or side effects would improve completeness, but given the low complexity, the current description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline for this dimension is 4. The description adds meaningful implicit context by identifying the current workspace/folder as the operation target, which is the only relevant input. No parameter-level clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('removes') and a specific target ('Stitch project association from the current workspace/folder'), which is clear and scoped. It does not explicitly name or differentiate from sibling tools like delete_project or set_workspace_project, but the word 'association' signals it is not deleting the project itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when the current workspace/folder has a Stitch project association that should be removed. It does not mention alternatives or exclusions, but the scope ('current workspace/folder') gives enough context for an agent to distinguish it from project-level operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_designsC
Compares two screens to identify design differences, inconsistencies, and suggest harmonization opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID. | |
| screenId1 | Yes | First screen ID. | |
| screenId2 | Yes | Second screen ID. | |
| compareAspects | No | Aspects to compare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool 'compares' and 'suggests,' but it does not clarify whether the operation is read-only, whether screens are modified, or what the output/return format looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence that front-loads the verb and scope with no filler. It is appropriately concise, though the brevity sacrifices useful context about usage and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is too thin to fully support correct invocation. It omits the result format, whether the comparison is read-only, and how the optional compareAspects parameter affects the output or suggestions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no additional parameter-level meaning beyond what is already in the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the operation ('compares two screens'), the subject ('two screens'), and the outcomes (differences, inconsistencies, harmonization opportunities), which clearly conveys the tool's core function. However, it does not differentiate compare_designs from the sibling tool design_diff, which appears to have a very similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when comparing two screens, but it gives no explicit guidance about when to choose this tool over alternatives such as design_diff. There are no mention of exclusions, prerequisites, or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_design_systemADestructive
Creates a new design system for a project. Use this tool when the user wants to set or update the overall visual theme, style, or branding of the application. This includes configuring:
Color Palette: Presets, custom primary colors, and saturation levels.
Typography: Font families (e.g., Inter, Roboto, etc.).
Shape: Corner roundness for UI elements.
Appearance: Light and dark mode background colors.
Design MD: Free-form design instructions in markdown. This tool establishes the foundational design tokens that apply across all screens in the project.
Instructions for Tool Call:
Call
update_design_systemtool immediately after this tool to apply the design system to the project, and display the design system in the UI.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional. The project ID to create design system for, example: '4044680601076201931', without the `projects/` prefix. If empty, creates a global asset (not associated with any project). | |
| designSystem | Yes | Required. The design system to create. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Identifier. The resource name of the asset. Format: assets/{asset} |
| version | No | Output only. The version of this asset. 0 indicates unversioned (legacy data). Incremented when the asset content changes. |
| copiedFrom | No | Optional. The resource name of the asset this was copied from, if any. Format: assets/{asset} Tracks the fork history of assets. |
| designSystem | No | Optional. The design system. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable context: the tool establishes foundational design tokens that apply across all screens, and it requires a follow-up call to update_design_system to actually apply the system. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, a bulleted list of configuration areas, and a bolded instruction section. It is slightly verbose but every part earns its place, and the most important operational detail (call update_design_system after) is highlighted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested DesignSystem object, many theme properties) and the presence of an output schema, the description covers the essential user-facing behavior and the critical follow-up workflow. It does not need to explain return values, and parameter details are in the schema. Missing only a note about global vs. project-level creation, which is present in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description provides a high-level grouping of parameters (Color Palette, Typography, Shape, Appearance, Design MD) but does not add syntax, formats, or field-specific details beyond what the schema already documents. It's helpful for conceptual understanding but not necessary for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates a new design system for a project' with a specific verb and resource. It lists the types of configuration (color, typography, shape, etc.), but does not explicitly distinguish from sibling tools like update_design_system or create_design_system_from_design_md, and the phrase 'set or update' could imply an update capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'when the user wants to set or update the overall visual theme, style, or branding of the application.' It also provides a crucial sequencing guideline: call update_design_system immediately after. However, it does not explicitly state when not to use it or name alternatives like create_design_system_from_design_md.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_design_system_from_design_mdADestructive
Creates a design system for a project, with user uploaded DESIGN.md file, and displays the design system in the UI.
Instructions for Tool Call:
Should call
upload_design_mdtool first to upload DESIGN.md to a Stitch project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Required. The project ID to update design system for, example: '4044680601076201931', without the `projects/` prefix. | |
| deviceType | No | Optional. The device type of the screen. | |
| selectedScreenInstance | Yes | Required. The screen instance to create the design system from, which is created by UploadDesignMd RPC. |
Output Schema
| Name | Required | Description |
|---|---|---|
| assetId | No | The asset id of the design system. Example: '15996705518239280238', without the `assets/` prefix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the mutation risk is known. The description adds that it 'displays the design system in the UI', a useful behavioral detail, but doesn't disclose what specifically might be destroyed or other side effects. This adds some value beyond annotations without contradicting them, warranting a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, with the first clearly stating purpose and the second providing a critical instruction. Every word earns its place, and it is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered elsewhere. The description gives the essential workflow instruction (call upload_design_md first) and states the UI display side effect. It is complete for a create-like tool with moderate complexity, though it could mention error scenarios or what happens on conflict.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description mentions 'user uploaded DESIGN.md file' and links selectedScreenInstance to UploadDesignMd RPC, but this repeats schema information. With high coverage, the baseline is 3, and the description adds marginal meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Creates a design system for a project, with user uploaded DESIGN.md file, and displays the design system in the UI.' This specific verb+resource combination ('creates a design system') and the qualifier 'from DESIGN.md' distinguishes it from siblings like create_design_system. The instruction to call upload_design_md first further clarifies the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call upload_design_md first, providing clear sequential context. However, it does not mention alternatives or when not to use this tool, so it lacks explicit exclusions. This fits 'clear context, no exclusions' at level 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectADestructive
Creates a new Stitch project. A project is a container for UI designs and frontend code.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional. The title of the project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Identifier. The resource name of the project. Format: projects/{project} |
| title | No | Optional. The title of the project. |
| origin | No | Output only. The origin of the project. |
| metadata | No | Metadata of the project. |
| readTime | No | Output only. The time the project was last read. Populated only when listing recently viewed projects. |
| createTime | No | Output only. The time when the project was created. |
| deviceType | No | Optional. The device type of the project. |
| updateTime | No | Output only. The time when the project was last updated. |
| visibility | No | Optional. The visibility setting of the project. |
| designTheme | No | Output only. The theme used to generate the first design in the project. |
| projectType | No | Optional. The type of the project. If not specified, the project is a text to UI project. |
| backgroundTheme | No | Optional. The background theme of the project. |
| screenInstances | No | Output only. The screen instances on this project. |
| thumbnailScreenshot | No | Optional. The screenshot to be used as the thumbnail for the project. Same as normal design screenshots, this contains the FIFE serving_base_url which requires additional FIFE URL options to be set for sizing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=true) already indicate this is a mutating operation, and the description aligns with that by saying 'Creates'. It adds minimal behavioral context beyond the annotations, only clarifying the conceptual nature of a project. No additional details about permissions, side effects, or edge cases are provided, but the simple create operation is reasonably transparent given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core action, and the second defines the domain concept. Both sentences earn their place and no redundant information is included. It is front-loaded with the action verb, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with one optional parameter, an output schema, and annotations, the description provides sufficient context. It explains what a project is, which helps the agent understand the effect of the operation. However, it omits any mention of what happens upon creation (e.g., whether the project is immediately available) or any prerequisites, though these may be covered by the output schema. Given the low complexity, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage: the single optional parameter 'title' has a clear description ('Optional. The title of the project.'). The tool description does not add any parameter-specific meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Creates') and the resource ('a new Stitch project'), while also defining what a project is (a container for UI designs and frontend code). This distinguishes it from sibling tools like create_design_system and delete_project. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool relative to alternatives. It implies the agent should use it to create a project, but there is no guidance on when not to use it or how it differs from create_design_system. The definition of a project provides some context, but no actionable usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectADestructive
Deletes a specific Stitch project using its project name.
Instructions for Tool Call:
This action cannot be undone. Please confirm with "yes" or "no" to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required. Identifier. The resource name of the project to delete. Format: `projects/{project}` Example: `projects/4044680601076201931` |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, and the description adds critical context: 'This action cannot be undone' and requires confirmation before proceeding. This goes beyond the binary destructive flag, clarifying the irreversibility and the need for explicit consent, which is valuable for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose, followed by a clearly separated instruction block. Every word earns its place; there is no filler or repetition. The structure is clean and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter delete operation, the description covers the essential action and irreversibility, and the output schema supplies return-value details. It could mention side effects on associated resources, but given the low complexity and strong annotations/schema, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the only parameter, including format and example. The description itself adds no additional parameter semantics, so the baseline of 3 applies per calibration. The slight mismatch between 'project name' and 'resource name' is a minor redundancy but does not reduce reliability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deletes') and the target resource ('a specific Stitch project'), distinguishing it from siblings like get_project or create_project. The use of 'using its project name' aligns with the required parameter, though the schema more precisely calls it a resource name; this is a minor terminology nuance that does not obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives (e.g., update_project, list_projects), nor does it mention prerequisites or scenarios where deletion should be avoided. The confirmation instruction is a procedural call-time guideline, not usage-context guidance, so it does not address this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_diffA
Compares two screens by name and returns a structured diff showing added elements, removed elements, style changes, and text changes. Useful for tracking design iterations.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID. | |
| screenId1 | Yes | First screen ID (before). | |
| screenId2 | Yes | Second screen ID (after). | |
| includeTextDiff | No | Include text content diffs. | |
| includeStyleDiff | No | Include detailed style property diffs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states what the tool returns (a structured diff with added, removed, style, and text changes), which is useful, but it does not clarify whether the operation is read-only, how the diff is structured, or any limitations. The mention of 'by name' is also potentially misleading given the schema uses IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action is stated first, and the use case is added in a single brief second sentence. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main output categories and use case, but without an output schema it does not fully specify the shape or structure of the diff. It also leaves ambiguity about the 'by name' phrasing versus the ID-based parameters, and does not address how this tool differs from the similar compare_designs sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description's mention of style and text changes maps to the includeStyleDiff and includeTextDiff parameters, but it does not add meaningful detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: comparing two screens and producing a structured diff with added/removed elements, style changes, and text changes. However, it does not differentiate this tool from the sibling tool compare_designs, and the phrase 'by name' conflicts with the actual parameters, which use screen IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear intended context: 'Useful for tracking design iterations.' It does not explicitly state when to use this tool versus compare_designs or other siblings, nor does it mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_screensC
Edits one or more existing screens based on text instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Edit instructions. | |
| projectId | Yes | The Stitch project ID. | |
| screenIds | Yes | Screen IDs to edit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a mutation operation ('Edits') but does not disclose side effects, reversibility, permission requirements, or what happens to existing screen content. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short, front-loaded sentence with no wasted words. It is concise, though it omits behavioral and usage details that would make it more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool with no output schema, the description and schema are sufficient to construct a basic call. However, the lack of behavioral transparency and usage guidance leaves clear gaps for a mutation tool that edits existing content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the three parameters and their basic meanings. The description adds no meaningful parameter-level semantics beyond restating that editing is text-instruction-driven, which aligns with the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Edits'), a clear resource ('existing screens'), and the input mode ('based on text instructions'). It differentiates from siblings like generate_screen_from_text by targeting existing screens, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives, prerequisites, or exclusions; the 'existing screens' wording only weakly implies when this tool should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_all_screensA
Exports all screens from a Stitch project. Fetches each screen's HTML code and screenshot, returning a complete project export as structured data. Useful for backing up or migrating designs.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID. | |
| maxScreens | No | Maximum number of screens to export (0 = all). | |
| includeHtml | No | Include HTML code for each screen. | |
| includeScreenshots | No | Include base64 screenshots for each screen. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the tool fetches each screen's HTML code and screenshot and returns structured data, which is useful, but it does not mention potential performance/cost implications of exporting all screens, output size, or that maxScreens=0 exports everything. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences contain no filler. The core action is stated first, followed by the output behavior and concrete use cases. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with full parameter documentation, the description supplies the key missing context: it returns both HTML and screenshots as structured data and is intended for backup/migration. There is no output schema, but the description gives enough shape to set expectations. It could mention the 'all screens' scalability caveat, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents projectId, maxScreens, includeHtml, and includeScreenshots clearly. The description adds no parameter-specific detail beyond the general idea of exporting all screens, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Exports all screens from a Stitch project.' It clearly distinguishes this bulk-export tool from sibling tools like list_screens, get_screen, get_screen_code, or get_screen_image by covering all screens with HTML and screenshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: 'Useful for backing up or migrating designs.' It does not explicitly name alternatives or when not to use it, but the use cases are strong enough to guide an agent to select this tool for full-project export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_design_systemB
Exports a complete design system package from project screens including tokens, components, documentation, and assets. Ready for developer handoff.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The project ID. | |
| screenIds | No | Screen IDs to include (leave empty for all). | |
| tokenFormat | No | Token format. | css-variables |
| includeTokens | No | Include design tokens. | |
| componentFormat | No | Component format. | react |
| includeComponents | No | Include component definitions. | |
| includeDocumentation | No | Include usage documentation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It does not state what the operation returns (ZIP file, JSON bundle, path?), whether it is read-only, whether it triggers generation, or how long/complex the export can be. 'Exports' implies generation, but the exact observable behavior is undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and object, and the second sentence adds a concrete purpose. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with seven parameters, no annotations, and no output schema, the description is minimally viable: it names the artifact and contents. However, it omits return format, output destination, and any performance or limitation caveats, which the agent would need for a confident call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without parameter details in the description. The description does add useful conceptual grouping by naming tokens, components, documentation, and assets, which maps to includeTokens, includeComponents, and includeDocumentation. Still, it does not explain enums or defaults beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action — 'Exports a complete design system package from project screens' — and names the composed contents (tokens, components, documentation, assets). It does not explicitly differentiate from direct siblings like export_all_screens or generate_style_guide, but the package-level framing suggests a distinct deliverable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Ready for developer handoff' implies a meaningful use case, so this is not without guidance. However, it provides no explicit when-to-use versus alternatives, no prerequisites (e.g., that project screens exist), and no mention of when a lighter-weight sibling such as export_all_screens might be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_componentsB
Extracts reusable UI component patterns (buttons, cards, forms, inputs) from a screen with their styles and variants.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID. | |
| projectId | Yes | The project ID. | |
| outputFormat | No | Output format. | json |
| componentTypes | No | Types of components to extract. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only extraction operation, but it never explicitly states that the screen is not modified, whether permissions are needed, what the output shape is, or what 'variants' means in terms of side effects or generated artifacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no repetition, filler, or low-value detail. The core action, resource, and output emphasis are front-loaded and fit the tool's scope well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters, all covered by the schema, the description is minimally enough for an agent to attempt a basic call. However, the absence of output-shape context, safety/behavioral details, and usage routing becomes noticeable given there are no annotations and many closely related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a useful conceptual frame around the componentTypes enum by listing buttons, cards, forms, and inputs, and it hints at output content with 'styles and variants,' but it does not materially clarify the parameters or their relationships beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool extracts reusable UI component patterns from a screen and includes styles and variants as part of the output. The parenthetical examples help identify the domain, but the description does not explicitly contrast itself with sibling tools such as extract_design_context or generate_variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool instead of one of its many siblings, such as extract_design_context, generate_variants, screen_to_react, or get_screen_code. It gives no 'use this when...' statement, no prerequisites, and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_design_contextA
Extracts design DNA from an existing screen — colors, typography, spacing, layout patterns, and component styles. Use this to maintain visual consistency across multiple screens.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID to extract from. | |
| projectId | Yes | The project ID. | |
| includeColors | No | Include color palette extraction. | |
| includeSpacing | No | Include spacing/layout analysis. | |
| includeComponents | No | Include component-level analysis. | |
| includeTypography | No | Include typography analysis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It clarifies the scope of extraction and the intended downstream purpose, but it never explicitly states whether the operation is read-only, whether it modifies the screen, or what the output shape is. 'Extracts' suggests a read operation, but that is implicit rather than disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The first sentence front-loads the verb, resource, and a concrete list of extracted elements; the second gives the practical purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-style extraction tool with two required IDs and four optional boolean toggles, the description plus 100% schema coverage is nearly sufficient. The main gap is the absence of any statement about return format or side effects, which would matter more given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds a high-level mapping to the extraction dimensions, but does not provide additional parameter-level detail beyond what the schema already states, which matches the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Extracts') and a clear resource ('design DNA from an existing screen'), then enumerates concrete dimensions such as colors, typography, spacing, layout patterns, and component styles. It is unambiguous on its own, though it does not explicitly differentiate itself from closely related siblings like extract_components or generate_design_tokens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit use case: 'Use this to maintain visual consistency across multiple screens.' This is clear context for when an agent should select the tool, though it does not mention exclusions or directly compare against alternatives such as apply_design_context or generate_design_tokens.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_component_variantsA
Analyses a screen to identify a target component (button, card, hero, form, navigation) and generates multiple visual variants of it as separate screens. Useful for A/B testing or building component libraries.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The source screen ID containing the component. | |
| projectId | Yes | The Stitch project ID. | |
| deviceType | No | Target device type. | DESKTOP |
| variantCount | No | Number of variants to generate (1-5). | |
| componentType | Yes | The type of component to generate variants for. | |
| variantStyles | No | Specific visual styles for the variants. If omitted, a diverse mix is used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the only source of behavioral information. It transparently states that the tool analyzes an existing screen and generates new separate screens, but it does not disclose whether the original screen is modified, whether the variants are persisted or merely returned, or any side effects beyond generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core action and output, then adds legitimate usage context. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with six parameters, no output schema, and no annotations. The description covers purpose and use cases, but it omits important invocation context such as whether generated variants are saved to the project, whether the source screen is left untouched, and what the tool returns. The schema covers parameter details, but behavioral/return expectations are incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The description adds only a general sense of visual variants and a partial list of component types, which provides minimal additional semantic value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Analyses', 'generates'), identifies the resource (a screen and a target component), and states the output (multiple visual variants as separate screens). It is clear, though it does not explicitly differentiate itself from sibling tools like generate_variants or generate_responsive_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states use cases: 'Useful for A/B testing or building component libraries.' This gives clear context for when to invoke the tool, though it does not provide exclusions or mention alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dark_modeA
Takes a light-mode screen and generates a dark-mode variant. Analyses the existing color palette and instructs Stitch to regenerate with inverted brightness, adjusted contrast, and preserved brand accents.
| Name | Required | Description | Default |
|---|---|---|---|
| contrast | No | Contrast level for the dark variant. | normal |
| screenId | Yes | The source (light-mode) screen ID. | |
| projectId | Yes | The Stitch project ID. | |
| deviceType | No | Target device type. | MOBILE |
| preserveAccents | No | Keep accent/brand colors unchanged (only invert backgrounds and text). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the behavior: analyzes the color palette, instructs Stitch to regenerate with inverted brightness, adjusted contrast, and preserved brand accents. This gives insight into the transformation logic. However, it doesn't disclose side effects (e.g., whether it modifies the original screen or creates a new one), output format, or failure modes. The description adds some behavioral context but not comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose. The second sentence adds useful behavioral detail about the transformation logic. It's concise and every sentence earns its place, though the second sentence could be slightly more specific about the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description covers the core purpose and transformation logic but doesn't explain what the output looks like (e.g., whether it returns a new screen ID, modifies in place, or returns an image). It also doesn't clarify the relationship between deviceType and the generated variant. The description is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds context about the overall behavior (inverted brightness, adjusted contrast, preserved brand accents) which maps to the preserveAccents parameter, but it doesn't add specific parameter-level meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it takes a light-mode screen and generates a dark-mode variant. It specifies the resource (screen) and the action (generate dark-mode variant), and it distinguishes itself from siblings like generate_responsive_variant and generate_variants by focusing on dark mode from a light-mode source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you have a light-mode screen and want a dark-mode variant. It doesn't explicitly state when not to use it or name alternatives, but the context is clear enough for an agent to select it over siblings like generate_responsive_variant. A clear exclusion or alternative mention would push it to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_design_tokensC
Generates design tokens (CSS variables, Tailwind config, SCSS, or JSON) from a screen's design.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. | css-variables |
| screenId | Yes | The screen ID. | |
| projectId | Yes | The project ID. | |
| includeSemanticNames | No | Use semantic names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the tool generates tokens, but it does not disclose whether the operation writes files, returns a string, modifies project state, or requires any existing design context. This is a significant gap for a generation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes meaning: action, output formats, and source are all conveyed clearly and efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotationsa and no output schema, the tool relies entirely on the description for behavioral context. The description omits return format/delivery mechanism, side effects, and selection guidance among many similar sibling tools. Although the schema fully documents parameters, the surrounding context is insufficiently covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented. The description adds a little context by naming the formats and the source ('screen's design'), but it does not elaborate on includeSemanticNames, format-specific behavior, or the relationship between projectId and screenId. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Generates design tokens'), the resource ('from a screen's design'), and the output formats (CSS variables, Tailwind config, SCSS, or JSON). It is specific and informative, though it does not explicitly distinguish itself from siblings like screen_to_css_variables or screen_to_tailwind_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as screen_to_css_variables, screen_to_tailwind_config, or export_design_system. The description implies usage when tokens are needed from a screen, but it provides no exclusions, prerequisites, or comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_from_templateC
Generates a screen from a predefined UI template with user customizations. Provides 10 common templates (dashboard, settings, login, profile, pricing, landing-hero, data-table, kanban-board, chat-interface, file-manager) as a base prompt, layered with custom instructions for faster UI generation.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Overall visual style. | modern |
| template | Yes | The base template to use. | |
| projectId | Yes | The project ID. | |
| deviceType | No | Target device type. | DESKTOP |
| customization | No | Custom instructions to layer on top of the template (e.g., 'use dark theme with purple accents, add a sidebar with user avatar'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It explains that templates are a base prompt layered with custom instructions, which is useful, but does not disclose side effects, permissions, or limitations of the generated screen.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. The purpose is stated first, and the template list is useful. Well-structured for quick consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and 3 enums, the description is reasonably complete but lacks usage guidance and behavioral context. It explains the core concept well, but an agent would need to infer when to use it versus alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context by listing the 10 templates and explaining the customization param, but does not significantly extend beyond the schema's own property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Generates a screen from a predefined UI template with user customizations,' giving a specific verb and resource. It distinguishes from text-based generation by explicitly mentioning templates, but does not name alternatives like generate_screen_from_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings such as generate_screen_from_text or batch_generate_screens. It implies usage for faster generation but does not state conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_responsive_variantB
Creates a responsive variant of an existing screen for a different device type while maintaining the same design language.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The source screen ID. | |
| projectId | Yes | The project ID. | |
| targetDevice | Yes | Target device type. | |
| adaptationStrategy | No | Adaptation approach: reflow (same content, different layout), reorganize (restructure for device), simplify (remove non-essential elements). | reflow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to fall back on, the description carries the entire disclosure burden. It says the tool 'creates' a variant, which implies non-destructive creation, but it does not state whether the source is preserved, whether design assets are regenerated, what outputs are returned, or any constraints on how the design language is maintained. A simple mutation/creation operation needs more behavioral detail when annotations disclose none.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and main outcome, with no filler. Every word contributes to describing the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents inputs, which helps a lot, and the description covers the core purpose. But there is no output schema, no annotations, and no clear differentiation from the overlapping sibling generate_variants. An agent would still have to guess at the practical result of invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter, including targetDevice and adaptationStrategy, is thoroughly described with enums and defaults. The description itself adds no parameter-level meaning, so the baseline of 3 is appropriate; the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Creates a responsive variant of an existing screen for a different device type') and adds a distinguishing design-language constraint. It is not as explicit as naming alternatives like generate_variants, but the purpose is clearly separable from text-based generation and dark-mode tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need a device-specific variant of an existing screen. However, it gives no explicit guidance on when not to use it, prerequisites, or how it differs from plausible siblings such as generate_variants and generate_component_variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_screen_from_textC
Generates a new screen from a text prompt describing the desired UI.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Text description of the screen to generate. | |
| projectId | Yes | The Stitch project ID. | |
| deviceType | No | Target device type. | MOBILE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states the basic outcome of generating a new screen. It does not reveal whether the screen is persisted, whether it replaces an existing screen, whether it is asynchronous, or what side effects occur in the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words, putting the verb and outcome first. It is appropriately concise, though slightly under-specified for the number of sibling tools and lack of annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool with no annotations and no output schema, the description is too thin to fully guide an agent. It omits behavioral context, expected output, and any caveats about the generation process, leaving the agent to infer important details from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description adds minimal value by clarifying the prompt is a 'text description of the desired UI,' but it does not explain deviceType or projectId beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Generates') and resource ('a new screen') with a specific method ('from a text prompt'). It is understandable and distinguishable from list/get/edit screens, though it does not explicitly contrast with sibling generation tools like batch_generate_screens or generate_from_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus the many related siblings such as generate_from_template, batch_generate_screens, or edit_screens. There are no exclusions, prerequisites, or alternative conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_style_guideB
Generates a comprehensive style guide / design documentation screen from an existing design. Creates a visual reference of colors, typography, components, and usage guidelines.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. | visual |
| screenId | Yes | The source screen ID. | |
| sections | No | Sections to include. | |
| projectId | Yes | The project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects and limitations. It only says it 'generates' and 'creates' a visual reference, which implies a non-destructive read-like operation, but does not state whether it modifies the source design, requires specific permissions, or returns any artifact. The lack of an output schema compounds this gap. It offers minimal behavioral context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by a compact enumeration of content categories. No filler or redundancy. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool that presumably produces a sizable artifact, the description is thin. It does not explain the output format (though 'format' parameter exists), what the generated style guide includes beyond the generic list, or any constraints on the input design. With no output schema and no annotations, an agent lacks critical details to know what the tool will return or how to interpret success. This is incomplete for the tool's apparent complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds only a conceptual summary (colors, typography, etc.) that roughly maps to the 'sections' parameter but doesn't explain parameter interplay or defaults beyond what the schema states. It slightly misleads by implying 'usage guidelines' is a default when the default sections are actually colors, typography, spacing, and components. This is a net-zero addition over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('generates') and resource ('style guide / design documentation screen'), and enumerates content categories (colors, typography, components, usage guidelines). This is unambiguous, though it does not explicitly differentiate from closely related siblings like generate_design_tokens or export_design_system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when a design already exists and a visual reference is needed. However, it gives no explicit when-to-use guidance versus alternatives, no prerequisites (e.g., that the design must be in a certain state), and does not mention exclusions. The context signal of 'from an existing design' implicitly scopes it but leaves selection reasoning to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_variantsC
Generates design variants of an existing screen.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of variants to generate. | |
| screenId | Yes | The source screen ID. | |
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a generation operation but does not state whether the source screen is modified, how many outputs are created, what the return value looks like, or whether there are side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler, and the verb is front-loaded. It is efficient, though the brevity leaves gaps that are better handled in usage guidelines and behavioral transparency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and many generation-related siblings, this description is too sparse. It does not explain how count is used, what 'design variants' means concretely, or how this tool differs from related generation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented and the description does not need to repeat them. The phrase 'existing screen' aligns with screenId, but the description adds no extra semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generates') and resource ('design variants of an existing screen'), making the core operation clear. However, it does not differentiate from sibling tools like generate_component_variants or generate_responsive_variant, so the distinction is left to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as batch_generate_screens, generate_from_template, or generate_component_variants. The phrase 'existing screen' implies a prerequisite, but there are no explicit conditions, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectB
Gets details of a specific Stitch project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only restates what the name already implies. It does not describe the return format, error behavior for missing or invalid IDs, or any read-only guarantee beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is eight words with no filler and is appropriately front-loaded. Every word earns its place for a simple getter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple one-parameter fetch, but with no output schema the agent is not told what 'details' actually includes. Given the large sibling list, the lack of any usage context is a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter has its own description, so the baseline is 3. The tool description adds no parameter-level meaning, but the schema already documents projectId adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Gets'), resource ('project'), and singular scope ('a specific Stitch project'), which clearly separates it from list_projects. However, it does not distinguish it from siblings like get_workspace_project or project_summary, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as get_workspace_project or project_summary. The word 'specific' implies by-ID access, but no exclusions or alternative-selection conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screenA
Gets details of a specific screen including download URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID. | |
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It signals a read operation ('Gets') and notes that the result includes download URLs, hinting at the return payload. It does not mention authentication, URL expiration, or caching, but no mutation or side effect needs to be warned about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single crisp sentence, front-loaded with the action and target. Every word earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read operation with no output schema, the description conveys the key return content ('download URLs') and sufficient context to invoke correctly. A note on the exact response shape would improve it, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – both projectId and screenId are already documented in the input schema. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Gets'), a precise resource ('a specific screen'), and a distinctive output element ('download URLs'). This clearly separates it from siblings such as list_screens, get_screen_code, and get_screen_image without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided. The description does not contrast with get_screen_code or get_screen_image, and there are no conditions or exclusions stated. Usage is only implied by the generic verb 'Gets'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screen_codeA
Retrieves the HTML code content of a screen. Returns the raw HTML that can be used for code generation or analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID. | |
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the return type (raw HTML) and implies read-only behavior via 'Retrieves'. With no annotations, this is adequate but minimal – it doesn't disclose potential limitations like whether the HTML is full document or fragment, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action and return value are front-loaded, making it immediately scannable and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool, the description covers purpose, resource, and return value. It lacks usage guidance and edge-case behavior, but the schema fully documents parameters and the tool's simplicity reduces the need for extensive context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema carries the parameter meaning. The description adds no additional context about parameter semantics beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Retrieves') and resource ('HTML code content of a screen'), and clarifies the output is 'raw HTML'. This distinguishes it from sibling tools like get_screen_image or screen_to_react without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The phrase 'for code generation or analysis' hints at context but doesn't compare against siblings like screen_to_react or get_screen, nor states when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screen_imageA
Retrieves the screenshot/preview image of a screen as base64-encoded PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID. | |
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does state the output encoding (base64 PNG) and implies a read-only retrieval, but it does not mention permissions, error behavior, or whether the image is a cached preview versus a live screenshot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that states the core action and output format with no filler or redundancy. It is appropriately front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool, the description is nearly complete: the schema documents parameters, and the description covers the return format since there is no output schema. It lacks only some guidance around when to prefer this over sibling tools, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented. The description adds no extra meaning about how projectId and screenId relate or are used beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (retrieves), a specific resource (screenshot/preview image of a screen), and the output form (base64-encoded PNG). This clearly distinguishes it from sibling tools like get_screen or get_screen_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (when the screen image is needed), but it gives no explicit guidance about alternatives or when not to use it. Compared to siblings such as get_screen or get_screen_code, there is no direct comparison or selection hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_projectA
Checks if there is an existing Stitch project associated with the current workspace/folder. Returns project info if found, or null if no project is set. Use this at the start of a session to check for existing projects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return behavior (project info or null) and implies a read-only check, but does not explicitly state side effects (or lack thereof) or error conditions. It's transparent about the main outcome but lacks explicit non-mutating confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first defines the action and return value, the second provides usage guidance. It is front-loaded, concise, and every word earns its place. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters, no output schema, and a clear return behavior, the description is complete. It covers what it does, what it returns, and when to use it. There are no missing pieces that would prevent an agent from calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is empty. With no parameters, there is nothing for the description to add beyond what's already obvious. The baseline for 0-param tools is 4, and the description doesn't need to explain missing parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'checks' and resource 'existing Stitch project associated with the current workspace/folder', and clarifies the return value (project info or null). It clearly differentiates from siblings like get_project (which likely requires an ID) and list_projects (which lists all) by focusing on the workspace-level association.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this at the start of a session to check for existing projects', giving a clear when-to-use context. However, it does not mention alternatives or when not to use it (e.g., when you need a specific project by ID vs. the current one). It's good but not fully explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_systemsARead-only
Lists all design systems for a given project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional. The project ID to list design systems for, example: '4044680601076201931', without the `projects/` prefix. If empty, lists all global design systems. |
Output Schema
| Name | Required | Description |
|---|---|---|
| designSystems | No | The design systems for the given project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent. The description adds the project scope but does not disclose additional behavior such as falling back to global design systems when projectId is empty; this is covered in the parameter schema instead of the tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and contains no redundant or unnecessary information. It is appropriately concise for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, output schema present, readOnly annotation), the description sufficiently captures the core purpose. Additional details like return format are covered by the output schema, and parameter behavior by the schema, so the description is complete for its context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description fully covers the single parameter projectId, including its optionality and behavior when empty. The tool description does not add extra parameter information, so the schema coverage baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lists' and the resource 'design systems' with a scope ('for a given project'), making it clear what the tool does. It differentiates from sibling list tools like list_projects and list_screens by naming the exact resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing design systems for a project, but it does not explicitly state when to use this over alternatives or provide exclusions. No sibling tool comparisons are made, so guidance is only implied from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
Lists all Stitch projects accessible to the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. 'Lists' implies a read-only operation and 'accessible to the authenticated user' clarifies the authorization scope, but it does not mention pagination, ordering, or response format. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-constructed sentence that states the action and scope with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, zero-parameter list tool, the description is essentially complete: it identifies the resource, scope, and auth context. It could add output-shape or pagination details, but these are not necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to document. The schema coverage is 100% and the description needs no parameter detail; baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lists' and names the resource ('all Stitch projects'), adding the scope 'accessible to the authenticated user.' This clearly differentiates it from sibling tools like get_project, create_project, and delete_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Lists all Stitch projects' gives a clear context for when to call it: when the agent needs an enumeration of projects available to the user. It does not explicitly name alternatives or exclusions, but the usage context is clear for a zero-parameter list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screensB
Lists all screens in a Stitch project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The Stitch project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Lists all screens' clearly signals a read-only enumeration, but it does not mention return format, pagination, ordering, or any access prerequisites. This is adequate for a simple list tool but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler or repetition. It front-loads the action and resource and earns every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, low-complexity tool, the description covers the core behavior. However, there is no output schema and no annotation context, so an agent cannot tell what fields a listed screen contains or whether the result is paginated. This is a real but modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single projectId parameter is already described as 'The Stitch project ID.' The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Lists') and resource ('all screens in a Stitch project'), which is clear and distinct from list_projects and get_screen. It doesn't explicitly call out sibling differentiation, but the plural 'screens' versus 'screen' makes the scope reasonably apparent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of get_screen, list_projects, or edit_screens. The description only states what it does, leaving the agent to infer appropriate use from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsA
Lists all available tools with their descriptions and input schemas.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly states the output includes descriptions and input schemas, which is useful. However, it does not mention whether the list is sorted, whether it includes only currently available tools, or any performance implications, though these are minor for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource, then specifies the included content. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool, the description is nearly complete. It tells the agent what the tool does and what the output contains. It does not describe the exact return format (e.g., array vs. object), but no output schema is provided, so a bit more detail could help. Still, the core information needed to invoke the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description correctly implies no inputs are needed. A baseline of 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Lists') and resource ('all available tools') and explicitly mentions what is included ('descriptions and input schemas'). It is unambiguous and clearly distinct from sibling tools like list_projects or list_screens, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for discovering available tools and their schemas, which is a clear context for use. It does not explicitly state when not to use it or name alternatives, but given the tool's self-referential nature, the usage context is evident and no exclusions are necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_summaryA
Returns a high-level summary of a Stitch project: screen count, list of screens with names, detected common patterns, design consistency score (based on color/font overlap across screens), and device type distribution.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The Stitch project ID. | |
| analyzeConsistency | No | Fetch HTML from up to 5 screens to compute a design consistency score. | |
| maxScreensToAnalyze | No | Maximum screens to fetch for consistency analysis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description introduces some behavioral detail: it explains the design consistency score is 'based on color/font overlap across screens,' implying the analysis also crosses screens. But it does not mention side effects, error behavior, or the fact that it may fetch remote HTML (though that is in the schema). The transparency is adequate but not heavy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence with the main outcome front-loaded ('Returns a high-level summary') followed by a comma-separated enumeration of what that summary covers. There is no filler, repetition, or tangential detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that only fetches summary data and has no output schema, the description is quite complete: it lists what the agent can expect to receive. It does not specify error cases or ordering of the screen list, but those are not critical for correct invocation. The missing output-schema risk is largely mitigated by the explicit return-field enumeration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters with descriptions, so the baseline is 3. The prose goes beyond the schema by linking analyzeConsistency and maxScreensToAnalyze to the definition of design consistency (color/font overlap), effectively explaining why those parameters matter. It adds context that helps an agent set them appropriately, earning one point above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a concrete verb ('Returns') and a specific resource ('a high-level summary of a Stitch project'), then enumerates the summary's contents (screen count, screen names, common patterns, design consistency score, device type distribution). This clearly distinguishes the tool from siblings like get_project, which likely returns detailed project info, or list_screens, which lists screens only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear the tool is for high-level summaries, so an agent can infer when to use it. However, it does not explicitly state when to choose it over comparable tools (e.g., get_project, list_screens) nor mention any exclusions, prereqissism, or alternative-recommended conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_to_css_variablesA
Extracts CSS custom properties (variables) from a screen's design. Produces a complete :root block with semantic naming for colors, typography, spacing, shadows, and border radii. Supports optional dark-mode variable overrides.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID to extract from. | |
| namespace | No | Optional namespace prefix for variable names (e.g. 'app' produces --app-color-primary). | |
| projectId | Yes | The Stitch project ID. | |
| includeDarkMode | No | Generate a prefers-color-scheme:dark override block with inverted/adjusted values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the output structure (a :root block) and the optional dark-mode override, but it does not state whether the operation is read-only, whether it modifies any project state, or what happens if the screen does not exist or lacks design data. The disclosed behavior is accurate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: it states the action, the output format, and the optional dark-mode capability. No filler or redundancy, and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description's mention of 'a complete :root block' partially addresses return value. However, it lacks usage context relative to alternatives, any mention of prerequisites (e.g., screen must exist), and does not clarify whether the returned block is a string, file, or structured object. The complexity is moderate, so the gaps are noticeable but not severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds context about semantic naming and the categories of variables extracted, which helps understand the output, but it does not add meaning beyond the schema for the parameters themselves. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Extracts CSS custom properties (variables) from a screen's design.' It further specifies the output (a complete :root block with semantic naming for colors, typography, spacing, shadows, and border radii) and mentions optional dark-mode overrides. This clearly differentiates it from siblings like screen_to_react or screen_to_tailwind_config, which target different output formats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. Overlapping siblings like generate_design_tokens, extract_design_context, and screen_to_tailwind_config exist, but the description does not mention any exclusions or selection criteria. An agent would have to infer from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_to_plane_issueA
Creates a structured output from a Stitch screen suitable for creating a Plane (or similar PM tool) issue. Includes a title derived from the screen name, a description with the design preview as base64 image, an implementation checklist extracted from HTML components, and suggested labels. Bridges the Stitch-to-project-management workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | Suggested priority for the issue. | medium |
| screenId | Yes | The screen ID. | |
| projectId | Yes | The Stitch project ID. | |
| screenName | No | Human-readable screen name. Used for the issue title. If omitted, derived from screenId. | |
| workspaceSlug | No | Optional Plane workspace slug for reference in the output. | |
| planeProjectId | No | Optional Plane project ID for reference in the output. | |
| additionalContext | No | Additional context or requirements to include in the issue description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral transparency burden. It discloses the output structure and that it is 'structured output' rather than a direct Plane API call, but it does not explicitly state whether this tool has side effects, requires authentication, or only reads the screen.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and informative: purpose first, followed by core output constituents, then workflow context. The final sentence is slightly promotional but still clarifies the overall intent, so no sentence feels wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, it needs to describe its returns, and it does with title, base64 preview, checklist, and labels. The absence of a precise output contract and clarification about whether the issue is actually created kept it just short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 7 parameters with descriptions, so the parameter baseline is 3. The description adds that screenName becomes the issue title and that HTML components become the checklist, but it delegates most parameter meaning to the schema rather than adding additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Creates'), a specific resource ('Stitch screen'), and a specific deliverable ('structured output ... suitable for creating a Plane issue'). It also enumerates what the output contains—title, base64 image, checklist, labels—which clearly distinguishes it from sibling conversion tools like screen_to_react or get_screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended workflow explicit: converting a Stitch screen into a PM-tool-ready issue. However, it does not explicitly name alternatives to avoid, such as get_screen or screen_to_react, so an agent must infer the use case rather than receive an explicit routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_to_reactA
Converts a Stitch screen's HTML into a clean React/TSX function component with a typed props interface, Tailwind CSS classes extracted from inline styles where possible, and proper imports. Returns usable React code ready to drop into a project.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID to convert. | |
| projectId | Yes | The Stitch project ID. | |
| componentName | No | Name for the generated React component (PascalCase). Defaults to 'Screen'. | |
| includeResponsive | No | Include responsive Tailwind modifiers (sm:, md:, lg:). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It accurately describes the transformation (reads HTML, produces React code) but doesn't disclose whether it's read-only, side effects, limitations, or error behavior. The term 'Converts' implies non-destructive, but this isn't explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It front-loads the action and object, then specifies outputs and benefits without unnecessary fluff. Every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should clarify return value. It states 'Returns usable React code' but doesn't specify the format (e.g., string, file), error handling, or prerequisites like project/screen existence. Given the tool's simplicity, this is adequate but not comprehensive, especially without annotations to cover safety or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description doesn't add meaning to any parameter; it only describes output behavior (e.g., Tailwind extraction) rather than parameter details. It doesn't enhance understanding of projectId, screenId, componentName, or includeResponsive beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Converts' and the specific resource (Stitch screen's HTML) and output (clean React/TSX function component), with distinct details like 'typed props interface' and 'Tailwind CSS classes extracted from inline styles' that differentiate it from sibling tools like screen_to_tailwind_config or screen_to_css_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description mentions 'ready to drop into a project' but doesn't compare with other screen conversion tools or state conditions for selection. Siblings like screen_to_plane_issue or screen_to_tailwind_config exist, but no differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_to_tailwind_configA
Extracts a complete tailwind.config.ts from a screen's design. Analyses colors, fonts, spacing scale, border radii, shadows, and breakpoints to produce a ready-to-use Tailwind CSS configuration object.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Optional prefix for all generated utility classes (e.g. 'stitch'). | |
| screenId | Yes | The screen ID to extract from. | |
| projectId | Yes | The Stitch project ID. | |
| includePlugins | No | Include suggested Tailwind plugin recommendations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the transparency burden and does a solid job: 'Extracts' signals a non-mutating, read-only operation, and the enumeration of analyzed tokens plus the output artifact gives agents a concrete behavioral model. It doesn't mention potential side effects or failure conditions, but not much is hidden for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action and output and then adds a compact list of analyzed design tokens. Every clause earns its place with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys purpose, input, output, and the scope of analysis, which is decent given the simple parameter set. However, without an output schema it stops short of specifying the exact return format (e.g., JSON string vs. code block) or any constraints on the generated config, leaving a notable gap for an agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds no extra explanation of how 'prefix' alters generated classes or what 'includePlugins' recommends, so it does not push above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Extracts'), a specific resource ('a complete tailwind.config.ts'), and the source ('a screen's design'), then lists the analyzed design tokens. This clearly sets it apart from sibling tools like screen_to_css_variables or generate_design_tokens, which target different outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended scenario—deriving a Tailwind config from a screen—but does not explicitly state when to prefer it over similar token-generation tools such as export_design_system or generate_design_tokens. No exclusions or alternative guidance are provided, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workspace_projectA
Associates a Stitch project with the current workspace/folder. The project info is stored in .stitch-project.json in the current directory.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | The Stitch project ID (e.g., 'projects/1234567890'). | |
| projectName | No | Human-readable project name for display. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a key side effect: project info is stored in .stitch-project.json in the current directory. However, it does not mention whether an existing file is overwritten, whether the project must already exist, or any other effects on the workspace.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the operation and adds the storage detail in the second sentence, with every part contributing useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter setter with full schema coverage, the description plus schema provides enough information to invoke the tool correctly: what action to perform, where the data is stored, and the required projectId. The main omission is overwrite behavior, but it is not blocking for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both projectId and projectName already described in the input schema. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Associates', with a clear resource ('Stitch project') and target context ('current workspace/folder'). This clearly indicates a distinct operation from create_project or clear_workspace_project, though it does not explicitly name any sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: you want to associate an existing Stitch project with the current workspace/folder. However, it does not explicitly state when to use this tool versus clear_workspace_project or get_workspace_project, nor does it mention prerequisites like whether the project must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_trending_designB
Suggests and applies modern UI/UX design trends to a screen prompt. Includes glassmorphism, bento-grid, gradient meshes, micro-interactions, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Base screen description. | |
| trends | Yes | Design trends to apply. | |
| intensity | No | Trend intensity. | moderate |
| projectId | Yes | The project ID. | |
| deviceType | No | Target device. | MOBILE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'suggests and applies,' which is ambiguous about whether it modifies an existing screen, generates a new one, or has destructive side effects. It also does not mention any permissions, reversibility, or what happens to the projectId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the verb and resource, then adds concrete examples without any fluff. Every word earns its place, and it is neither over- nor under-specified for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a tool with no output schema and no annotations. It does not explain what 'applies' means, what the function returns, or how the tool interacts with the provided prompt and projectId. Given the large sibling set, this leaves a noticeable ambiguity that could lead to incorrect usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline for this dimension is 3. The description adds a small amount of value by naming example trends, but the schema already documents all parameters with descriptions, enums, and defaults. There is no additional parameter meaning provided in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'suggests and applies modern UI/UX design trends to a screen prompt.' It also lists concrete example trends (glassmorphism, bento-grid), which helps the agent form a mental model. However, it does not explicitly distinguish itself from closely related siblings like apply_design_context or generate_dark_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a screen prompt needs modern design trends applied, but it offers no explicit guidance on when to choose this over alternatives or when not to use it. There are many design-related sibling tools, and without exclusions or contexts, the agent may find it hard to disambiguate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_design_systemADestructive
Updates a design system for a project. Use this tool when the user wants to change the overall visual theme, style, or branding of the application. This includes configuring:
Color Palette: Presets, custom primary colors, and saturation levels.
Typography: Font families (e.g., Inter, Roboto, etc.).
Shape: Corner roundness for UI elements.
Appearance: Light and dark mode background colors.
Design MD: Free-form design instructions in markdown. This tool establishes the foundational design tokens that apply across all screens in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Required. Identifier. The resource name of the design system to update. Format: `assets/{asset_id}` Example: `assets/15996705518239280238` | |
| projectId | Yes | Required. The project ID to update design system for, example: '4044680601076201931', without the `projects/` prefix. | |
| designSystem | Yes | Required. The design system to update. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Identifier. The resource name of the asset. Format: assets/{asset} |
| version | No | Output only. The version of this asset. 0 indicates unversioned (legacy data). Incremented when the asset content changes. |
| copiedFrom | No | Optional. The resource name of the asset this was copied from, if any. Format: assets/{asset} Tracks the fork history of assets. |
| designSystem | No | Optional. The design system. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the destructive nature is known. The description adds that the tool 'establishes the foundational design tokens that apply across all screens in the project,' explaining the broad scope of the change. It does not detail overwrite semantics, but the annotation covers the destructive aspect, and the added context about cross-screen impact is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, a 'Use this tool when...' statement, and a concise bullet list of features. Every sentence adds useful context without fluff or redundancy, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested designSystem object) and the presence of an output schema, the description covers the core 'what', 'when', and 'scope' (applies across all screens). It includes the key configurable categories, and the schema fills in the detailed parameter definitions. The description is complete enough for an agent to decide when to invoke the tool and what to include.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds high-level conceptual categories (Color Palette, Typography, Shape, Appearance, Design MD) that help an agent map user intent to the relevant fields in the nested designSystem object, going beyond the raw schema by grouping related parameters into thematic areas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Updates a design system for a project' and specifies the exact use case: 'when the user wants to change the overall visual theme, style, or branding of the application.' It enumerates the configurable aspects (color, typography, shape, appearance, design MD), making the tool's purpose unambiguous and distinct from creation or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this tool when the user wants to change the overall visual theme, style, or branding,' which is clear when-to-use guidance. It does not explicitly mention when not to use or name alternative sibling tools like create_design_system, so it lacks explicit exclusions or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_design_mdADestructive
Uploads DESIGN.md to a Stitch project. Use this tool when the user wants to create a design system from a DESIGN.md file.
Instructions for Tool Call:
Call
create_design_system_from_design_mdtool immediately after this tool to create the design system from the uploaded DESIGN.md, and display the design system in the UI.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Required. The project ID to upload the DESIGN.md to, example: '4044680601076201931', without the `projects/` prefix. | |
| designMdBase64 | Yes | Required. The base64-encoded DESIGN.md content. The decoded content must be valid UTF-8; uploads with invalid UTF-8 bytes will be rejected. Run `base64 -w 0 ` to get the base64-encoded string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No | Optional. The x position of the screen. |
| y | No | Optional. The y position of the screen. |
| id | No | Optional. The screen instance id. |
| type | No | Optional. The type of screen instance. |
| label | No | Optional. The screen label. |
| width | No | Optional. The screen width. |
| height | No | Optional. The screen height. |
| hidden | No | Optional. User driven action hiding screen from the canvas. |
| groupId | No | Optional. Group identifier for Genie Agent output grouping. Screens with the same groupId are rendered and interact as a group. |
| groupName | No | Optional. Human-readable name for the group (e.g., "Warm Minimalism", "Ethereal Glow"). |
| isResized | No | Optional. Whether this screen has been resized by the user. |
| isFavourite | No | Optional. Whether this screen is marked as a favourite by the user. |
| needsLayout | No | Optional. Whether this screen instance needs frontend layout positioning. Set by the PostProcessor when auto-linking screens that the agent generated but the frontend has not yet positioned on the canvas. |
| sourceAsset | No | Optional. The resource name of the source asset. Format: assets/{asset} |
| textContent | No | Optional. Text content for TEXT_INSTANCE nodes. |
| sourceScreen | No | Optional. The resource name of the source screen. Format: projects/{project}/screens/{screen} |
| variantScreenInstance | No | Optional. The variant Screen Instance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/destructive nature is known. The description reinforces the upload action but does not disclose additional behavioral traits such as overwrite behavior, prerequisites, or side effects beyond the workflow instruction. Since annotations cover the core safety profile, the description adds only modest context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus one bullet point. It front-loads the core action, then provides usage context and a required follow-up instruction. Every sentence earns its place with no redundant or fluffy text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple upload tool with clear purpose, an output schema exists, and annotations cover the destructive hint. The description includes a critical workflow instruction (calling create_design_system_from_design_md immediately after), making the overall interaction complete for an agent. No return-value explanation is needed due to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters. The description adds a practical hint for the base64 parameter ('Run `base64 -w 0 `') and reminds about the projectId format ('without the `projects/` prefix'), which slightly elevates it above the schema-only baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Uploads DESIGN.md to a Stitch project.' It uses a specific verb and resource, and distinguishes from siblings by emphasizing the upload step, while explicitly naming the follow-up sibling tool create_design_system_from_design_md. No tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this tool when the user wants to create a design system from a DESIGN.md file.' It also provides a required sequencing instruction to call create_design_system_from_design_md immediately after, which is valuable. However, it does not mention when not to use the tool or name alternative tools, so it lacks full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_design_systemA
Validates whether a screen follows a given design token set. Checks colors, fonts, spacing, and border-radii against approved values and reports violations, compliance percentage, and suggestions for fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| screenId | Yes | The screen ID to validate. | |
| projectId | Yes | The Stitch project ID. | |
| strictMode | No | If true, any unapproved value is a violation. If false, only flag values that are far from approved ones. | |
| approvedFonts | No | List of approved font family names. | |
| approvedRadii | No | List of approved border-radius values. | |
| approvedColors | No | List of approved color values (hex, rgb, hsl). | |
| approvedSpacing | No | List of approved spacing values (e.g. '4px', '8px', '16px'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains what the tool checks and what it reports (violations, compliance percentage, suggestions), but it does not explicitly state side-effect behavior, such as whether the screen is modified, or any prerequisites like requiring a design system to exist in the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one focused sentence that leads with the action and purpose, then lists the checked categories and the outputs. Every phrase earns its place; there is no repetition of schema details or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with 7 parameters and no output schema, the description plus fully documented parameters provide enough for an agent to invoke it correctly. It describes the return-style outputs in prose, though it could be more complete by noting whether validation is read-only or what happens when optional approved arrays are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter baseline is 3. The description adds a high-level mapping between 'colors, fonts, spacing, and border-radii' and the approved-array parameters, but it does not add meaningful detail beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Validates'), a specific object ('a screen'), and the specific basis ('a given design token set'). It also enumerates the checked dimensions and report outputs, making the tool's purpose unambiguous and distinguishable from siblings like analyze_accessibility or apply_design_system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when checking a screen's compliance against approved design tokens—but it does not explicitly state when not to use it or mention alternative tools such as apply_design_system or analyze_accessibility. Usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
44 tool updates
v1.0.0- First observed
analyze_accessibility - First observed
apply_design_context - First observed
apply_design_system - First observed
batch_generate_screens - First observed
build_site - First observed
clear_workspace_project - First observed
compare_designs - First observed
create_design_system - First observed
create_design_system_from_design_md - First observed
create_project - First observed
delete_project - First observed
design_diff - First observed
edit_screens - First observed
export_all_screens - First observed
export_design_system - First observed
extract_components - First observed
extract_design_context - First observed
generate_component_variants - First observed
generate_dark_mode - First observed
generate_design_tokens - First observed
generate_from_template - First observed
generate_responsive_variant - First observed
generate_screen_from_text - First observed
generate_style_guide - First observed
generate_variants - First observed
get_project - First observed
get_screen - First observed
get_screen_code - First observed
get_screen_image - First observed
get_workspace_project - First observed
list_design_systems - First observed
list_projects - First observed
list_screens - First observed
list_tools - First observed
project_summary - First observed
screen_to_css_variables - First observed
screen_to_plane_issue - First observed
screen_to_react - First observed
screen_to_tailwind_config - First observed
set_workspace_project - First observed
suggest_trending_design - First observed
update_design_system - First observed
upload_design_md - First observed
validate_design_system
TDQS
Scored across 44 tools
Numerous tools overlap significantly: generate_screen_from_text, edit_screens, generate_variants, batch_generate_screens, generate_from_template, generate_responsive_variant, generate_dark_mode, generate_component_variants, apply_design_context, and suggest_trending_design all involve creating or modifying screens with subtle differences. Similarly, create_design_system and update_design_system are almost identical in description, and generate_design_tokens, screen_to_tailwind_config, screen_to_css_variables, export_design_system, validate_design_system overlap in token extraction. This makes it difficult for an agent to pick the right tool.
Most tools follow a clear verb_noun pattern (e.g., list_projects, create_project, generate_screen_from_text). There are a few deviations like design_diff, project_summary, and screen_to_react, but these are still understandable and don't break the overall pattern. The naming is mostly predictable and systematic.
With 44 tools, the server far exceeds the 25+ threshold that typically indicates an excessive count. Even for a complex design tool, this many tools creates cognitive load and makes discovery and selection harder. A leaner set with clearer boundaries would be more appropriate.
The tool surface covers a wide range of design workflows: project CRUD, screen listing/generation/editing, design system management, exports, conversions, and analysis. Minor gaps exist (e.g., no delete_screen, no direct screen rename), but for the core purpose of UI generation and design system management, the set is fairly comprehensive and rarely leaves dead ends.
Maintenance
Related MCP Connectors
327 dev tools via REST API and MCP. Generate Dockerfiles, schemas, K8s, APIs, and more.
The Figma MCP server brings Figma design context directly into your AI workflow.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn automated MCP server for Google Stitch that enables AI-driven UI design generation, screen management, and design system extraction. It provides 19 professional tools for creating consistent web interfaces, conducting accessibility audits, and exporting design tokens.-
- AlicenseNot gradedqualityFmaintenanceAn automated MCP server for Google Stitch that enables AI-driven UI design generation, accessibility audits, and design system management. It streamlines workflows for creating responsive screens, extracting design tokens, and maintaining visual consistency across professional web projects.58 npm31Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA universal MCP server for Google Stitch that enables AI-powered UI/UX design generation by extracting design context and metadata from existing screens. It allows users to fetch screen code and images to create consistent, styled UI components across multiple projects.391 npm123Apache 2.0
- FlicenseNot gradedqualityDmaintenanceAn MCP server that exposes Google Stitch's AI-powered UI design capabilities as local tools. It enables project management, screen generation/editing, and design system operations by forwarding requests to Google's Stitch API.2-