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.
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"
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, upload-attachment, 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
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. Returns { id, path, type, mimeType } — pass this object directly into the attachments array.
Two modes:
Mode 1 — Screen by ID
Pass screenId and fileId. The server fetches the screen state from the database and renders it as an image.
Mode 2 — External file
Pass file content directly. Binary files must be base64-encoded; text files (including source code) are passed as plain UTF-8 strings.
Max file size: 3 MB. For large images, prefer
image/jpeg over image/png.
Output
type is "image" for image/PDF uploads and "document" for text/code 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
"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.