content de blocos de conteúdo MCP. Ferramentas de texto retornam { type: "text", text: "<json-string>" }. Ferramentas de imagem retornam { type: "image", data: "<base64>", mimeType: "image/png" }. Em caso de falha, isError: true é definido e o bloco de texto contém a mensagem de erro.
Ferramentas de arquivo
list-files
Liste arquivos Flowstep do usuário atual.
Entrada
Saída — array JSON de objetos de arquivo.
get-file
Obtenha um único arquivo por ID. O conteúdo do arquivo é intencionalmente omitido — use get-screen ou get-screen-image para inspecionar telas e get-design-guidelines para recuperar diretrizes anexadas.
Entrada
Saída — objeto JSON de arquivo.
create-file
Crie um novo arquivo Flowstep.
Entrada
Saída — objeto JSON de arquivo com o
id do novo arquivo.
id retornado como fileId em chamadas de ferramentas subsequentes.
update-file
Renomeie um arquivo.
Entrada
Saída — objeto de arquivo atualizado na mesma forma que
get-file.
delete-file
Exclua permanentemente um arquivo. O name que você passa é verificado contra o nome real do arquivo antes da exclusão — se não corresponder, a exclusão é abortada. Isso evita excluir acidentalmente o arquivo errado.
Entrada
Saída —
"File deleted successfully"
Ferramentas de tela
list-screens
Liste todas as telas geradas para um arquivo. Use os valores screenId retornados para referenciar telas em get-screen, get-screen-image e como targets em edit-design, regenerate-design ou expand-design.
Entrada
Saída — array JSON de resumos de tela.
name é o nome de tela atribuído pelo usuário ou null se sem nome.
get-screen
Obtenha o código JSX para uma tela permitindo que você edite ou use o código fora do Flowstep. Use get-screen-image para uma visualização visual.
Entrada
Saída — a tela como código (JSX). Observe o comentário da primeira linha que é necessário ao usar a ferramenta
add-screen.
add-screen
Adicione uma nova tela a um arquivo Flowstep a partir de uma string JSX bruta.
Entrada
Nota - Um comentário similar ao abaixo DEVE estar presente como a primeira linha do JSX pois é usado para adicionar a tela corretamente.
screenType, name e screenId são todos opcionais — screenId é usado (internamente) se presente (por exemplo, ao passar JSX copiado da saída get-screen) mas não é obrigatório. O nome da tela é obtido do campo name do comentário (exibido como “Copy of <name>”) ou “Untitled” se ausente.
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" -->
Saída — o novo ID de tela adicionado.
get-screen-image
Renderize uma tela para PNG e retorne-a como uma imagem inline. Requer um cliente que suporte blocos de conteúdo de imagem.
Entrada
Saída — bloco de conteúdo de imagem MCP (
image/png).
rename-screen
Renomeie o rótulo da tela — o nome mostrado por list-screens e no editor. Isso altera apenas o rótulo, não o layout, tamanho ou conteúdo da tela — use edit-design para esses.
Entrada
Saída —
{ screenId, name }.
Ferramentas de IA
create-new-design
Gere um ou mais designs de tela a partir de um prompt de texto. Omita fileId para criar um novo arquivo automaticamente. Bloqueia até que a geração seja concluída ou expire (180 segundos).
Entrada
Saída —
{ fileId, screenIds, designGuidelinesUpdated }. Passe cada screenId para get-screen-image para visualizar resultados. designGuidelinesUpdated informa se as diretrizes de design do arquivo foram alteradas como parte desta geração.
regenerate-design
Refaça telas existentes do zero ou com uma variação de estilo. Requer pelo menos um screenId em targets. Bloqueia até que a geração seja concluída ou expire (180 segundos).
Entrada
Saída —
{ fileId, screenIds, designGuidelinesUpdated }. Passe cada screenId para get-screen-image para visualizar resultados.
expand-design
Adicione telas subsequentes a um design existente. Requer pelo menos um screenId em targets e um operationVariant obrigatório. Bloqueia até que a geração seja concluída ou expire (180 segundos).
Entrada
Saída —
{ fileId, screenIds, designGuidelinesUpdated }. Passe cada screenId para get-screen-image para visualizar resultados.
edit-design
Modifique telas existentes via um prompt. Requer pelo menos um screenId em targets. Bloqueia até que a geração seja concluída ou expire (180 segundos).
Entrada
Saída —
{ fileId, screenIds, designGuidelinesUpdated }. Passe cada screenId para get-screen-image para visualizar resultados.
upload-attachment
Carregue um arquivo para usar como anexo em create-new-design ou edit-design (não regenerate-design ou expand-design). Os bytes de arquivo nunca passam pelo modelo e o servidor nunca busca URLs em seu nome.
Existem dois modos — use exatamente um, e não os combine.
Modo A — arquivos e imagens (mimeType + fileName)
Um fluxo obrigatório de três etapas para qualquer imagem, PDF ou arquivo de texto maior:
-
Chame
upload-attachmentcommimeTypeefileNameapenas (por exemploimage/pngedog.png). A resposta é um carregamento preparado, não um arquivo armazenado: -
Substitua
LOCAL_FILE_PATHemuploadCommandpelo caminho absoluto para seu arquivo e execute esse comando exato em seu shell — ele deve sair com código 0. O token emsignedUrlautoriza apenas este único carregamento. Pular esta etapa deixa o armazenamento vazio e a ferramenta de design falha em sua verificação prévia. -
Passe apenas
{ id, path, type }no arrayattachmentsda ferramenta de design — nãosignedUrl,uploadCommandounextStep.
curl) e depois siga os mesmos três passos. Nunca passe uma URL para upload-attachment.
Modo B — texto curto (
text + mimeType)
Carregue texto que já está em contexto — nenhum comando shell necessário. A resposta está pronta para usar diretamente:
Passe o resultado
{ id, path, type } no array attachments de create-new-design ou edit-design.
O tamanho máximo do arquivo é 3 MB em ambos os modos e PDFs são limitados a 100 páginas. type é "image" para arquivos de imagem e "document" para PDFs e arquivos de texto.
Ferramentas de chat
get-chat-history
Obtenha o histórico de mensagens de chat para um arquivo.
Entrada
Saída — objeto JSON com um array
messages. Cada mensagem tem um type ("request" ou "response"), author ("human" ou "ai") e content_type ("text", "summary" ou "followup").
Ferramentas de design
get-design-guidelines
Obtenha as diretrizes de design armazenadas para um arquivo.
Entrada
Saída
guidelines é null se nenhuma diretriz tiver sido definida.
update-design-guidelines
Defina ou substitua as diretrizes de design para um arquivo. As diretrizes são passadas como uma string de texto simples no formato design.md do Google — não passe um objeto ou JSON.
O servidor realiza validação flexível e pode retornar uma seção Warnings: na resposta listando problemas (chaves desconhecidas, cores não hexadecimais) que foram aceitos mas podem ser ignorados pela IA. Mostre esses ao usuário.
Entrada
Regras de validação
- O frontmatter deve ser aberto e fechado corretamente
- As linhas do frontmatter devem ser YAML de estilo de bloco válido
- O corpo Markdown não deve conter cabeçalhos de seção
##duplicados
"Design guidelines updated successfully", opcionalmente seguido por uma seção Warnings:.
delete-design-guidelines
Limpe as diretrizes de design para um arquivo.
Entrada
Saída —
"Design guidelines deleted successfully"
Ferramentas Figma
import-figma
Importe um frame Figma para um arquivo Flowstep como elementos editáveis em sua tela. Re-importar o mesmo frame o atualiza no local. A organização do arquivo deve ter Figma conectado nas configurações do Flowstep.
Entrada
Saída —
{ fileId, screenId }. screenId é o id do elemento de tela importado — passe para get-screen-image para visualizar o resultado. Quando um URL de página importa vários frames, screenId é null e frameCount é retornado em vez disso.