Chuyển đến nội dung chính
Khi thành công, mọi công cụ ngoại trừ get-screen-image đều trả về kết quả hai lần: dưới dạng structuredContent (được xác thực theo schema đầu ra đã công bố của công cụ) và dưới dạng cùng đối tượng đó được tuần tự hóa thành một khối văn bản, { type: "text", text: "<json-string>" }, dành cho các máy khách không đọc structured content. get-screen-image chỉ trả về một khối hình ảnh MCP: { type: "image", data: "<base64>", mimeType: "image/png" }. Khi thất bại, isError: true được đặt và khối văn bản chứa một thông báo lỗi ngắn. Các lỗi bạn có thể xử lý, chẳng hạn tên không khớp khi xóa, liên kết Figma không hợp lệ, nguyên tắc thiết kế không hợp lệ, sự cố với tệp đính kèm hoặc quá thời gian tạo, sẽ giải thích cần sửa gì. Các lỗi khác trả về thông báo chung như Failed to list files.
Bảng giá: ba công cụ thiết kế AI (ai-design-screens, ai-generate-screen-variant và ai-edit-screen-variant) sử dụng cùng hạn mức tin nhắn với ứng dụng Flowstep. Tất cả các công cụ khác đều miễn phí. Xem Giới hạn sử dụng.
Mỗi công cụ cũng công bố các chú thích MCP để máy khách của bạn biết nó làm gì. delete-file, delete-screen, delete-design-guidelines, replace-screen-jsx, ai-design-screens và ai-edit-screen-variant được đánh dấu là phá hủy vì chúng xóa hoặc ghi đè nội dung hiện có.

Công cụ tệp

list-files

Liệt kê siêu dữ liệu của các tệp Flowstep của bạn. Hãy gọi công cụ này trước để kiểm tra xem tệp phù hợp đã tồn tại hay chưa. Công cụ không trả về nội dung màn hình. Hãy dùng get-screen-image hoặc get-screen-jsx cho mục đích đó. Đầu vào Đầu ra: { files }.
  • owner: true nếu bạn đã tạo tệp.
  • shared_with_me: true nếu tệp được chia sẻ trực tiếp với bạn, không chỉ thông qua tổ chức của bạn.
  • url: mở tệp trong trình chỉnh sửa Flowstep.

get-file

Lấy siêu dữ liệu của một tệp. Nội dung tệp được cố ý bỏ qua. Hãy dùng get-screen-image hoặc get-screen-jsx để kiểm tra màn hình, và get-design-guidelines để lấy nguyên tắc thiết kế đính kèm. Nếu bạn có lời mời đang chờ đối với tệp, việc gọi get-file sẽ chấp nhận lời mời đó. Đầu vào Đầu ra: { file, user_access_level }.
  • access_level: private, read hoặc write.
  • visibility: private, member hoặc public.
  • user_access_level: quyền truy cập của bạn đối với tệp: read hoặc write.

create-file

Tạo một tệp Flowstep trống, không có màn hình nào. Để tạo tệp và sinh màn hình trong một bước, hãy gọi ai-design-screens mà không có fileId. Dùng create-file cho quy trình làm việc theo hướng mã nguồn trước, sau đó gọi add-screen-jsx. Đầu vào Đầu ra: { file, user_access_level }, có cùng cấu trúc với get-file. owner luôn là true và user_access_level luôn là write. Dùng file.id được trả về làm fileId trong các lệnh gọi công cụ tiếp theo.

update-file

Đổi tên một tệp. Đầu vào Đầu ra: { file, user_access_level }, có cùng cấu trúc với get-file.

delete-file

Xóa vĩnh viễn một tệp. name bạn truyền vào được đối chiếu với tên hiển thị hiện tại của tệp trước khi xóa. Nếu không khớp, việc xóa sẽ bị hủy. Điều này giúp tránh xóa nhầm tệp. Các tác nhân được hướng dẫn xác nhận với bạn trước. Đầu vào Đầu ra: { "deleted": true }
Thao tác này không thể hoàn tác. Mọi màn hình trong tệp đều bị xóa.

Công cụ màn hình

list-screens

Liệt kê các màn hình trong một tệp, theo thứ tự trên canvas. Hãy gọi công cụ này sau list-files để xem những gì đã có trong tệp. Dùng các giá trị screenId được trả về với các công cụ màn hình khác và công cụ thiết kế AI. Đầu vào Đầu ra: { screens }.
  • prompt: prompt tạo gần nhất của màn hình, hoặc chuỗi rỗng nếu màn hình chưa từng được tạo (ví dụ, màn hình được thêm bằng add-screen-jsx).
  • fidelity: lofi, hifi hoặc ui.

get-screen-image

Kết xuất một màn hình thành PNG và trả về dưới dạng hình ảnh nội tuyến. Yêu cầu máy khách hỗ trợ khối nội dung hình ảnh. Gọi công cụ này một lần cho mỗi screenId được trả về bởi một công cụ thiết kế AI, add-screen-jsx, replace-screen-jsx hoặc import-figma. Đầu vào Đầu ra: khối nội dung hình ảnh MCP (image/png). data là base64 chuẩn của các byte PNG, không phải data URI. Công cụ này không có structuredContent.

get-screen-jsx

Lấy một màn hình dưới dạng JSX cùng siêu dữ liệu của nó, để bạn xây dựng từ đó trong mã nguồn, hoặc chỉnh sửa và ghi lại bằng replace-screen-jsx. Để xem trước trực quan, hãy dùng get-screen-image. Đầu vào Đầu ra: { fileId, screenId, name, prompt, fidelity, screenType, colorTheme, jsx, fragments }.
  • jsx: chỉ có đánh dấu. Các thuộc tính data-id chỉ được đưa vào khi includeIds là true.
  • prompt: prompt tạo gần nhất, hoặc chuỗi rỗng nếu màn hình chưa từng được tạo.
  • fragments: phần giao diện dùng chung được lưu trên màn hình, chẳng hạn thanh điều hướng, tiêu đề hoặc logo, dưới dạng các đối tượng { purpose, markup }. Trống khi không có. Truyền lại cho replace-screen-jsx để giữ hoặc cập nhật chúng.
Xem Giá trị trường màn hình để biết các giá trị fidelity, screenType và colorTheme.

add-screen-jsx

Thêm một màn hình mới vào tệp từ JSX bạn đã viết. Đây là đường dẫn làm việc theo hướng mã nguồn trước và miễn phí. Dùng ai-design-screens khi bạn muốn AI của Flowstep thiết kế màn hình. add-screen-jsx luôn tạo màn hình mới. Để ghi đè một màn hình hiện có, hãy dùng replace-screen-jsx. Để hiển thị một hình ảnh bạn đã tải lên, xem Hình ảnh trong JSX. Khi màn hình mới dựa trên một màn hình hiện có, hãy bắt đầu từ get-screen-jsx (không có includeIds) để lấy name, fidelity, screenType, colorTheme và jsx, rồi thay đổi những gì cần khác. Đầu vào Đầu ra: { fileId, screenId }. Gọi get-screen-image với screenId để xem kết quả.

replace-screen-jsx

Ghi đè một màn hình hiện có bằng JSX bạn đã viết. Màn hình giữ nguyên screenId và vị trí trên canvas. Các phần tử lồng nhau sẽ nhận id mới. Đây là đường dẫn làm việc theo hướng mã nguồn trước và miễn phí. Dùng ai-design-screens hoặc ai-edit-screen-variant để AI thay đổi, và add-screen-jsx để tạo màn hình mới thay thế. Bắt đầu từ get-screen-jsx (không có includeIds), rồi thay đổi những gì cần khác. Để hiển thị một hình ảnh bạn đã tải lên, xem Hình ảnh trong JSX. Đầu vào Đầu ra: { fileId, screenId }. Gọi get-screen-image với screenId để xem kết quả.
Thao tác này thay thế nội dung của màn hình ngay tại chỗ.

rename-screen

Đổi tên nhãn trên canvas của một màn hình, tức là tên hiển thị trong list-screens và trong trình chỉnh sửa. Thao tác này chỉ thay đổi nhãn, không thay đổi bố cục, kích thước hay nội dung của màn hình. Để làm những việc đó, hãy dùng ai-design-screens. Đầu vào Đầu ra: { screenId, name }.

delete-screen

Xóa vĩnh viễn một màn hình khỏi tệp. name bạn truyền vào được đối chiếu với tên hiển thị hiện tại của màn hình. Nếu không khớp, việc xóa sẽ bị hủy. Các tác nhân được hướng dẫn xác nhận với bạn trước. Đầu vào Đầu ra: { "deleted": true }

Hình ảnh trong JSX

add-screen-jsx và replace-screen-jsx chấp nhận hình ảnh trong src của thẻ img, hoặc làm nền trong className với bg-[url(...)]. Viết văn bản alt và đặt kích thước cho từng hình ảnh theo mục đích sử dụng. Để đặt một hình ảnh của riêng bạn:
  1. Tải hình ảnh lên bằng upload-attachment ở Chế độ A (mimeType + fileName), rồi chạy uploadCommand được trả về.
  2. Nếu type trong phản hồi là "image", hãy dán assetUrl đúng như được trả về vào img src hoặc bg-[url(assetUrl)].
Giữ nguyên mọi URL hình ảnh khác đúng như get-screen-jsx đã trả về. Không đưa path, signedUrl hoặc uploadCommand vào src.

Giá trị trường màn hình

get-screen-jsx trả về, còn add-screen-jsx và replace-screen-jsx chấp nhận, các giá trị sau:

Công cụ nguyên tắc thiết kế

Nguyên tắc thiết kế là văn bản DESIGN.md được lưu trên một tệp. Khi đã đặt, chúng được đưa vào mọi lần tạo bằng AI cho tệp đó. Xem Nguyên tắc thiết kế.

get-design-guidelines

Lấy nguyên tắc thiết kế được gắn với một tệp. Đầu vào Đầu ra: { guidelines }.
guidelines là null nếu chưa đặt nguyên tắc nào.

update-design-guidelines

Đặt hoặc thay thế nguyên tắc thiết kế của một tệp. Truyền nguyên tắc dưới dạng chuỗi thuần theo định dạng DESIGN.md của Google, không phải đối tượng hay JSON. Nếu bạn đang đọc từ một tệp, hãy truyền văn bản của tệp đó. Đầu vào Quy tắc xác thực
  • Phần frontmatter phải được mở và đóng đúng cách
  • Các dòng frontmatter phải là YAML kiểu khối hợp lệ
  • Phần nội dung Markdown không được chứa tiêu đề ## bị trùng
Nếu xác thực thất bại, lệnh gọi sẽ trả về lỗi bắt đầu bằng Invalid design guidelines:. Đầu ra: { updated, warnings? }.
warnings liệt kê các vấn đề xác thực mềm (khóa không xác định, màu không phải hex) đã được chấp nhận nhưng có thể bị AI bỏ qua. Trường này bị bỏ qua khi không có cảnh báo nào. Hãy thông báo các cảnh báo này cho người dùng.

delete-design-guidelines

Xóa nguyên tắc thiết kế của một tệp. Xóa nguyên tắc không tồn tại sẽ không có tác dụng gì. Đầu vào Đầu ra: { "deleted": true }

Công cụ trò chuyện

get-chat-history

Lấy cuộc trò chuyện thiết kế gắn với một tệp, tức là cuộc trò chuyện Flowstep của tệp, không phải cuộc trò chuyện trong máy khách MCP của bạn. Dùng công cụ này để tiếp tục công việc trước đó trên tệp. Đầu vào Đầu ra: { messages }. messages trống khi bạn chưa có cuộc trò chuyện thiết kế nào trên tệp. Mỗi tin nhắn có type ("request" hoặc "response"), author ("human" hoặc "ai") và content_type. Tin nhắn phản hồi dùng "text", "summary" hoặc "followup".

Công cụ tệp đính kèm

upload-attachment

Tải lên một tệp tham chiếu để dùng làm tệp đính kèm trong ai-design-screens, hoặc một hình ảnh để đặt vào JSX của riêng bạn với add-screen-jsx hoặc replace-screen-jsx. ai-generate-screen-variant và ai-edit-screen-variant không nhận tệp đính kèm. Nội dung tệp không đi qua mô hình, và máy chủ không bao giờ tự tải URL. Để tham chiếu một trang web, hãy đưa URL của trang vào message của ai-design-screens. Có hai chế độ. Chỉ dùng đúng một chế độ, không kết hợp chúng. Chế độ A: tệp và hình ảnh (mimeType + fileName) Quy trình ba bước bắt buộc cho mọi hình ảnh, tệp PDF hoặc tệp văn bản lớn hơn:
  1. Gọi upload-attachment chỉ với mimeType và fileName (ví dụ image/png và dog.png). Phản hồi là một lượt tải lên đã chuẩn bị, chưa phải tệp đã được lưu:
  2. Thay LOCAL_FILE_PATH trong uploadCommand bằng đường dẫn tuyệt đối tới tệp của bạn, rồi chạy đúng lệnh đó trong shell. Lệnh phải thoát với mã 0. Token trong signedUrl chỉ cho phép đúng lượt tải lên này. Bỏ qua bước này sẽ khiến bộ nhớ trống và công cụ thiết kế sẽ thất bại ở bước kiểm tra sơ bộ.
  3. Chỉ truyền { id, path, type } vào mảng attachments của ai-design-screens, không truyền signedUrl, uploadCommand hoặc nextStep. Để đặt hình ảnh vào JSX của riêng bạn, hãy đưa assetUrl vào img src hoặc bg-[url(...)] trong JSX mà bạn truyền cho add-screen-jsx hoặc replace-screen-jsx. Xem Hình ảnh trong JSX.
Để đính kèm một tệp từ xa, trước tiên hãy tự tải tệp đó về một đường dẫn cục bộ (ví dụ bằng curl), rồi làm theo ba bước tương tự. Không bao giờ truyền URL vào upload-attachment. Chế độ B: văn bản ngắn (text + mimeType) Tải lên văn bản đã có trong ngữ cảnh, không cần lệnh shell. Phản hồi có thể dùng ngay:
Truyền { id, path, type } thu được vào mảng attachments của ai-design-screens. Dung lượng tệp tối đa là 3 MB cho cả hai chế độ, và tệp PDF giới hạn tối đa 100 trang. Đầu ra: { id, path, assetUrl, type, mimeType, signedUrl?, uploadCommand?, nextStep? }.
  • type: "image" đối với tệp hình ảnh và "document" đối với tệp PDF và tệp văn bản.
  • assetUrl: URL của tệp đã tải lên, được trả về ở cả hai chế độ. Chỉ dùng trong JSX cho add-screen-jsx hoặc replace-screen-jsx khi type là "image", và chỉ sau khi đã chạy uploadCommand ở Chế độ A.
  • signedUrl, uploadCommand, nextStep: chỉ được đặt ở Chế độ A. Không truyền chúng vào công cụ thiết kế.

Công cụ Figma

import-figma

Nhập một khung Figma vào một tệp Flowstep dưới dạng các phần tử có thể chỉnh sửa trên canvas của tệp. Mỗi lần nhập sẽ thêm một màn hình mới. Nhập cùng một khung hai lần sẽ cho bạn hai màn hình, vì vậy hãy xóa màn hình cũ bằng delete-screen nếu bạn muốn thay thế nó. Tổ chức sở hữu tệp phải đã kết nối Figma trong cài đặt Flowstep. Đầu vào Đầu ra: { fileId, screenId, frameCount? }. screenId là màn hình đã nhập. Truyền nó cho get-screen-image để xem kết quả. Khi một URL trang nhập nhiều khung, screenId là null và thay vào đó trả về frameCount. Khi đó, hãy gọi list-screens, rồi gọi get-screen-image cho từng màn hình mới.

Công cụ gói và thanh toán

get-plan-details

Lấy gói Flowstep, trạng thái đăng ký, mức sử dụng và hạn ngạch còn lại của tổ chức bạn. Không nhận đầu vào. Tổ chức được xác định từ người dùng đã đăng nhập. Dùng công cụ này để kiểm tra hạn mức trước khi gọi các công cụ thiết kế AI. Đầu ra: { plan, subscription, limits, usage, remaining }. Giới hạn khác nhau tùy theo gói. Xem Bảng giá và Giới hạn sử dụng.

Công cụ thiết kế AI

Ba công cụ này thiết kế từ một mô tả hoặc một preset. Chúng không bao giờ nhận hoặc tái sử dụng JSX. Mỗi lần gọi sử dụng cùng hạn mức tin nhắn với ứng dụng Flowstep, và chờ cho đến khi quá trình tạo hoàn tất hoặc hết thời gian (180 giây). Cả ba đều trả về { status, fileId, screenIds, designGuidelinesUpdated }. Gọi get-screen-image một lần cho mỗi screenId để xem kết quả.
  • designGuidelinesUpdated: tóm tắt ngắn về thay đổi khi nguyên tắc DESIGN.md của tệp được cập nhật tự động trong lượt này; nếu không thì là null.

ai-design-screens

Tạo một hoặc nhiều màn hình mới, thay đổi màn hình hiện có tại chỗ, hoặc cả hai trong một lệnh gọi, từ một mô tả bằng văn bản: luồng mới, theme, nội dung, bố cục, hoặc các thay đổi phối hợp trên nhiều màn hình. Đây là cùng tác nhân thiết kế như trò chuyện trong trình chỉnh sửa Flowstep. Dựa trên message và elementIds, nó tự quyết định cần tạo gì và thay đổi gì. Bỏ qua fileId để bắt đầu một tệp mới. Truyền fileId để làm việc trong một tệp hiện có. Nếu yêu cầu có thể áp dụng cho một tệp bạn đã có, tác nhân của bạn nên kiểm tra list-files và list-screens trước. Với bước tiếp theo, trạng thái lỗi hoặc trạng thái rỗng, hoặc biến thể nền tảng của một màn hình, hãy dùng ai-generate-screen-variant. Với một preset chỉnh sửa hoặc thiết kế lại cho một màn hình, hãy dùng ai-edit-screen-variant. Nếu bạn đã có JSX, hãy dùng add-screen-jsx hoặc replace-screen-jsx thay thế. Đầu vào Ví dụ: chỉnh sửa một màn hình và thêm một màn hình khác trong một lệnh gọi duy nhất:
Đầu ra: { status, fileId, screenIds, designGuidelinesUpdated, reply? }.
  • status: "generated" khi màn hình được xây dựng hoặc thay đổi. "chat" khi Flowstep trả lời mà không xây dựng gì. Trong trường hợp này, reply chứa câu trả lời và screenIds trống. Nếu yêu cầu của bạn chưa rõ ràng, tác nhân của bạn nên yêu cầu bạn làm rõ rồi gọi lại công cụ.
  • screenIds: mọi màn hình được xây dựng hoặc thay đổi trong lệnh gọi, bao gồm cả các màn hình được chỉnh sửa tại chỗ. Nếu lệnh gọi hết thời gian sau khi một số màn hình đã được xây dựng, nó sẽ trả về các màn hình đó thay vì báo lỗi.
Các màn hình mà bạn yêu cầu chỉnh sửa sẽ bị ghi đè tại chỗ.

ai-generate-screen-variant

Thêm một màn hình mới được suy ra từ đúng một màn hình hiện có: bước tiếp theo trong luồng, trạng thái lỗi hoặc trạng thái rỗng, hoặc một phiên bản cho nền tảng khác. Màn hình gốc không thay đổi. Để thêm một màn hình không phải là biến thể của màn hình hiện có (ví dụ, màn hình cài đặt), hãy dùng ai-design-screens với fileId. Đầu vào Đầu ra: { status, fileId, screenIds, designGuidelinesUpdated }. status luôn là "generated".

ai-edit-screen-variant

Thay đổi đúng một màn hình hiện có tại chỗ bằng một preset: làm đẹp hoặc đổi theme, thử một bố cục hoặc phong cách hình ảnh khác, hoặc thiết kế lại từ đầu. Với màn hình mới, hướng dẫn tự do, hoặc chỉnh sửa chính xác từng phần tử, hãy dùng ai-design-screens. Đầu vào Đầu ra: { status, fileId, screenIds, designGuidelinesUpdated }. status luôn là "generated".
Thao tác này ghi đè nội dung của màn hình ngay tại chỗ.

Công cụ đã đổi tên

Tên công cụ đã thay đổi vào tháng 9 và tháng 10 năm 2026. Nếu bạn có prompt, script hoặc hướng dẫn tác nhân dùng tên cũ, hãy cập nhật chúng: Đầu vào cũng đã thay đổi: các công cụ thiết kế AI nhận elementIds (hoặc một screenId duy nhất đối với các công cụ biến thể) thay cho targets. add-screen-jsx nhận jsx và các trường siêu dữ liệu rõ ràng thay cho jsxContent với một chú thích siêu dữ liệu. create-file nhận name thay cho title. Các công cụ nguyên tắc thiết kế nhận fileId thay cho resourceId và linkedTo.