get-screen-image restituisce il risultato due volte: come structuredContent (validato rispetto allo schema di output pubblicato dallo strumento) e come lo stesso oggetto serializzato in un blocco di testo, { type: "text", text: "<json-string>" }, per i client che non leggono il contenuto strutturato. get-screen-image restituisce solo un blocco immagine MCP: { type: "image", data: "<base64>", mimeType: "image/png" }.
In caso di errore, viene impostato isError: true e il blocco di testo contiene un breve messaggio di errore. Gli errori su cui puoi intervenire, come una mancata corrispondenza del nome durante un’eliminazione, un link Figma non valido, linee guida di design non valide, un problema con un allegato o il timeout di una generazione, spiegano cosa correggere. Gli altri errori restituiscono un messaggio generico come Failed to list files.
Prezzi: i tre strumenti di design AI (
ai-design-screens, ai-generate-screen-variant e ai-edit-screen-variant) usano la stessa quota di messaggi dell’app Flowstep. Tutti gli altri strumenti sono gratuiti. Vedi Limiti di utilizzo.delete-file, delete-screen, delete-design-guidelines, replace-screen-jsx, ai-design-screens e ai-edit-screen-variant sono contrassegnati come distruttivi perché rimuovono o sovrascrivono contenuti esistenti.
Strumenti per i file
list-files
Elenca i metadati dei tuoi file Flowstep. Chiamalo per primo per verificare se esiste già un file pertinente. Non restituisce contenuto delle schermate: per quello usa get-screen-image o get-screen-jsx.
Input
Output:
{ files }.
owner:truese hai creato tu il file.shared_with_me:truese il file è stato condiviso direttamente con te, non solo tramite la tua organizzazione.url: apre il file nell’editor di Flowstep.
get-file
Ottieni i metadati di un singolo file. Il contenuto del file è volutamente omesso: usa get-screen-image o get-screen-jsx per ispezionare le schermate, e get-design-guidelines per recuperare le linee guida associate. Se hai un invito in sospeso per il file, chiamare get-file lo accetta.
Input
Output:
{ file, user_access_level }.
access_level:private,readowrite.visibility:private,memberopublic.user_access_level: il tuo accesso al file, cioèreadowrite.
create-file
Crea un file Flowstep vuoto, senza schermate. Per creare un file e generare schermate in un solo passaggio, chiama invece ai-design-screens senza fileId. Usa create-file per i flussi di lavoro basati sul codice, seguito da add-screen-jsx.
Input
Output:
{ file, user_access_level }, con la stessa struttura di get-file. owner è sempre true e user_access_level è sempre write.
Usa il file.id restituito come fileId nelle chiamate successive.
update-file
Rinomina un file.
Input
Output:
{ file, user_access_level }, con la stessa struttura di get-file.
delete-file
Elimina definitivamente un file. Il name che passi viene confrontato con il nome visualizzato attuale del file prima dell’eliminazione: se non corrisponde, l’eliminazione viene annullata. Questo evita di eliminare per errore il file sbagliato. Agli agenti viene chiesto di confermare prima con te.
Input
Output:
{ "deleted": true }
Strumenti per le schermate
list-screens
Elenca le schermate di un file, nell’ordine del canvas. Chiamalo dopo list-files per vedere cosa contiene già un file. Usa i valori screenId restituiti con gli altri strumenti per le schermate e con gli strumenti di design AI.
Input
Output:
{ screens }.
prompt: l’ultimo prompt di generazione della schermata, oppure una stringa vuota se non è mai stata generata (per esempio una schermata aggiunta conadd-screen-jsx).fidelity:lofi,hifioui.
get-screen-image
Renderizza una schermata in PNG e la restituisce come immagine in linea. Richiede un client che supporti i blocchi di contenuto immagine. Chiamalo una volta per ogni screenId restituito da uno strumento di design AI, da add-screen-jsx, da replace-screen-jsx o da import-figma.
Input
Output: blocco di contenuto immagine MCP (
image/png). data è base64 standard dei byte PNG, non un data URI. Questo strumento non ha structuredContent.
get-screen-jsx
Ottieni una schermata come JSX, insieme ai suoi metadati, così puoi costruire a partire da essa nella tua codebase oppure modificarla e riscriverla con replace-screen-jsx. Per un’anteprima visiva, usa invece get-screen-image.
Input
Output:
{ fileId, screenId, name, prompt, fidelity, screenType, colorTheme, jsx, fragments }.
jsx: solo markup. Gli attributidata-idsono inclusi solo quandoincludeIdsètrue.prompt: l’ultimo prompt di generazione, oppure una stringa vuota se la schermata non è mai stata generata.fragments: elementi comuni salvati sulla schermata, come una barra di navigazione, un’intestazione o un logo, sotto forma di oggetti{ purpose, markup }. È vuoto se non ce ne sono. Passali di nuovo areplace-screen-jsxper mantenerli o aggiornarli.
fidelity, screenType e colorTheme.
add-screen-jsx
Aggiunge una nuova schermata a un file a partire da JSX che hai scritto. È il percorso basato sul codice ed è gratuito: usa ai-design-screens quando vuoi che l’AI di Flowstep progetti la schermata. add-screen-jsx crea sempre una nuova schermata: per sovrascrivere una esistente, usa replace-screen-jsx.
Per mostrare un’immagine che hai caricato, vedi Immagini in JSX.
Quando la nuova schermata si basa su una esistente, parti da get-screen-jsx (senza includeIds) per name, fidelity, screenType, colorTheme e jsx, poi modifica ciò che deve essere diverso.
Input
Output:
{ fileId, screenId }. Chiama get-screen-image con screenId per vedere il risultato.
replace-screen-jsx
Sovrascrive una schermata esistente con JSX che hai scritto. La schermata mantiene il suo screenId e la sua posizione sul canvas; gli elementi annidati ricevono nuovi id. È il percorso basato sul codice ed è gratuito: usa ai-design-screens o ai-edit-screen-variant per le modifiche AI, e add-screen-jsx per creare invece una nuova schermata.
Parti da get-screen-jsx (senza includeIds), poi modifica ciò che deve essere diverso. Per mostrare un’immagine che hai caricato, vedi Immagini in JSX.
Input
Output:
{ fileId, screenId }. Chiama get-screen-image con screenId per vedere il risultato.
rename-screen
Rinomina l’etichetta di una schermata sul canvas, cioè il nome mostrato da list-screens e nell’editor. Cambia solo l’etichetta, non il layout, le dimensioni o il contenuto della schermata: per quelli usa ai-design-screens.
Input
Output:
{ screenId, name }.
delete-screen
Elimina definitivamente una schermata da un file. Il name che passi viene confrontato con il nome visualizzato attuale della schermata: se non corrisponde, l’eliminazione viene annullata. Agli agenti viene chiesto di confermare prima con te.
Input
Output:
{ "deleted": true }
Immagini in JSX
add-screen-jsx e replace-screen-jsx accettano immagini in un src di img, oppure come sfondo in className con bg-[url(...)]. Scrivi il testo alt e dimensiona ogni immagine in base al suo scopo.
Per inserire un’immagine tua:
- Caricala con
upload-attachmentin modalità A (mimeType+fileName) ed esegui iluploadCommandrestituito. - Se il
typedella risposta è"image", incolla il suoassetUrlesattamente come restituito inimg srco inbg-[url(assetUrl)].
get-screen-jsx. Non inserire path, signedUrl o uploadCommand in src.
Valori dei campi della schermata
get-screen-jsx restituisce, e add-screen-jsx e replace-screen-jsx accettano, questi valori:
Strumenti per le linee guida di design
Le linee guida di design sono testoDESIGN.md salvato su un file. Quando sono impostate, vengono inserite in ogni generazione AI per quel file. Vedi Linee guida di design.
get-design-guidelines
Ottieni le linee guida di design associate a un file.
Input
Output:
{ guidelines }.
guidelines è null se non sono state impostate linee guida.
update-design-guidelines
Imposta o sostituisce le linee guida di design di un file. Passa le linee guida come stringa semplice nel formato DESIGN.md di Google, non come oggetto o JSON. Se le leggi da un file, passa il testo di quel file.
Input
Regole di validazione
- Il frontmatter deve essere aperto e chiuso correttamente
- Le righe del frontmatter devono essere YAML valido in stile block
- Il corpo Markdown non deve contenere intestazioni di sezione
##duplicate
Invalid design guidelines:.
Output: { updated, warnings? }.
warnings elenca problemi di validazione non bloccanti (chiavi sconosciute, colori non esadecimali) che sono stati accettati ma che l’AI potrebbe ignorare. Viene omesso se non ce ne sono. Riportali all’utente.
delete-design-guidelines
Cancella le linee guida di design di un file. Eliminare linee guida inesistenti non ha effetto.
Input
Output:
{ "deleted": true }
Strumenti di chat
get-chat-history
Ottieni la conversazione di design associata a un file, cioè la chat Flowstep del file, non la conversazione del tuo client MCP. Usala per riprendere il lavoro precedente sul file.
Input
Output:
{ messages }. messages è vuoto se non hai una conversazione di design sul file. Ogni messaggio ha un type ("request" o "response"), un author ("human" o "ai") e un content_type. I messaggi di risposta usano "text", "summary" o "followup".
Strumenti per gli allegati
upload-attachment
Carica un file di riferimento da usare come allegato in ai-design-screens, oppure un’immagine da inserire nel tuo JSX con add-screen-jsx o replace-screen-jsx. ai-generate-screen-variant e ai-edit-screen-variant non accettano allegati. I byte dei file non passano mai dal modello, e il server non recupera mai URL per tuo conto. Per fare riferimento a una pagina web, includi il suo URL nel message di ai-design-screens.
Esistono due modalità: usane esattamente una, senza combinarle.
Modalità A: file e immagini (mimeType + fileName)
Un flusso obbligatorio in tre passaggi per qualsiasi immagine, PDF o file di testo più grande:
-
Chiama
upload-attachmentsolo conmimeTypeefileName(per esempioimage/pngedog.png). La risposta è un caricamento preparato, non un file già salvato: -
Sostituisci
LOCAL_FILE_PATHinuploadCommandcon il percorso assoluto del tuo file ed esegui esattamente quel comando nella shell: deve terminare con codice 0. Il token insignedUrlautorizza solo questo singolo caricamento. Saltare questo passaggio lascia lo storage vuoto e lo strumento di design non supera il controllo preliminare. -
Passa solo
{ id, path, type }nell’arrayattachmentsdiai-design-screens, nonsignedUrl,uploadCommandonextStep. Per inserire invece un’immagine nel tuo JSX, mettiassetUrlinimg srco inbg-[url(...)]del JSX che passi aadd-screen-jsxoreplace-screen-jsx. Vedi Immagini in JSX.
curl), poi segui gli stessi tre passaggi. Non passare mai un URL a upload-attachment.
Modalità B: testo breve (
text + mimeType)
Carica testo già presente nel contesto: non serve alcun comando di shell. La risposta è subito pronta all’uso:
Passa l’oggetto
{ id, path, type } risultante nell’array attachments di ai-design-screens.
La dimensione massima del file è 3 MB in entrambe le modalità, e i PDF sono limitati a 100 pagine.
Output: { id, path, assetUrl, type, mimeType, signedUrl?, uploadCommand?, nextStep? }.
type:"image"per i file immagine e"document"per PDF e file di testo.assetUrl: l’URL del file caricato, restituito in entrambe le modalità. Usalo nel JSX peradd-screen-jsxoreplace-screen-jsxsolo quandotypeè"image", e solo dopo che è stato eseguito iluploadCommanddella modalità A.signedUrl,uploadCommand,nextStep: impostati solo nella modalità A. Non passarli agli strumenti di design.
Strumenti per Figma
import-figma
Importa un frame Figma in un file Flowstep come elementi modificabili sul suo canvas. Ogni importazione aggiunge una nuova schermata: importare due volte lo stesso frame produce due schermate, quindi elimina quella vecchia con delete-screen se intendevi sostituirla. L’organizzazione del file deve avere Figma collegato nelle impostazioni di Flowstep.
Input
Output:
{ fileId, screenId, frameCount? }. screenId è la schermata importata: passala a get-screen-image per vedere il risultato. Quando un URL di pagina importa più frame, screenId è null e viene restituito frameCount: chiama list-screens, poi get-screen-image per ogni nuova schermata.
Strumenti per piano e fatturazione
get-plan-details
Ottieni il piano Flowstep della tua organizzazione, lo stato dell’abbonamento, l’utilizzo e la quota residua. Non richiede input: l’organizzazione viene risolta a partire dall’utente connesso. Usalo per verificare la tua quota prima di chiamare gli strumenti di design AI.
Output: { plan, subscription, limits, usage, remaining }.
I limiti variano in base al piano: vedi Prezzi e Limiti di utilizzo.
Strumenti di design AI
Questi tre strumenti progettano a partire da una descrizione o da un preset: non accettano né riutilizzano mai JSX. Ogni chiamata usa la stessa quota di messaggi dell’app Flowstep e attende il completamento della generazione o il timeout (180 secondi).
Tutti e tre restituiscono
{ status, fileId, screenIds, designGuidelinesUpdated }. Chiama get-screen-image una volta per ogni screenId per vedere il risultato.
designGuidelinesUpdated: un breve riepilogo della modifica, quando le linee guidaDESIGN.mddel file sono state aggiornate automaticamente durante questo turno; altrimentinull.
ai-design-screens
Genera una o più nuove schermate, modifica schermate esistenti in place, o entrambe le cose in una sola chiamata, a partire da una descrizione testuale: nuovi flussi, temi, testi, layout o modifiche coordinate su più schermate. È lo stesso agente di design della chat nell’editor di Flowstep: decide, in base al tuo message e a elementIds, cosa costruire e cosa cambiare.
Ometti fileId per avviare un nuovo file; passa fileId per lavorare in un file esistente. Se la richiesta potrebbe riguardare un file che hai già, il tuo agente dovrebbe prima controllare list-files e list-screens. Per una variante successiva, di errore o di stato vuoto, o di piattaforma di una schermata, usa ai-generate-screen-variant. Per un preset di modifica o riprogettazione di una schermata, usa ai-edit-screen-variant. Se hai già il JSX, usa invece add-screen-jsx o replace-screen-jsx.
Input
Esempio: modifica una schermata e aggiungine un’altra in un’unica chiamata:
{ status, fileId, screenIds, designGuidelinesUpdated, reply? }.
status:"generated"quando sono state costruite o modificate schermate."chat"quando Flowstep ha risposto senza costruire nulla: in quel casoreplycontiene la sua risposta escreenIdsè vuoto. Se la tua richiesta è ambigua, il tuo agente dovrebbe chiederti di chiarire e richiamare lo strumento.screenIds: ogni schermata costruita o modificata durante la chiamata, incluse quelle modificate in place. Se la chiamata scade dopo che alcune schermate sono state costruite, restituisce quelle schermate invece di un errore.
ai-generate-screen-variant
Aggiunge una nuova schermata derivata da esattamente una schermata esistente: il passo successivo del flusso, uno stato di errore o vuoto, oppure una versione per un’altra piattaforma. La schermata originale resta invariata. Per aggiungere una schermata che non è una variante di una esistente (per esempio una schermata delle impostazioni), usa ai-design-screens con un fileId.
Input
Output:
{ status, fileId, screenIds, designGuidelinesUpdated }. status è sempre "generated".
ai-edit-screen-variant
Modifica esattamente una schermata esistente in place usando un preset: applica un tema o una rifinitura, prova un layout o uno stile visivo diverso, oppure riprogettala da zero. Per nuove schermate, istruzioni libere o una modifica precisa di singoli elementi, usa ai-design-screens.
Input
Output:
{ status, fileId, screenIds, designGuidelinesUpdated }. status è sempre "generated".
Strumenti rinominati
I nomi di alcuni strumenti sono cambiati a settembre e ottobre 2026. Se hai prompt, script o istruzioni per agenti che usano i nomi precedenti, aggiornali:
Anche gli input sono cambiati: gli strumenti di design AI accettano
elementIds (oppure un singolo screenId per gli strumenti di variante) invece di targets; add-screen-jsx accetta jsx e campi di metadati espliciti invece di jsxContent con un commento di metadati; create-file accetta name invece di title; e gli strumenti per le linee guida di design accettano fileId invece di resourceId e linkedTo.