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
ParameterTypeDefaultDescription
orderByCreationbooleantrueOrder by creation date
limitinteger (1–100)20Number of files to return
offsetinteger (≥0)0Pagination offset
Output — JSON array of file objects.
[
  {
    "id": "5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0",
    "name": "Dashboard redesign",
    "created_at": "2026-04-30T15:02:13.120152+00:00",
    "updated_at": "2026-04-30T15:02:13.120152+00:00",
    "owner": true,
    "url": "https://app.flowstep.ai/file?activeFileId=5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0"
  }
]

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
ParameterTypeDescription
iduuidFile ID
Output — JSON file object.
{
  "file": {
    "id": "5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0",
    "name": "Dashboard redesign",
    "project_id": "81cb84d6-c69f-492c-a895-7421b60d1a6d",
    "created_at": "2026-04-30T15:02:13.120152+00:00",
    "updated_at": "2026-04-30T15:02:13.120152+00:00",
    "access_level": "private",
    "owner": true,
    "url": "https://app.flowstep.ai/file?activeFileId=5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0"
  },
  "user_access_level": "write"
}

create-file

Create a new Flowstep file. Input
ParameterTypeDescription
titlestring (min 1)File name
Output — JSON file object with the new file’s id.
{
  "id": "5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0",
  "name": "Dashboard redesign",
  "project_id": "81cb84d6-c69f-492c-a895-7421b60d1a6d",
  "created_at": "2026-04-30T15:02:13.120152+00:00",
  "updated_at": "2026-04-30T15:02:13.120152+00:00",
  "access_level": "private",
  "user_access_level": "write",
  "owner": true,
  "url": "https://app.flowstep.ai/file?activeFileId=5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0"
}
Use the returned id as fileId in subsequent tool calls.

update-file

Rename a file. Input
ParameterTypeDescription
iduuidFile ID
namestring (min 1)New name
Output — Updated file object in the same shape as get-file.
{
  "file": {
    "id": "5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0",
    "name": "Dashboard redesign (v2)",
    "project_id": "81cb84d6-c69f-492c-a895-7421b60d1a6d",
    "created_at": "2026-04-30T15:02:13.120152+00:00",
    "updated_at": "2026-04-30T15:02:13.120152+00:00",
    "access_level": "private",
    "owner": true,
    "url": "https://app.flowstep.ai/file?activeFileId=5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0"
  },
  "user_access_level": "write"
}

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
ParameterTypeDescription
iduuidFile ID
namestringCurrent name of the file — must match exactly or deletion is aborted
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
ParameterTypeDescription
fileIduuidFile ID
Output — JSON array of screen summaries.
[
  {
    "screenId": "3f9e6eb6-5525-4383-9375-67e0bd762dbe",
    "name": "Mobile login screen",
    "fidelity": "ui",
    "prompt": "Generate a simple mobile login screen with email and password fields and a sign in button",
    "createdAt": "2026-04-30T15:02:37.444139+00:00"
  }
]
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
ParameterTypeDescription
fileIduuidFile ID
screenIduuidThe screenId returned by list-screens or from the screenIds array returned by a design tool
Output — The screen as code (JSX). Note the first line comment which is required when using the add-screen tool.
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" screenId: "c13d3707-0efe-49f5-b6cb-0ca5ac5223d0" -->
<div className="bg-white text-zinc-950 w-full h-fit">
  <div className="flex p-6 flex-col gap-6">
    <div className="flex pt-4 justify-between items-center">
      <ArrowLeft className="size-5 text-[#71717b]" />
      <span className="font-semibold text-zinc-950 text-lg leading-7">
        World Clock
      </span>
      <Plus className="size-5 text-[#2b7fff]" />
    </div>
    <div className="rounded-xl bg-zinc-100 flex p-2 items-center gap-2">
      <Search className="size-4 text-[#71717b] ml-2" />
      <span className="text-[#71717b] text-sm leading-5">Search cities...</span>
    </div>
...
    <div className="flex pt-2 pb-4 justify-center items-center gap-4">
      <Button variant="outline" className="rounded-full px-6 gap-2">
        <Clock className="size-4" />
        <span>Compare</span>
      </Button>
      <Button className="rounded-full bg-[#2b7fff] text-blue-50 px-6 gap-2">
        <Bell className="size-4" />
        <span>Set Alert</span>
      </Button>
    </div>
  </div>
</div>;


add-screen

Adds a new screen to a Flowstep file from a raw JSX string. Input
ParameterTypeDescription
fileIduuidFile ID
jsxContentstringJSX to add to the file as a screen
screenTypestringRequired if the screen type is not defined as a comment at the start of the JSX
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.
{ "screenId": "3f9e6eb6-5525-4383-9375-67e0bd762dbf" }

get-screen-image

Render a screen to PNG and return it as an inline image. Requires a client that supports image content blocks. Input
ParameterTypeDescription
fileIduuidFile ID
screenIduuidThe screenId returned by list-screens or from the screenIds array returned by a design tool
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
ParameterTypeDefaultDescription
fileIduuidTarget file — omit to create a new file automatically
messagestringPrompt describing the screens to generate
attachmentsAttachmentRequestData[] (max 5)[]Pre-uploaded attachments — images, PDFs, or code files. Always upload via upload-attachment first; do not inline file contents in the message
designsDesignRequestData[][]Design references
Output{ fileId, screenIds }. Pass each screenId to get-screen-image to view results.
{
  "fileId": "5c2170f0-5b09-4a5a-ba7a-4d5c2cfb07e0",
  "screenIds": ["3f9e6eb6-5525-4383-9375-67e0bd762dbe"]
}

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
ParameterTypeDefaultDescription
fileIduuidTarget file
messagestringPrompt text
targetsuuid[] (min 1)screenIds of screens to regenerate
operationVariant"different_layout" | "different_style" | "from_scratch"Optional style variant
designsDesignRequestData[][]Design references (resolved automatically)
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
ParameterTypeDefaultDescription
fileIduuidTarget file
messagestringPrompt text
targetsuuid[] (min 1)screenIds of screens to expand from
operationVariant"next_screen" | "error_state" | "empty_state" | "web_version" | "mobile_version" | "tablet_version" | "mobile_ios_version" | "mobile_android_version"Required — type of follow-on screen to generate
designsDesignRequestData[][]Design references (resolved automatically)
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
ParameterTypeDefaultDescription
fileIduuidTarget file
messagestringInstructions describing the edits to apply
targetsuuid[] (min 1)screenIds of screens to edit
operationVariant"dark_theme" | "light_theme" | "make_pretty"Optional style shortcut
attachmentsAttachmentRequestData[] (max 5)[]Pre-uploaded attachments. Always upload via upload-attachment first
designsDesignRequestData[][]Design references (resolved automatically)
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.
ParameterTypeDescription
fileIduuidFile containing the screen (required)
screenIduuidScreen to render
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.
ParameterTypeDescription
fileDatastringFile content — base64 for binary, UTF-8 string for text
fileNamestringOriginal filename
mimeType"image/jpeg" | "image/png" | "image/webp" | "application/pdf" | "text/plain" | "text/javascript"MIME type. Use text/javascript for .jsx, .tsx, .js, .ts files
Max file size: 3 MB. For large images, prefer image/jpeg over image/png. Output
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "path": "attachments/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "image",
  "mimeType": "image/jpeg"
}
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
ParameterTypeDescription
fileIduuidFile ID
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").
{
  "messages": [
    {
      "id": "453f593d-2380-425b-ba29-127db08d6a8e",
      "chat_id": "146d0f19-497e-450c-ba53-3de15f6bd70b",
      "type": "request",
      "status": "success",
      "content": "Generate a simple mobile login screen with email and password fields",
      "author": "human",
      "content_type": "text",
      "sequence": 1,
      "request_message_id": null,
      "targets": [],
      "attachments": []
    },
    {
      "id": "d860186b-82d5-4bd1-8e8e-8ba5377a14bf",
      "chat_id": "146d0f19-497e-450c-ba53-3de15f6bd70b",
      "type": "response",
      "status": "success",
      "content": "Generated a mobile login screen with email and password input fields, sign in button, remember me checkbox, forgot password link, social login options (Apple/Google), and sign up link.",
      "author": "ai",
      "content_type": "summary",
      "sequence": 7,
      "request_message_id": "453f593d-2380-425b-ba29-127db08d6a8e",
      "targets": [{ "target_id": "3f9e6eb6-5525-4383-9375-67e0bd762dbe" }],
      "attachments": []
    }
  ]
}

Design tools

get-design-guidelines

Get the design guidelines stored for a file. Input
ParameterTypeDefaultDescription
resourceIduuidFile ID
linkedTo"file""file"Resource type
Output
{
  "guidelines": "## Colors\n\nPrimary: #6366F1\nBackground: #FFFFFF\n\n## Typography\n\nFont: Inter",
  "linkedTo": "file"
}
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
ParameterTypeDefaultDescription
resourceIduuidFile ID
designGuidelinesstring (min 1)Raw text content of the guidelines. Must be a plain string — not JSON-encoded
linkedTo"file""file"Resource type
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
ParameterTypeDefaultDescription
resourceIduuidFile ID
linkedTo"file""file"Resource type
Output"Design guidelines deleted successfully"

Billing tools

get-plan-details

Get the current user’s plan, subscription status, and remaining quota. Takes no input. Output
{
  "plan": {
    "name": "Starter",
    "code": "starter",
    "type": "paid"
  },
  "subscription": {
    "isPaid": true,
    "isTrial": false,
    "startDate": "2025-01-01T00:00:00Z",
    "endDate": null,
    "trialDaysRemaining": null
  },
  "limits": {
    "messages": {
      "daily": { "max": 50, "warn": 40 },
      "monthly": { "max": 500, "warn": 400 },
      "unlimited": false
    }
  },
  "usage": {
    "messages": { "daily": 12, "monthly": 87 }
  },
  "remaining": {
    "messages": { "daily": 38, "monthly": 413 }
  }
}
Limits vary by plan. Call this tool before a batch of generations to check available quota.