content di blocchi di contenuto MCP. Gli strumenti di testo restituiscono { type: "text", text: "<json-string>" }. Gli strumenti di immagine restituiscono { type: "image", data: "<base64>", mimeType: "image/png" }. In caso di errore, isError: true è impostato e il blocco di testo contiene il messaggio di errore.
Strumenti file
list-files
Elenca i file Flowstep per l’utente corrente.
Input
Output — Array JSON di oggetti file.
get-file
Ottieni un singolo file per ID. Il contenuto del file è intenzionalmente omesso — usa get-screen o get-screen-image per ispezionare le schermate, e get-design-guidelines per recuperare le linee guida allegate.
Input
Output — Oggetto file JSON.
create-file
Crea un nuovo file Flowstep.
Input
Output — Oggetto file JSON con l’
id del nuovo file.
id restituito come fileId nelle successive chiamate di strumento.
update-file
Rinomina un file.
Input
Output — Oggetto file aggiornato nella stessa forma di
get-file.
delete-file
Elimina definitivamente un file. Il name che trasmetti viene verificato rispetto al nome effettivo del file prima dell’eliminazione — se non corrisponde, l’eliminazione viene interrotta. Questo previene l’eliminazione accidentale del file sbagliato.
Input
Output —
"File deleted successfully"
Strumenti schermata
list-screens
Elenca tutte le schermate generate per un file. Usa i valori screenId restituiti per fare riferimento alle schermate in get-screen, get-screen-image, e come targets in edit-design, regenerate-design o expand-design.
Input
Output — Array JSON di riepiloghi di schermate.
name è il nome della schermata assegnato dall’utente, o null se senza nome.
get-screen
Ottieni il codice JSX per una schermata consentendoti di modificarlo o usare il codice al di fuori di Flowstep. Usa get-screen-image per un’anteprima visiva invece.
Input
Output — La schermata come codice (JSX). Nota il commento della prima riga che è richiesto quando usi lo strumento
add-screen.
add-screen
Aggiunge una nuova schermata a un file Flowstep da una stringa JSX non elaborata.
Input
Nota - Un commento simile a quello di seguito DEVE essere presente come prima riga del JSX poiché viene utilizzato per aggiungere correttamente la schermata.
screenType, name e screenId sono tutti facoltativi — screenId viene utilizzato (internamente) se presente (ad esempio, quando si passa JSX copiato dall’output di get-screen), ma non è obbligatorio. Il nome della schermata è preso dal campo name del commento (visualizzato come “Copy of <name>”), o “Untitled” se assente.
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" -->
Output — L’ID della schermata appena aggiunta.
get-screen-image
Renderizza una schermata in PNG e restituiscila come un’immagine in linea. Richiede un client che supporta blocchi di contenuto di immagine.
Input
Output — Blocco di contenuto di immagine MCP (
image/png).
rename-screen
Rinomina l’etichetta della tela di una schermata — il nome mostrato da list-screens e nell’editor. Questo cambia solo l’etichetta, non il layout, la dimensione o il contenuto della schermata — usa edit-design per quelli.
Input
Output —
{ screenId, name }.
Strumenti IA
create-new-design
Genera uno o più design di schermate da un prompt di testo. Ometti fileId per creare automaticamente un nuovo file. Blocca fino al completamento della generazione o al timeout (180 secondi).
Input
Output —
{ fileId, screenIds, designGuidelinesUpdated }. Passa ogni screenId a get-screen-image per visualizzare i risultati. designGuidelinesUpdated riporta se le linee guida di design del file sono state modificate come parte di questa generazione.
regenerate-design
Rifare schermate esistenti da zero o con una variazione di stile. Richiede almeno uno screenId in targets. Blocca fino al completamento della generazione o al timeout (180 secondi).
Input
Output —
{ fileId, screenIds, designGuidelinesUpdated }. Passa ogni screenId a get-screen-image per visualizzare i risultati.
expand-design
Aggiungi schermate di follow-on a un design esistente. Richiede almeno uno screenId in targets e un operationVariant obbligatorio. Blocca fino al completamento della generazione o al timeout (180 secondi).
Input
Output —
{ fileId, screenIds, designGuidelinesUpdated }. Passa ogni screenId a get-screen-image per visualizzare i risultati.
edit-design
Modifica schermate esistenti tramite un prompt. Richiede almeno uno screenId in targets. Blocca fino al completamento della generazione o al timeout (180 secondi).
Input
Output —
{ fileId, screenIds, designGuidelinesUpdated }. Passa ogni screenId a get-screen-image per visualizzare i risultati.
upload-attachment
Carica un file per usarlo come allegato in create-new-design o edit-design (non regenerate-design o expand-design). I byte del file non passano mai attraverso il modello, e il server non recupera mai gli URL per conto tuo.
Ci sono due modalità — usa esattamente una, e non combinarle.
Modalità A — file e immagini (mimeType + fileName)
Un flusso richiesto in tre fasi per qualsiasi immagine, PDF o file di testo più grande:
-
Chiama
upload-attachmentconmimeTypeefileNamesolo (ad esempioimage/pngedog.png). La risposta è un caricamento preparato, non un file memorizzato: -
Sostituisci
LOCAL_FILE_PATHinuploadCommandcon il percorso assoluto del tuo file ed esegui quel comando esatto nella tua shell — deve uscire 0. Il token insignedUrlautorizza solo questo singolo caricamento. Saltare questo passaggio lascia lo spazio di archiviazione vuoto e lo strumento di design non supera il controllo preliminare. -
Passa solo
{ id, path, type }nell’arrayattachmentsdello strumento di design — nonsignedUrl,uploadCommandonextStep.
curl), quindi segui gli stessi tre passaggi. Non passare mai un URL a upload-attachment.
Modalità B — testo breve (
text + mimeType)
Carica testo che è già nel contesto — nessun comando di shell necessario. La risposta è pronta all’uso direttamente:
Passa il risultante
{ id, path, type } nell’array attachments di create-new-design o edit-design.
La dimensione massima del file è 3 MB in entrambe le modalità, e i PDF sono limitati a 100 pagine. type è "image" per file di immagine e "document" per PDF e file di testo.
Strumenti di chat
get-chat-history
Ottieni la cronologia dei messaggi di chat per un file.
Input
Output — Oggetto JSON con un array
messages. Ogni messaggio ha un type ("request" o "response"), author ("human" o "ai"), e content_type ("text", "summary" o "followup").
Strumenti di design
get-design-guidelines
Ottieni le linee guida di design archiviate per un file.
Input
Output
guidelines è null se nessuna linea guida è stata impostata.
update-design-guidelines
Imposta o sostituisci le linee guida di design per un file. Le linee guida vengono passate come una stringa di testo semplice nel formato design.md di Google — non passare un oggetto o JSON.
Il server esegue la convalida morbida e può restituire una sezione Warnings: nella risposta che elenca i problemi (chiavi sconosciute, colori non esadecimali) che sono stati accettati ma potrebbero essere ignorati dall’IA. Presenta questi all’utente.
Input
Regole di convalida
- Il frontmatter deve essere aperto e chiuso correttamente
- Le righe del frontmatter devono essere YAML di stile blocco valido
- Il corpo Markdown non deve contenere intestazioni di sezione
##duplicate
"Design guidelines updated successfully", facoltativamente seguito da una sezione Warnings:.
delete-design-guidelines
Cancella le linee guida di design per un file.
Input
Output —
"Design guidelines deleted successfully"
Strumenti Figma
import-figma
Importa un frame Figma in un file Flowstep come elementi modificabili sulla sua canvas. Re-importare lo stesso frame lo aggiorna in posizione. L’organizzazione del file deve prima avere Figma connesso nelle impostazioni di Flowstep.
Input
Output —
{ fileId, screenId }. screenId è l’id dell’elemento schermata importato — passalo a get-screen-image per visualizzare il risultato. Quando un URL di pagina importa più frame, screenId è null e frameCount viene restituito invece.