get-screen-image het resultaat twee keer: als structuredContent (gevalideerd tegen het gepubliceerde uitvoerschema van de tool) en als hetzelfde object geserialiseerd in een tekstblok, { type: "text", text: "<json-string>" }, voor clients die geen gestructureerde content lezen. get-screen-image retourneert alleen een MCP-afbeeldingsblok: { type: "image", data: "<base64>", mimeType: "image/png" }.
Bij een fout wordt isError: true ingesteld en bevat het tekstblok een korte foutmelding. Fouten waarop je kunt handelen, zoals een naamsverschil bij verwijderen, een ongeldige Figma-link, ongeldige ontwerprichtlijnen, een bijlageprobleem of een generatietime-out, leggen uit wat je moet oplossen. Andere fouten geven een algemene melding, zoals Failed to list files.
Prijzen: de drie AI-ontwerptools, namelijk
ai-design-screens, ai-generate-screen-variant en ai-edit-screen-variant, gebruiken hetzelfde berichtenquotum als de Flowstep-app. Alle andere tools zijn gratis. Zie Gebruikslimieten.delete-file, delete-screen, delete-design-guidelines, replace-screen-jsx, ai-design-screens en ai-edit-screen-variant zijn als destructief gemarkeerd, omdat ze bestaande content verwijderen of overschrijven.
Bestandstools
list-files
Toon metadata van je Flowstep-bestanden. Roep dit eerst aan om te controleren of er al een relevant bestand bestaat. Het retourneert geen schermcontent. Gebruik daarvoor get-screen-image of get-screen-jsx.
Invoer
Uitvoer:
{ files }.
owner:trueals je het bestand hebt aangemaakt.shared_with_me:trueals het bestand rechtstreeks met je is gedeeld en niet alleen via je organisatie.url: opent het bestand in de Flowstep-editor.
get-file
Haal metadata op van één bestand. Bestandscontent is bewust weggelaten. Gebruik get-screen-image of get-screen-jsx om schermen te bekijken, en get-design-guidelines om gekoppelde richtlijnen op te halen. Als je een openstaande uitnodiging voor het bestand hebt, accepteert get-file die wanneer je het aanroept.
Invoer
Uitvoer:
{ file, user_access_level }.
access_level:private,readofwrite.visibility:private,memberofpublic.user_access_level: jouw toegang tot het bestand,readofwrite.
create-file
Maak een leeg Flowstep-bestand zonder schermen aan. Om een bestand aan te maken en in één stap schermen te genereren, roep je in plaats daarvan ai-design-screens aan zonder fileId. Gebruik create-file voor code-first-workflows, gevolgd door add-screen-jsx.
Invoer
Uitvoer:
{ file, user_access_level }, in dezelfde vorm als get-file. owner is altijd true en user_access_level is altijd write.
Gebruik de teruggegeven file.id als fileId in volgende toolaanroepen.
update-file
Hernoem een bestand.
Invoer
Uitvoer:
{ file, user_access_level }, in dezelfde vorm als get-file.
delete-file
Verwijder een bestand definitief. De name die je meegeeft, wordt vergeleken met de huidige weergavenaam van het bestand voordat het wordt verwijderd. Komt die niet overeen, dan wordt het verwijderen afgebroken. Zo voorkom je dat je per ongeluk het verkeerde bestand verwijdert. Agents worden geïnstrueerd je eerst om bevestiging te vragen.
Invoer
Uitvoer:
{ "deleted": true }
Schermtools
list-screens
Toon de schermen in een bestand, in canvasvolgorde. Roep dit aan na list-files om te zien wat er al in een bestand staat. Gebruik de teruggegeven screenId-waarden met de andere schermtools en de AI-ontwerptools.
Invoer
Uitvoer:
{ screens }.
prompt: de laatste generatieprompt voor het scherm, of een lege string als het nooit is gegenereerd (bijvoorbeeld een scherm dat metadd-screen-jsxis toegevoegd).fidelity:lofi,hifiofui.
get-screen-image
Render een scherm naar PNG en retourneer het als inline afbeelding. Vereist een client die afbeeldingsblokken ondersteunt. Roep de tool eenmaal aan voor elke screenId die wordt teruggegeven door een AI-ontwerptool, add-screen-jsx, replace-screen-jsx of import-figma.
Invoer
Uitvoer: MCP-afbeeldingscontentblok (
image/png). data is standaard base64 van de PNG-bytes, geen data-URI. Er is geen structuredContent voor deze tool.
get-screen-jsx
Haal een scherm op als JSX, plus de metadata. Zo kun je erop bouwen in je codebase, of het bewerken en terugschrijven met replace-screen-jsx. Gebruik get-screen-image voor een visuele preview.
Invoer
Uitvoer:
{ fileId, screenId, name, prompt, fidelity, screenType, colorTheme, jsx, fragments }.
jsx: alleen opmaak.data-id-attributen worden alleen opgenomen alsincludeIdstrueis.prompt: de laatste generatieprompt, of een lege string als het scherm nooit is gegenereerd.fragments: gedeelde chrome die op het scherm is opgeslagen, zoals een navigatiebalk, header of logo, als{ purpose, markup }-objecten. Leeg als er geen zijn. Geef ze terug aanreplace-screen-jsxom ze te behouden of bij te werken.
fidelity, screenType en colorTheme.
add-screen-jsx
Voeg een nieuw scherm toe aan een bestand vanuit JSX die je zelf hebt geschreven. Dit is het code-first-pad en is gratis. Gebruik ai-design-screens als je wilt dat de AI van Flowstep het scherm ontwerpt. add-screen-jsx maakt altijd een nieuw scherm aan. Om een bestaand scherm te overschrijven, gebruik je replace-screen-jsx.
Om een afbeelding te tonen die je hebt geüpload, zie Afbeeldingen in JSX.
Als het nieuwe scherm is gebaseerd op een bestaand scherm, begin dan met get-screen-jsx (zonder includeIds) voor name, fidelity, screenType, colorTheme en jsx. Pas daarna aan wat anders moet zijn.
Invoer
Uitvoer:
{ fileId, screenId }. Roep get-screen-image aan met screenId om het resultaat te bekijken.
replace-screen-jsx
Overschrijf een bestaand scherm met JSX die je zelf hebt geschreven. Het scherm behoudt zijn screenId en zijn positie op het canvas. Geneste elementen krijgen nieuwe id’s. Dit is het code-first-pad en is gratis. Gebruik ai-design-screens of ai-edit-screen-variant voor AI-wijzigingen, en add-screen-jsx om in plaats daarvan een nieuw scherm aan te maken.
Begin met get-screen-jsx (zonder includeIds) en pas daarna aan wat anders moet zijn. Om een afbeelding te tonen die je hebt geüpload, zie Afbeeldingen in JSX.
Invoer
Uitvoer:
{ fileId, screenId }. Roep get-screen-image aan met screenId om het resultaat te bekijken.
rename-screen
Hernoem het canvaslabel van een scherm, de naam die wordt getoond door list-screens en in de editor. Dit wijzigt alleen het label, niet de lay-out, grootte of inhoud van het scherm. Gebruik daarvoor ai-design-screens.
Invoer
Uitvoer:
{ screenId, name }.
delete-screen
Verwijder een scherm definitief uit een bestand. De name die je meegeeft, wordt vergeleken met de huidige weergavenaam van het scherm. Komt die niet overeen, dan wordt het verwijderen afgebroken. Agents worden geïnstrueerd je eerst om bevestiging te vragen.
Invoer
Uitvoer:
{ "deleted": true }
Afbeeldingen in JSX
add-screen-jsx en replace-screen-jsx accepteren afbeeldingen in een img-src, of als achtergrond in className met bg-[url(...)]. Schrijf alt-tekst en stel de grootte van elke afbeelding af op het doel ervan.
Zo plaats je een eigen afbeelding:
- Upload deze met
upload-attachmentin modus A (mimeType+fileName) en voer de teruggegevenuploadCommanduit. - Als het
typevan het antwoord"image"is, plak dan deassetUrlprecies zoals teruggegeven inimg srcofbg-[url(assetUrl)].
get-screen-jsx die heeft teruggegeven. Zet geen path, signedUrl of uploadCommand in src.
Schermveldwaarden
get-screen-jsx retourneert deze waarden, en add-screen-jsx en replace-screen-jsx accepteren ze:
Ontwerprichtlijnentools
Ontwerprichtlijnen zijnDESIGN.md-tekst die aan een bestand is opgeslagen. Wanneer ze zijn ingesteld, worden ze in elke AI-generatie voor dat bestand geïnjecteerd. Zie Ontwerprichtlijnen.
get-design-guidelines
Haal de ontwerprichtlijnen op die aan een bestand zijn gekoppeld.
Invoer
Uitvoer:
{ guidelines }.
guidelines is null als er geen richtlijnen zijn ingesteld.
update-design-guidelines
Stel de ontwerprichtlijnen voor een bestand in of vervang ze. Geef de richtlijnen als gewone tekenreeks op in Google’s DESIGN.md-formaat, niet als object of JSON. Als je uit een bestand leest, geef dan de tekst van dat bestand mee.
Invoer
Validatieregels
- Frontmatter moet correct worden geopend en gesloten
- Frontmatter-regels moeten geldige YAML in blokstijl zijn
- De markdown-body mag geen dubbele
##-sectiekoppen bevatten
Invalid design guidelines:.
Uitvoer: { updated, warnings? }.
warnings somt zachte validatieproblemen op, zoals onbekende sleutels en niet-hexkleuren. Die zijn geaccepteerd, maar de AI negeert ze mogelijk. Het veld ontbreekt wanneer er geen zijn. Geef deze waarschuwingen door aan de gebruiker.
delete-design-guidelines
Wis de ontwerprichtlijnen voor een bestand. Het verwijderen van richtlijnen die niet bestaan, heeft geen effect.
Invoer
Uitvoer:
{ "deleted": true }
Chattools
get-chat-history
Haal het ontwerpgesprek op dat bij een bestand hoort. Dat is de Flowstep-chat van het bestand, niet het gesprek van je MCP-client. Gebruik het om eerder werk aan het bestand te hervatten.
Invoer
Uitvoer:
{ messages }. messages is leeg als je geen ontwerpgesprek op het bestand hebt. Elk bericht heeft een type ("request" of "response"), een author ("human" of "ai") en een content_type. Responsberichten gebruiken "text", "summary" of "followup".
Bijlagetools
upload-attachment
Upload een referentiebestand om te gebruiken als bijlage in ai-design-screens, of een afbeelding om in je eigen JSX te plaatsen met add-screen-jsx of replace-screen-jsx. ai-generate-screen-variant en ai-edit-screen-variant accepteren geen bijlagen. Bestandsbytes gaan nooit door het model, en de server haalt nooit URL’s namens jou op. Om naar een webpagina te verwijzen, neem je de URL op in het message van ai-design-screens.
Er zijn twee modi. Gebruik er precies één en combineer ze niet.
Modus A: bestanden en afbeeldingen (mimeType + fileName)
Een verplichte stroom van drie stappen voor elke afbeelding, pdf of groter tekstbestand:
-
Roep
upload-attachmentaan met alleenmimeTypeenfileName(bijvoorbeeldimage/pngendog.png). Het antwoord is een voorbereide upload, geen opgeslagen bestand: -
Vervang
LOCAL_FILE_PATHinuploadCommanddoor het absolute pad naar je bestand en voer dat exacte commando uit in je shell. Het moet met status 0 afsluiten. Het token insignedUrlautoriseert alleen deze ene upload. Als je deze stap overslaat, blijft de opslag leeg en faalt de ontwerptool bij de preflight-controle. -
Geef alleen
{ id, path, type }door aan deattachments-array vanai-design-screens. GeefsignedUrl,uploadCommandofnextStepniet door. Om een afbeelding in je eigen JSX te plaatsen, zet je deassetUrlin deimg srcofbg-[url(...)]van de JSX die je doorgeeft aanadd-screen-jsxofreplace-screen-jsx. Zie Afbeeldingen in JSX.
curl). Volg daarna dezelfde drie stappen. Geef nooit een URL aan upload-attachment.
Modus B: korte tekst (
text + mimeType)
Upload tekst die al in de context staat. Er is geen shell-commando nodig. Het antwoord is direct bruikbaar:
Geef de teruggegeven
{ id, path, type } door aan de attachments-array van ai-design-screens.
De maximale bestandsgrootte is 3 MB in beide modi, en pdf’s zijn beperkt tot 100 pagina’s.
Uitvoer: { id, path, assetUrl, type, mimeType, signedUrl?, uploadCommand?, nextStep? }.
type:"image"voor afbeeldingsbestanden en"document"voor pdf’s en tekstbestanden.assetUrl: de URL van het geüploade bestand, in beide modi teruggegeven. Gebruik deze in JSX vooradd-screen-jsxofreplace-screen-jsxalleen wanneertype"image"is, en pas nadat hetuploadCommandvan modus A is uitgevoerd.signedUrl,uploadCommand,nextStep: alleen ingesteld in modus A. Geef ze niet door aan ontwerptools.
Figma-tools
import-figma
Importeer een Figma-frame in een Flowstep-bestand als bewerkbare elementen op het canvas. Elke import voegt een nieuw scherm toe. Als je hetzelfde frame twee keer importeert, krijg je twee schermen. Verwijder het oude scherm met delete-screen als je het wilde vervangen. De organisatie van het bestand moet Figma hebben gekoppeld in de Flowstep-instellingen.
Invoer
Uitvoer:
{ fileId, screenId, frameCount? }. screenId is het geïmporteerde scherm. Geef het door aan get-screen-image om het resultaat te bekijken. Wanneer een pagina-URL meerdere frames importeert, is screenId null en wordt in plaats daarvan frameCount teruggegeven. Roep dan list-screens aan en daarna get-screen-image voor elk nieuw scherm.
Abonnements- en factureringstools
get-plan-details
Haal het Flowstep-abonnement, de abonnementsstatus, het gebruik en het resterende quotum van je organisatie op. Deze tool heeft geen invoer. De organisatie wordt bepaald op basis van de ingelogde gebruiker. Gebruik de tool om je quotum te controleren voordat je de AI-ontwerptools aanroept.
Uitvoer: { plan, subscription, limits, usage, remaining }.
Limieten verschillen per abonnement. Zie Prijzen en Gebruikslimieten.
AI-ontwerptools
Deze drie tools ontwerpen op basis van een beschrijving of voorinstelling. Ze nemen of hergebruiken nooit JSX. Elke aanroep gebruikt hetzelfde berichtenquotum als de Flowstep-app. De aanroep blokkeert tot de generatie klaar is of een time-out bereikt (180 seconden).
Alle drie retourneren
{ status, fileId, screenIds, designGuidelinesUpdated }. Roep get-screen-image eenmaal aan voor elke screenId om het resultaat te zien.
designGuidelinesUpdated: een korte samenvatting van de wijziging wanneer deDESIGN.md-richtlijnen van het bestand tijdens deze beurt automatisch zijn bijgewerkt. Anders is de waardenull.
ai-design-screens
Genereer in één aanroep een of meer nieuwe schermen, wijzig bestaande schermen ter plekke, of beide, op basis van een tekstbeschrijving. Denk aan nieuwe flows, thema’s, tekst, lay-out of gecoördineerde wijzigingen over meerdere schermen. Dit is dezelfde ontwerpagent als de chat in de Flowstep-editor: op basis van je message en elementIds bepaalt hij wat hij bouwt en wat hij wijzigt.
Laat fileId weg om een nieuw bestand te starten. Geef fileId mee om in een bestaand bestand te werken. Als het verzoek op een bestand kan slaan dat je al hebt, moet je agent eerst list-files en list-screens controleren. Voor een volgende-stap-, fout- of lege-statusvariant, of een platformvariant van één scherm, gebruik je ai-generate-screen-variant. Voor een voorinstelling-bewerking of herontwerp van één scherm gebruik je ai-edit-screen-variant. Heb je al JSX, gebruik dan add-screen-jsx of replace-screen-jsx.
Invoer
Voorbeeld: bewerk één scherm en voeg in één aanroep een ander toe:
{ status, fileId, screenIds, designGuidelinesUpdated, reply? }.
status:"generated"wanneer schermen zijn gebouwd of gewijzigd."chat"wanneer Flowstep heeft geantwoord zonder te bouwen. In dat geval bevatreplyhet antwoord en isscreenIdsleeg. Is je opdracht onduidelijk, dan moet je agent je om verduidelijking vragen en de tool daarna opnieuw aanroepen.screenIds: elk scherm dat tijdens de aanroep is gebouwd of gewijzigd, inclusief schermen die ter plekke zijn bewerkt. Als de aanroep na een time-out een aantal schermen heeft gebouwd, retourneert hij die schermen in plaats van een fout.
ai-generate-screen-variant
Voeg een nieuw scherm toe dat is afgeleid van precies één bestaand scherm. Dat kan de volgende stap in de flow zijn, een fout- of lege status, of een versie voor een ander platform. Het oorspronkelijke scherm blijft ongewijzigd. Om een scherm toe te voegen dat geen variant van een bestaand scherm is, bijvoorbeeld een instellingenscherm, gebruik je ai-design-screens met een fileId.
Invoer
Uitvoer:
{ status, fileId, screenIds, designGuidelinesUpdated }. status is altijd "generated".
ai-edit-screen-variant
Wijzig precies één bestaand scherm ter plekke met een voorinstelling. Je kunt het thema aanpassen of polijsten, een andere lay-out of visuele stijl proberen, of het helemaal opnieuw ontwerpen. Voor nieuwe schermen, vrije instructies of een precieze bewerking van afzonderlijke elementen gebruik je ai-design-screens.
Invoer
Uitvoer:
{ status, fileId, screenIds, designGuidelinesUpdated }. status is altijd "generated".
Hernoemde tools
Toolnamen zijn in september en oktober 2026 gewijzigd. Als je prompts, scripts of agentinstructies hebt die de oude namen gebruiken, werk ze dan bij:
De invoer is ook gewijzigd. De AI-ontwerptools nemen
elementIds (of een enkele screenId voor de variant-tools) in plaats van targets. add-screen-jsx neemt jsx en expliciete metadatavelden in plaats van jsxContent met een metadatacommentaar. create-file neemt name in plaats van title. De ontwerprichtlijnentools nemen fileId in plaats van resourceId en linkedTo.