content de blocs de contenu MCP. Les outils texte retournent { type: "text", text: "<json-string>" }. Les outils image retournent { type: "image", data: "<base64>", mimeType: "image/png" }. En cas d’échec, isError: true est défini et le bloc texte contient le message d’erreur.
Outils fichier
list-files
Lister les fichiers Flowstep de l’utilisateur actuel.
Entrée
Sortie — Tableau JSON d’objets fichier.
get-file
Obtenir un fichier unique par ID. Le contenu du fichier est intentionnellement omis — utilisez get-screen ou get-screen-image pour inspecter les écrans et get-design-guidelines pour récupérer les directives jointes.
Entrée
Sortie — Objet fichier JSON.
create-file
Créer un nouveau fichier Flowstep.
Entrée
Sortie — Objet fichier JSON avec l’
id du nouveau fichier.
id retourné comme fileId dans les appels d’outils ultérieurs.
update-file
Renommer un fichier.
Entrée
Sortie — Objet fichier mis à jour avec la même forme que
get-file.
delete-file
Supprimer définitivement un fichier. Le name que vous transmettez est vérifié par rapport au nom réel du fichier avant la suppression — s’il ne correspond pas, la suppression est abandonnée. Cela empêche la suppression accidentelle du mauvais fichier.
Entrée
Sortie —
"File deleted successfully"
Outils écran
list-screens
Lister tous les écrans générés pour un fichier. Utilisez les valeurs screenId retournées pour référencer les écrans dans get-screen, get-screen-image et comme targets dans edit-design, regenerate-design ou expand-design.
Entrée
Sortie — Tableau JSON de résumés d’écran.
name est le nom d’écran assigné par l’utilisateur, ou null s’il n’est pas nommé.
get-screen
Obtenir le code JSX pour un écran permettant de modifier ou d’utiliser le code en dehors de Flowstep. Utilisez get-screen-image pour un aperçu visuel à la place.
Entrée
Sortie — L’écran en tant que code (JSX). Notez le commentaire de première ligne qui est requis lors de l’utilisation de l’outil
add-screen.
add-screen
Ajoute un nouvel écran à un fichier Flowstep à partir d’une chaîne JSX brute.
Entrée
Note - Un commentaire similaire à celui ci-dessous DOIT être présent en tant que première ligne du JSX car il est utilisé pour ajouter l’écran correctement.
screenType, name et screenId sont tous optionnels — screenId est utilisé (en interne) s’il est présent (par exemple lors de la transmission du JSX copié à partir de la sortie get-screen) mais n’est pas obligatoire. Le nom de l’écran est extrait du champ name du commentaire (affiché comme « Copy of <name> »), ou « Untitled » s’il est absent.
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" -->
Sortie — L’ID du nouvel écran ajouté.
get-screen-image
Rendre un écran à PNG et le retourner en tant qu’image en ligne. Nécessite un client qui prend en charge les blocs de contenu image.
Entrée
Sortie — Bloc de contenu image MCP (
image/png).
Outils IA
create-new-design
Générer un ou plusieurs designs d’écran à partir d’un prompt textuel. Omettez fileId pour créer automatiquement un nouveau fichier. Blocs jusqu’à ce que la génération se termine ou expire (180 secondes).
Entrée
Sortie —
{ fileId, screenIds, designGuidelinesUpdated }. Transmettez chaque screenId à get-screen-image pour afficher les résultats. designGuidelinesUpdated signale si les directives de conception du fichier ont été modifiées dans le cadre de cette génération.
regenerate-design
Refaire les écrans existants de zéro ou avec une variation de style. Nécessite au moins un screenId dans targets. Blocs jusqu’à ce que la génération se termine ou expire (180 secondes).
Entrée
Sortie —
{ fileId, screenIds, designGuidelinesUpdated }. Transmettez chaque screenId à get-screen-image pour afficher les résultats.
expand-design
Ajouter des écrans de suivi à un design existant. Nécessite au moins un screenId dans targets et un operationVariant obligatoire. Blocs jusqu’à ce que la génération se termine ou expire (180 secondes).
Entrée
Sortie —
{ fileId, screenIds, designGuidelinesUpdated }. Transmettez chaque screenId à get-screen-image pour afficher les résultats.
edit-design
Modifier les écrans existants via un prompt. Nécessite au moins un screenId dans targets. Blocs jusqu’à ce que la génération se termine ou expire (180 secondes).
Entrée
Sortie —
{ fileId, screenIds, designGuidelinesUpdated }. Transmettez chaque screenId à get-screen-image pour afficher les résultats.
upload-attachment
Télécharger un fichier à utiliser comme pièce jointe dans create-new-design ou edit-design (pas regenerate-design ou expand-design). Les octets du fichier ne passent jamais par le modèle, et le serveur ne récupère jamais les URL en votre nom.
Il y a deux modes — utilisez exactement un seul, et ne les combinez pas.
Mode A — fichiers et images (mimeType + fileName)
Un flux en trois étapes requis pour tout fichier image, PDF ou texte plus volumineux :
-
Appelez
upload-attachmentavec uniquementmimeTypeetfileName(par exempleimage/pngetdog.png). La réponse est un téléchargement préparé, pas un fichier stocké : -
Remplacez
LOCAL_FILE_PATHdansuploadCommandpar le chemin absolu de votre fichier et exécutez cette commande exacte dans votre shell — elle doit quitter 0. Le jeton danssignedUrlautorise uniquement ce seul téléchargement. Ignorer cette étape laisse le stockage vide et l’outil de conception échoue sa vérification préalable. -
Transmettez uniquement
{ id, path, type }dans le tableauattachmentsde l’outil de conception — passignedUrl,uploadCommandounextStep.
curl), puis suivez les mêmes trois étapes. Ne transmettez jamais une URL à upload-attachment.
Mode B — texte court (
text + mimeType)
Télécharger du texte déjà en contexte — aucune commande shell nécessaire. La réponse est prête à être utilisée directement :
Transmettez le
{ id, path, type } résultant dans le tableau attachments de create-new-design ou edit-design.
La taille maximale du fichier est 3 Mo sur les deux modes, et les PDF sont limités à 100 pages. type est "image" pour les fichiers image et "document" pour les PDF et fichiers texte.
Outils de chat
get-chat-history
Obtenir l’historique des messages de chat pour un fichier.
Entrée
Sortie — Objet JSON avec un tableau
messages. Chaque message a un type ("request" ou "response"), author ("human" ou "ai") et content_type ("text", "summary" ou "followup").
Outils de conception
get-design-guidelines
Obtenir les directives de conception stockées pour un fichier.
Entrée
Sortie
guidelines est null si aucune directive n’a été définie.
update-design-guidelines
Définir ou remplacer les directives de conception pour un fichier. Les directives sont transmises en tant que chaîne de texte brut au format design.md de Google — ne transmettez pas un objet ou JSON.
Le serveur effectue une validation logicielle et peut retourner une section Warnings: dans la réponse listant les problèmes (clés inconnues, couleurs non-hex) qui ont été acceptés mais peuvent être ignorés par l’IA. Surfacez-les à l’utilisateur.
Entrée
Règles de validation
- Le préambule doit être ouvert et fermé correctement
- Les lignes du préambule doivent être du YAML valide de style bloc
- Le corps Markdown ne doit pas contenir les rubriques en double
##
"Design guidelines updated successfully", éventuellement suivie d’une section Warnings:.
delete-design-guidelines
Effacer les directives de conception pour un fichier.
Entrée
Sortie —
"Design guidelines deleted successfully"
Outils Figma
import-figma
Importer une frame Figma dans un fichier Flowstep en tant qu’éléments modifiables sur son canevas. Ré-importer la même frame la met à jour sur place. L’organisation du fichier doit d’abord avoir Figma connecté dans les paramètres Flowstep.
Entrée
Sortie —
{ fileId, screenId }. screenId est l’id de l’élément d’écran importé — transmettez-le à get-screen-image pour afficher le résultat. Quand une URL de page importe plusieurs frames, screenId est null et frameCount est retourné à la place.