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 中引用屏幕,以及在 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 都是可选的 — 如果存在(例如,从 get-screen 输出复制 JSX 时)使用 screenId,但不是强制的。屏幕名称取自注释的 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, designGuidelinesUpdated }。将每个 screenId 传递给 get-screen-image 查看结果。designGuidelinesUpdated 报告此生成过程中文件的设计准则是否更改。
regenerate-design
从头开始或使用样式变化重做现有屏幕。需要 targets 中至少一个 screenId。阻止直到生成完成或超时 (180 秒)。
输入
输出 —
{ fileId, screenIds, designGuidelinesUpdated }。将每个 screenId 传递给 get-screen-image 查看结果。
expand-design
向现有设计添加后续屏幕。需要 targets 中至少一个 screenId 和强制性的 operationVariant。阻止直到生成完成或超时 (180 秒)。
输入
输出 —
{ fileId, screenIds, designGuidelinesUpdated }。将每个 screenId 传递给 get-screen-image 查看结果。
edit-design
通过提示词修改现有屏幕。需要 targets 中至少一个 screenId。阻止直到生成完成或超时 (180 秒)。
输入
输出 —
{ fileId, screenIds, designGuidelinesUpdated }。将每个 screenId 传递给 get-screen-image 查看结果。
upload-attachment
上传文件以在 create-new-design 或 edit-design 中用作附件(不是 regenerate-design 或 expand-design)。文件字节不会通过模型,服务器也不会代表您获取 URL。
有两种模式 — 恰好使用其中一种,不要将它们结合。
模式 A — 文件和图像 (mimeType + fileName)
对任何图像、PDF 或较大的文本文件的必需三步流程:
-
仅使用
mimeType和fileName调用upload-attachment(例如image/png和dog.png)。响应是一个准备好的上传,而不是已存储的文件: -
用您文件的绝对路径替换
uploadCommand中的LOCAL_FILE_PATH并在您的 shell 中运行该确切命令 — 它必须退出 0。signedUrl中的令牌仅授权此单一上传。跳过此步骤会导致存储为空,设计工具会失败其预检检查。 -
仅将
{ id, path, type }传递到设计工具的attachments数组 — 不是signedUrl、uploadCommand或nextStep。
curl),然后按照相同的三步操作。不要将 URL 传递给 upload-attachment。
模式 B — 短文本 (
text + mimeType)
上传已在上下文中的文本 — 无需 shell 命令。响应可以直接使用:
将结果的
{ id, path, type } 传递到 create-new-design 或 edit-design 的 attachments 数组中。
两种模式的最大文件大小为 3 MB,PDF 的上限为 100 页。type 对于图像文件是 "image",对于 PDF 和文本文件是 "document"。
聊天工具
get-chat-history
获取文件的聊天消息历史。
输入
输出 — 包含
messages 数组的 JSON 对象。每条消息都有 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 忽略的问题(未知键、非十六进制颜色)。将这些显示给用户。
输入
验证规则
- Frontmatter 必须正确打开和关闭
- Frontmatter 行必须是有效的块样式 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。