Skip to main content
All tools return a content array of MCP content blocks. Text tools return { type: "text", text: "<json-string>" }. Image tools return { type: "image", data: "<base64>", mimeType: "image/png" }. On failure, isError: true is set and the text block contains the error message.

File tools

list-files

List Flowstep files for the current user. Input Output — JSON array of file objects.

get-file

Get a single file by ID. File content is intentionally omitted — use get-screen or get-screen-image to inspect screens, and get-design-guidelines to retrieve attached guidelines. Input Output — JSON file object.

create-file

Create a new Flowstep file. Input Output — JSON file object with the new file’s id.
Use the returned id as fileId in subsequent tool calls.

update-file

Rename a file. Input Output — Updated file object in the same shape as get-file.

delete-file

Permanently delete a file. The name you pass is verified against the file’s actual name before deletion — if it does not match, the deletion is aborted. This prevents accidentally deleting the wrong file. Input Output"File deleted successfully"
This is irreversible. All screens in the file are deleted.

Screen tools

list-screens

List all generated screens for a file. Use the returned screenId values to reference screens in get-screen, get-screen-image, and as targets in edit-design, regenerate-design, or expand-design. Input Output — JSON array of screen summaries.
name is the user-assigned screen name, or null if unnamed.

get-screen

Get the JSX code for a screen allowing you to edit or use the code outside of Flowstep. Use get-screen-image for a visual preview instead. Input Output — The screen as code (JSX). Note the first line comment which is required when using the add-screen tool.

add-screen

Adds a new screen to a Flowstep file from a raw JSX string. Input Note - A comment similar to the one below MUST be present as the first line of the JSX as it is used to add the screen correctly. screenType, name, and screenId are all optional — screenId is used (internally) if present (e.g. when passing JSX copied from get-screen output) but is not mandatory. The screen name is taken from the comment’s name field (displayed as “Copy of <name>”), or “Untitled” if absent. <!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" --> Output — The newly added screen Id.

get-screen-image

Render a screen to PNG and return it as an inline image. Requires a client that supports image content blocks. Input Output — MCP image content block (image/png).

AI tools

regenerate-design, expand-design, and edit-design require design context that is only present on screens originally generated with a designs array. Screens generated without design context will return an error.

create-new-design

Generate one or more screen designs from a text prompt. Omit fileId to create a new file automatically. Blocks until generation completes or times out (180 seconds). Input Output{ fileId, screenIds }. Pass each screenId to get-screen-image to view results.

regenerate-design

Redo existing screens from scratch or with a style variation. Requires at least one screenId in targets. Blocks until generation completes or times out (180 seconds). Input Output{ fileId, screenIds }. Pass each screenId to get-screen-image to view results.

expand-design

Add follow-on screens to an existing design. Requires at least one screenId in targets and a mandatory operationVariant. Blocks until generation completes or times out (180 seconds). Input Output{ fileId, screenIds }. Pass each screenId to get-screen-image to view results.

edit-design

Modify existing screens via a prompt. Requires at least one screenId in targets. Blocks until generation completes or times out (180 seconds). Input Output{ fileId, screenIds }. Pass each screenId to get-screen-image to view results.

upload-attachment

Upload a file to use as an attachment in create-new-design or edit-design (not regenerate-design or expand-design). File bytes never pass through the model, and the server never fetches URLs on your behalf. There are two modes — use exactly one, and don’t combine them. Mode A — files and images (mimeType + fileName) A required three-step flow for any image, PDF, or larger text file:
  1. Call upload-attachment with mimeType and fileName only (for example image/png and dog.png). The response is a prepared upload, not a stored file:
  2. Replace LOCAL_FILE_PATH in uploadCommand with the absolute path to your file and run that exact command in your shell — it must exit 0. The token in signedUrl authorizes only this single upload. Skipping this step leaves storage empty and the design tool fails its preflight check.
  3. Pass only { id, path, type } into the design tool’s attachments array — not signedUrl, uploadCommand, or nextStep.
To attach a remote file, download it to a local path yourself first (for example with curl), then follow the same three steps. Never pass a URL to upload-attachment. Mode B — short text (text + mimeType) Upload text that’s already in context — no shell command needed. The response is ready to use directly:
Pass the resulting { id, path, type } into the attachments array of create-new-design or edit-design. Maximum file size is 3 MB across both modes, and PDFs are capped at 100 pages. type is "image" for image files and "document" for PDFs and text files.

Chat tools

get-chat-history

Get the chat message history for a file. Input Output — JSON object with a messages array. Each message has a type ("request" or "response"), author ("human" or "ai"), and content_type ("text", "summary", or "followup").

Design tools

get-design-guidelines

Get the design guidelines stored for a file. Input Output
guidelines is null if no guidelines have been set.

update-design-guidelines

Set or replace the design guidelines for a file. Guidelines are passed as a plain text string in Google’s design.md format — do not pass an object or JSON. The server performs soft validation and may return a Warnings: section in the response listing issues (unknown keys, non-hex colours) that were accepted but may be ignored by the AI. Surface these to the user. Input Validation rules
  • Frontmatter must be opened and closed correctly
  • Frontmatter lines must be valid block-style YAML
  • Markdown body must not contain duplicate ## section headings
Output"Design guidelines updated successfully", optionally followed by a Warnings: section.

delete-design-guidelines

Clear the design guidelines for a file. Input Output"Design guidelines deleted successfully"

Figma tools

import-figma

Import a Figma frame into a Flowstep file as editable elements on its canvas. Re-importing the same frame updates it in place. The file’s organization must have Figma connected in Flowstep settings. Input Output{ fileId, screenId }. screenId is the id of the imported screen element — pass it to get-screen-image to view the result. When a page URL imports multiple frames, screenId is null and frameCount is returned instead.

Billing tools

get-plan-details

Get the current user’s plan, subscription status, and remaining quota. Takes no input. Output
Limits vary by plan. Call this tool before a batch of generations to check available quota.