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 파일을 만듭니다.
입력
출력 — 새 파일의
id를 포함하는 JSON 파일 객체입니다.
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를 전달할 때 예: get-screen 출력). 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 }. 각 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/png보다 image/jpeg를 사용합니다.
출력
type은 이미지/PDF 업로드의 경우 "image"이고 텍스트/코드 파일의 경우 "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으로 전달하지 않습니다.
서버는 소프트 검증을 수행하고 응답에 받아들여졌지만 AI에서 무시될 수 있는 문제(알 수 없는 키, 16진수가 아닌 색상)를 나열하는 Warnings: 섹션을 반환할 수 있습니다. 사용자에게 이를 표시합니다.
입력
검증 규칙
- 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가 대신 반환됩니다.