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, 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

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. Workaround: use upload-attachment to render the screen as an image, then call create-new-design with the image in attachments and a message describing the desired changes.

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
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.