content 数组。文本工具返回 { type: "text", text: "<json-string>" }。图像工具返回 { type: "image", data: "<base64>", mimeType: "image/png" }。失败时设置 isError: true 并在文本块中包含错误消息。
文件工具
list-files
列出当前用户的 Flowstep 文件。
输入
输出 — 文件对象的 JSON 数组。
get-file
根据 ID 获取单个文件。文件内容被故意省略 — 使用 get-screen 或 get-screen-image 检查屏幕,使用 get-design-guidelines 检索附加的设计准则。
输入
输出 — JSON 文件对象。
create-file
创建新 Flowstep 文件。
输入
输出 — JSON 文件对象,包含新文件的
id。
id 作为后续工具调用中的 fileId。
update-file
重命名文件。
输入
输出 — 与
get-file 形状相同的已更新文件对象。
delete-file
永久删除文件。你传递的 name 在删除前会针对文件的实际名称进行验证 — 如果不匹配,删除会中止。这可防止意外删除错误的文件。
输入
输出 —
"File deleted successfully"
屏幕工具
list-screens
列出文件的所有生成屏幕。使用返回的 screenId 值在 get-screen、get-screen-image、upload-attachment 中引用屏幕,以及在 edit-design、regenerate-design 或 expand-design 中作为 targets。
输入
输出 — 屏幕摘要的 JSON 数组。
name 是用户分配的屏幕名称,如果未命名则为 null。
get-screen
获取屏幕的 JSX 代码,允许你在 Flowstep 外编辑或使用代码。改为使用 get-screen-image 获取视觉预览。
输入
输出 — 屏幕作为代码(JSX)。注意第一行注释,在使用
add-screen 工具时需要。
add-screen
从原始 JSX 字符串向 Flowstep 文件添加新屏幕。
输入
注意 — 类似于下面的注释必须作为 JSX 的第一行出现,因为它用于正确添加屏幕。
screenType、name 和 screenId 都是可选的 — screenId 如果存在(例如在传递从 get-screen 输出复制的 JSX 时)会被使用,但不是强制性的。屏幕名称取自注释的 name 字段(显示为”Copy of <name>”),如果不存在则为”Untitled”。
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" -->
输出 — 新添加屏幕的 Id。
get-screen-image
将屏幕渲染为 PNG 并将其作为内联图像返回。需要支持图像内容块的客户端。
输入
输出 — MCP 图像内容块(
image/png)。
AI 工具
create-new-design
从文本提示词生成一个或多个屏幕设计。省略 fileId 自动创建新文件。阻塞直到生成完成或超时(180 秒)。
输入
输出 —
{ fileId, screenIds }。将每个 screenId 传递给 get-screen-image 以查看结果。
regenerate-design
从头开始重做现有屏幕或带有样式变化。需要在 targets 中至少一个 screenId。阻塞直到生成完成或超时(180 秒)。
输入
输出 —
{ fileId, screenIds }。将每个 screenId 传递给 get-screen-image 以查看结果。
expand-design
向现有设计添加后续屏幕。需要在 targets 中至少一个 screenId 和强制性的 operationVariant。阻塞直到生成完成或超时(180 秒)。
输入
输出 —
{ fileId, screenIds }。将每个 screenId 传递给 get-screen-image 以查看结果。
edit-design
通过提示词修改现有屏幕。需要在 targets 中至少一个 screenId。阻塞直到生成完成或超时(180 秒)。
输入
输出 —
{ fileId, screenIds }。将每个 screenId 传递给 get-screen-image 以查看结果。
upload-attachment
上传文件以在 create-new-design 或 edit-design 中作为附件使用。返回 { id, path, type, mimeType } — 直接将此对象传递到 attachments 数组中。
两种模式:
模式 1 —— 按 ID 的屏幕
传递 screenId 和 fileId。服务器从数据库获取屏幕状态并将其渲染为图像。
模式 2 —— 外部文件
直接传递文件内容。二进制文件必须进行 base64 编码;文本文件(包括源代码)作为纯 UTF-8 字符串传递。
最大文件大小:3 MB。对于大图像,优先使用
image/jpeg 而不是 image/png。
输出
type 对于图像/PDF 上传为 "image",对于文本/代码文件为 "document"。
聊天工具
get-chat-history
获取文件的聊天消息历史。
输入
输出 — JSON 对象,包含
messages 数组。每个消息都有 type("request" 或 "response")、author("human" 或 "ai")和 content_type("text"、"summary" 或 "followup")。
设计工具
get-design-guidelines
获取为文件存储的设计准则。
输入
输出
guidelines 为 null。
update-design-guidelines
为文件设置或替换设计准则。准则作为 Google 的 design.md 格式的纯文本字符串传递——不要传递对象或 JSON。
服务器执行软验证,可能在响应中返回 Warnings: 部分,列出被接受但可能被 AI 忽略的问题(未知键、非十六进制颜色)。将这些呈现给用户。
输入
验证规则
- 前置部分必须正确打开和关闭
- 前置部分行必须是有效的块样式 YAML
- Markdown 正文不得包含重复的
##部分标题
"Design guidelines updated successfully",可选地后跟 Warnings: 部分。
delete-design-guidelines
清除文件的设计准则。
输入
输出 —
"Design guidelines deleted successfully"
Figma 工具
import-figma
将 Figma 框架导入 Flowstep 文件作为其画布上的可编辑元素。重新导入相同框架会就地更新它。文件的组织必须在 Flowstep 设置中已连接 Figma。
输入
输出 —
{ fileId, screenId }。screenId 是导入的屏幕元素的 id——将其传递给 get-screen-image 以查看结果。当页面 URL 导入多个框架时,screenId 为 null 并返回 frameCount。