मुख्य सामग्री पर जाएं
सफल होने पर, get-screen-image को छोड़कर हर टूल अपना परिणाम दो बार लौटाता है: structuredContent के रूप में (जो टूल के प्रकाशित आउटपुट स्कीमा के विरुद्ध मान्य होता है), और उसी ऑब्जेक्ट को एक टेक्स्ट ब्लॉक में सीरियलाइज़ करके, { type: "text", text: "<json-string>" } के रूप में, उन क्लाइंट्स के लिए जो structured content नहीं पढ़ते। get-screen-image केवल एक MCP इमेज ब्लॉक लौटाता है: { type: "image", data: "<base64>", mimeType: "image/png" }। विफल होने पर isError: true सेट होता है और टेक्स्ट ब्लॉक में एक छोटा error मैसेज होता है। जिन errors पर आप कार्रवाई कर सकते हैं, जैसे delete में नाम का मेल न खाना, अमान्य Figma लिंक, अमान्य डिज़ाइन गाइडलाइन्स, attachment की समस्या, या जनरेशन टाइम आउट, वे बताते हैं कि क्या ठीक करना है। बाकी विफलताएँ Failed to list files जैसा सामान्य मैसेज लौटाती हैं।
मूल्य निर्धारण: तीन AI डिज़ाइन टूल्स, यानी ai-design-screens, ai-generate-screen-variant, और ai-edit-screen-variant, Flowstep ऐप की उसी मैसेज सीमा से उपयोग होते हैं। बाकी सभी टूल्स मुफ़्त हैं। देखें Usage limits.
हर टूल MCP annotations भी प्रकाशित करता है ताकि आपका क्लाइंट जान सके कि वह क्या करता है। delete-file, delete-screen, delete-design-guidelines, replace-screen-jsx, ai-design-screens, और ai-edit-screen-variant को destructive चिह्नित किया गया है, क्योंकि वे मौजूदा सामग्री हटाते या ओवरराइट करते हैं।

फ़ाइल टूल्स

list-files

आपकी Flowstep फ़ाइलों की metadata सूचीबद्ध करें। यह पता लगाने के लिए पहले इसे कॉल करें कि कोई संबंधित फ़ाइल पहले से मौजूद है या नहीं। इससे कोई स्क्रीन सामग्री नहीं मिलती। उसके लिए get-screen-image या get-screen-jsx इस्तेमाल करें। इनपुट आउटपुट: { files }।
  • owner: true अगर फ़ाइल आपने बनाई है।
  • shared_with_me: true अगर फ़ाइल सीधे आपके साथ शेयर की गई थी, न कि केवल आपके संगठन के माध्यम से।
  • url: फ़ाइल को Flowstep एडिटर में खोलता है।

get-file

एक फ़ाइल की metadata प्राप्त करें। फ़ाइल की सामग्री जानबूझकर शामिल नहीं है। स्क्रीन जाँचने के लिए get-screen-image या get-screen-jsx इस्तेमाल करें, और जुड़ी गाइडलाइन्स पाने के लिए get-design-guidelines। अगर फ़ाइल के लिए आपका कोई लंबित invite है, तो get-file कॉल करने से वह स्वीकार हो जाता है। इनपुट आउटपुट: { file, user_access_level }।
  • access_level: private, read, या write।
  • visibility: private, member, या public।
  • user_access_level: फ़ाइल तक आपकी पहुँच: read या write।

create-file

बिना किसी स्क्रीन की एक खाली Flowstep फ़ाइल बनाएँ। एक चरण में फ़ाइल और स्क्रीन दोनों बनाने के लिए, इसके बजाय fileId के बिना ai-design-screens कॉल करें। कोड-फ़र्स्ट वर्कफ़्लो के लिए create-file इस्तेमाल करें, और उसके बाद add-screen-jsx। इनपुट आउटपुट: { file, user_access_level }, get-file के समान संरचना में। owner हमेशा true होता है और user_access_level हमेशा write। आगे के टूल कॉल में लौटाए गए file.id को fileId के रूप में इस्तेमाल करें।

update-file

फ़ाइल का नाम बदलें। इनपुट आउटपुट: { file, user_access_level }, get-file के समान संरचना में।

delete-file

फ़ाइल को स्थायी रूप से हटाएँ। हटाने से पहले आपके दिए name की जाँच फ़ाइल के वर्तमान प्रदर्शन नाम से होती है। अगर वह मेल नहीं खाता, तो हटाना रद्द हो जाता है। इससे गलत फ़ाइल हटने से बचाव होता है। एजेंट्स को निर्देश दिया गया है कि वे पहले आपसे पुष्टि करें। इनपुट आउटपुट: { "deleted": true }
यह अपरिवर्तनीय है। फ़ाइल की सभी स्क्रीन हट जाती हैं।

स्क्रीन टूल्स

list-screens

किसी फ़ाइल की स्क्रीन कैनवस क्रम में सूचीबद्ध करें। फ़ाइल में पहले से क्या है, यह देखने के लिए list-files के बाद इसे कॉल करें। लौटाए गए screenId मानों को अन्य स्क्रीन टूल्स और AI डिज़ाइन टूल्स के साथ इस्तेमाल करें। इनपुट आउटपुट: { screens }।
  • prompt: स्क्रीन के लिए आखिरी जनरेशन प्रॉम्प्ट, या अगर वह कभी जनरेट नहीं हुई तो खाली स्ट्रिंग (जैसे add-screen-jsx से जोड़ी गई स्क्रीन)।
  • fidelity: lofi, hifi, या ui।

get-screen-image

स्क्रीन को PNG में रेंडर करें और उसे इनलाइन इमेज के रूप में लौटाएँ। इसके लिए ऐसा क्लाइंट चाहिए जो इमेज कंटेंट ब्लॉक सपोर्ट करता हो। हर screenId के लिए इसे एक बार कॉल करें, जो किसी AI डिज़ाइन टूल, add-screen-jsx, replace-screen-jsx, या import-figma से लौटाया गया हो। इनपुट आउटपुट: MCP इमेज कंटेंट ब्लॉक (image/png)। data PNG बाइट्स का standard base64 है, data URI नहीं। इस टूल के लिए structuredContent नहीं है।

get-screen-jsx

स्क्रीन को उसकी metadata के साथ JSX के रूप में प्राप्त करें, ताकि आप उससे अपने कोडबेस में बना सकें, या उसे एडिट करके replace-screen-jsx से वापस लिख सकें। विज़ुअल पूर्वावलोकन के लिए get-screen-image इस्तेमाल करें। इनपुट आउटपुट: { fileId, screenId, name, prompt, fidelity, screenType, colorTheme, jsx, fragments }।
  • jsx: केवल मार्कअप। data-id attributes तभी शामिल होते हैं जब includeIds true हो।
  • prompt: आखिरी जनरेशन प्रॉम्प्ट, या अगर स्क्रीन कभी जनरेट नहीं हुई तो खाली स्ट्रिंग।
  • fragments: स्क्रीन पर संग्रहीत साझा क्रोम, जैसे nav bar, header, या logo, { purpose, markup } objects के रूप में। कोई न हो तो खाली। इन्हें replace-screen-jsx को वापस पास करें ताकि वे बने रहें या अपडेट हों।
fidelity, screenType, और colorTheme की वैल्यूज़ के लिए स्क्रीन फ़ील्ड मान देखें।

add-screen-jsx

आपके लिखे JSX से फ़ाइल में एक नई स्क्रीन जोड़ें। यह कोड-फ़र्स्ट तरीका है और मुफ़्त है। जब आप चाहें कि Flowstep का AI स्क्रीन डिज़ाइन करे, तब ai-design-screens इस्तेमाल करें। add-screen-jsx हमेशा एक नई स्क्रीन बनाता है। किसी मौजूदा स्क्रीन को ओवरराइट करने के लिए replace-screen-jsx इस्तेमाल करें। अपनी अपलोड की गई इमेज दिखाने के लिए, JSX में इमेज देखें। जब नई स्क्रीन किसी मौजूदा स्क्रीन पर आधारित हो, तो name, fidelity, screenType, colorTheme, और jsx के लिए get-screen-jsx (includeIds के बिना) से शुरू करें, फिर जो अलग होना चाहिए उसे बदलें। इनपुट आउटपुट: { fileId, screenId }। परिणाम देखने के लिए screenId के साथ get-screen-image कॉल करें।

replace-screen-jsx

अपने लिखे JSX से मौजूदा स्क्रीन को ओवरराइट करें। स्क्रीन अपनी screenId और कैनवस पर अपनी जगह रखती है। नेस्टेड एलिमेंट्स को नई ID मिलती हैं। यह कोड-फ़र्स्ट तरीका है और मुफ़्त है। AI बदलावों के लिए ai-design-screens या ai-edit-screen-variant इस्तेमाल करें, और नई स्क्रीन बनाने के लिए add-screen-jsx। get-screen-jsx (includeIds के बिना) से शुरू करें, फिर जो अलग होना चाहिए उसे बदलें। अपनी अपलोड की गई इमेज दिखाने के लिए, JSX में इमेज देखें। इनपुट आउटपुट: { fileId, screenId }। परिणाम देखने के लिए screenId के साथ get-screen-image कॉल करें।
यह स्क्रीन की सामग्री को उसी जगह बदल देता है।

rename-screen

स्क्रीन का कैनवस लेबल बदलें, यानी वह नाम जो list-screens में और एडिटर में दिखता है। यह केवल लेबल बदलता है, स्क्रीन का लेआउट, आकार या सामग्री नहीं। उनके लिए ai-design-screens इस्तेमाल करें। इनपुट आउटपुट: { screenId, name }।

delete-screen

फ़ाइल से स्क्रीन को स्थायी रूप से हटाएँ। आपके दिए name की जाँच स्क्रीन के वर्तमान प्रदर्शन नाम से होती है। अगर वह मेल नहीं खाता, तो हटाना रद्द हो जाता है। एजेंट्स को निर्देश दिया गया है कि वे पहले आपसे पुष्टि करें। इनपुट आउटपुट: { "deleted": true }

JSX में इमेज

add-screen-jsx और replace-screen-jsx इमेज को img के src में, या className में bg-[url(...)] के साथ बैकग्राउंड के रूप में स्वीकार करते हैं। alt टेक्स्ट लिखें, और हर इमेज का आकार उसके उद्देश्य के अनुसार तय करें। अपनी इमेज रखने के लिए:
  1. उसे upload-attachment से मोड A (mimeType + fileName) में अपलोड करें, और लौटे uploadCommand को चलाएँ।
  2. अगर जवाब का type "image" है, तो उसका assetUrl जैसा लौटाया गया है वैसा ही img src या bg-[url(assetUrl)] में चिपकाएँ।
बाकी सभी इमेज URLs को वैसा ही रखें जैसा get-screen-jsx ने लौटाया था। path, signedUrl, या uploadCommand को src में न डालें।

स्क्रीन फ़ील्ड मान

get-screen-jsx ये मान लौटाता है, और add-screen-jsx तथा replace-screen-jsx इन्हें स्वीकार करते हैं:

डिज़ाइन गाइडलाइन्स टूल्स

डिज़ाइन गाइडलाइन्स किसी फ़ाइल पर संग्रहीत DESIGN.md टेक्स्ट होती हैं। सेट होने पर, वे उस फ़ाइल की हर AI जनरेशन में डाली जाती हैं। देखें डिज़ाइन गाइडलाइन्स।

get-design-guidelines

किसी फ़ाइल से जुड़ी डिज़ाइन गाइडलाइन्स प्राप्त करें। इनपुट आउटपुट: { guidelines }।
अगर कोई गाइडलाइन्स सेट नहीं हुईं, तो guidelines null होता है।

update-design-guidelines

किसी फ़ाइल के लिए डिज़ाइन गाइडलाइन्स सेट करें या बदलें। गाइडलाइन्स को Google के DESIGN.md फ़ॉर्मेट में सादे स्ट्रिंग के रूप में पास करें, ऑब्जेक्ट या JSON के रूप में नहीं। अगर आप किसी फ़ाइल से पढ़ रहे हैं, तो उस फ़ाइल का टेक्स्ट पास करें। इनपुट सत्यापन नियम
  • Frontmatter सही तरह से खुलना और बंद होना चाहिए
  • Frontmatter की लाइनें वैध block-style YAML होनी चाहिए
  • Markdown बॉडी में डुप्लिकेट ## सेक्शन हेडिंग नहीं होने चाहिए
सत्यापन विफल होने पर, कॉल एक error लौटाती है जो Invalid design guidelines: से शुरू होता है। आउटपुट: { updated, warnings? }।
warnings उन soft-validation समस्याओं की सूची है (जैसे अज्ञात keys, गैर-hex रंग) जो स्वीकार कर ली गईं पर AI द्वारा अनदेखी हो सकती हैं। ये आपको दिखाई जानी चाहिए। कोई न हो तो यह फ़ील्ड छोड़ दिया जाता है।

delete-design-guidelines

किसी फ़ाइल की डिज़ाइन गाइडलाइन्स साफ़ करें। जो गाइडलाइन्स मौजूद नहीं हैं उन्हें हटाने का कोई असर नहीं होता। इनपुट आउटपुट: { "deleted": true }

चैट टूल्स

get-chat-history

किसी फ़ाइल से जुड़ी डिज़ाइन बातचीत प्राप्त करें। यह फ़ाइल की Flowstep चैट है, आपके MCP क्लाइंट की बातचीत नहीं। फ़ाइल पर पिछला काम फिर से शुरू करने के लिए इसे इस्तेमाल करें। इनपुट आउटपुट: { messages }। फ़ाइल पर आपकी कोई डिज़ाइन बातचीत न हो तो messages खाली होता है। हर मैसेज में type ("request" या "response"), author ("human" या "ai"), और content_type होता है। Response मैसेज "text", "summary", या "followup" उपयोग करते हैं।

अटैचमेंट टूल्स

upload-attachment

ai-design-screens में attachment के रूप में उपयोग करने के लिए एक संदर्भ फ़ाइल, या add-screen-jsx या replace-screen-jsx के साथ आपके अपने JSX में रखने के लिए एक इमेज अपलोड करें। ai-generate-screen-variant और ai-edit-screen-variant attachments नहीं लेते। फ़ाइल के bytes कभी मॉडल से होकर नहीं गुज़रते, और सर्वर आपकी ओर से URLs कभी नहीं लाता। किसी वेबपेज का संदर्भ देने के लिए, उसका URL ai-design-screens के message में शामिल करें। दो मोड हैं। एक ही इस्तेमाल करें, दोनों को मिलाएँ नहीं। मोड A: फ़ाइलें और इमेज (mimeType + fileName) किसी भी इमेज, PDF, या बड़ी टेक्स्ट फ़ाइल के लिए तीन चरणों वाला अनिवार्य फ़्लो:
  1. केवल mimeType और fileName के साथ upload-attachment कॉल करें (जैसे image/png और dog.png)। जवाब एक तैयार अपलोड है, संग्रहीत फ़ाइल नहीं:
  2. uploadCommand में LOCAL_FILE_PATH को अपनी फ़ाइल के absolute path से बदलें, और वह सटीक command अपने शेल में चलाएँ। उसका exit code 0 होना चाहिए। signedUrl का टोकन केवल इस एक अपलोड को अधिकृत करता है। यह चरण छोड़ने पर storage खाली रहता है और डिज़ाइन टूल का preflight check विफल हो जाता है।
  3. केवल { id, path, type } को ai-design-screens के attachments array में पास करें, signedUrl, uploadCommand, या nextStep नहीं। अपनी JSX में इमेज रखने के लिए, assetUrl को add-screen-jsx या replace-screen-jsx को पास किए JSX के img src या bg-[url(...)] में डालें। देखें JSX में इमेज।
किसी रिमोट फ़ाइल को attach करने के लिए, पहले उसे अपने लोकल path पर डाउनलोड करें (उदाहरण के लिए curl से), फिर वही तीन चरण अपनाएँ। upload-attachment को कभी URL न दें। मोड B: छोटा टेक्स्ट (text + mimeType) ऐसा टेक्स्ट अपलोड करें जो पहले से संदर्भ में है। इसके लिए शेल command की ज़रूरत नहीं। जवाब सीधे उपयोग के लिए तैयार है:
ai-design-screens के attachments array में लौटाए गए { id, path, type } पास करें। दोनों मोड मिलाकर अधिकतम फ़ाइल आकार 3 MB है, और PDF 100 पेज तक सीमित हैं। आउटपुट: { id, path, assetUrl, type, mimeType, signedUrl?, uploadCommand?, nextStep? }।
  • type: इमेज फ़ाइलों के लिए "image", और PDF व टेक्स्ट फ़ाइलों के लिए "document"।
  • assetUrl: अपलोड की गई फ़ाइल का URL, जो दोनों मोड में लौटता है। इसे add-screen-jsx या replace-screen-jsx के JSX में केवल तब इस्तेमाल करें जब type "image" हो, और केवल मोड A का uploadCommand चलने के बाद।
  • signedUrl, uploadCommand, nextStep: केवल मोड A में सेट होते हैं। इन्हें डिज़ाइन टूल्स में पास न करें।

Figma टूल्स

import-figma

Figma फ़्रेम को Flowstep फ़ाइल में उसके कैनवस पर एडिट करने योग्य एलिमेंट्स के रूप में इंपोर्ट करें। हर इंपोर्ट एक नई स्क्रीन जोड़ता है। एक ही फ़्रेम दो बार इंपोर्ट करने से आपको दो स्क्रीन मिलती हैं, इसलिए अगर आप किसी को बदलना चाहते थे तो पुरानी को delete-screen से हटाएँ। फ़ाइल के संगठन में Flowstep सेटिंग्स में Figma कनेक्टेड होना चाहिए। इनपुट आउटपुट: { fileId, screenId, frameCount? }। screenId वह इंपोर्ट की गई स्क्रीन है। परिणाम देखने के लिए इसे get-screen-image को पास करें। जब पेज URL कई फ़्रेम इंपोर्ट करता है, तो screenId null होता है और उसके बजाय frameCount लौटता है। फिर list-screens कॉल करें, और हर नई स्क्रीन के लिए get-screen-image।

प्लान और बिलिंग टूल्स

get-plan-details

आपके संगठन का Flowstep प्लान, सब्सक्रिप्शन स्थिति, उपयोग और बची हुई कोटा प्राप्त करें। इसे कोई इनपुट नहीं चाहिए। संगठन साइन-इन उपयोगकर्ता से तय होता है। AI डिज़ाइन टूल्स कॉल करने से पहले अपनी सीमा जाँचने के लिए इसे इस्तेमाल करें। आउटपुट: { plan, subscription, limits, usage, remaining }। सीमाएँ प्लान के अनुसार बदलती हैं। देखें मूल्य निर्धारण और Usage limits।

AI डिज़ाइन टूल्स

ये तीन टूल्स विवरण या प्रीसेट से डिज़ाइन करते हैं। वे कभी JSX नहीं लेते या दोबारा इस्तेमाल नहीं करते। हर कॉल Flowstep ऐप की उसी मैसेज सीमा से उपयोग होती है, और जनरेशन पूरी होने या टाइम आउट (180 सेकंड) होने तक रुकी रहती है। तीनों { status, fileId, screenIds, designGuidelinesUpdated } लौटाते हैं। परिणाम देखने के लिए हर screenId के लिए एक बार get-screen-image कॉल करें।
  • designGuidelinesUpdated: इस टर्न के दौरान फ़ाइल की DESIGN.md गाइडलाइन्स अपने-आप अपडेट होने पर बदलाव का संक्षिप्त सारांश; अन्यथा null।

ai-design-screens

टेक्स्ट विवरण से एक या अधिक नई स्क्रीन जनरेट करें, मौजूदा स्क्रीन को जगह पर बदलें, या एक ही कॉल में दोनों करें। इसमें नए फ़्लो, थीमिंग, कॉपी, लेआउट, या कई स्क्रीन में समन्वित बदलाव शामिल हैं। यह Flowstep एडिटर की चैट वाला वही डिज़ाइन एजेंट है: यह आपके message और elementIds से तय करता है कि क्या बनाना है और क्या बदलना है। नई फ़ाइल शुरू करने के लिए fileId छोड़ें; किसी मौजूदा फ़ाइल में काम करने के लिए fileId पास करें। अगर अनुरोध किसी ऐसी फ़ाइल पर लागू हो सकता है जो आपके पास पहले से है, तो आपके एजेंट को पहले list-files और list-screens जाँचने चाहिए। किसी एक स्क्रीन के अगले चरण, एरर या एम्प्टी स्टेट, या प्लेटफ़ॉर्म वेरिएंट के लिए ai-generate-screen-variant इस्तेमाल करें। किसी एक स्क्रीन के प्रीसेट एडिट या री-डिज़ाइन के लिए ai-edit-screen-variant इस्तेमाल करें। अगर आपके पास पहले से JSX है, तो इसके बजाय add-screen-jsx या replace-screen-jsx इस्तेमाल करें। इनपुट उदाहरण: एक कॉल में एक स्क्रीन एडिट करें और दूसरी जोड़ें:
आउटपुट: { status, fileId, screenIds, designGuidelinesUpdated, reply? }।
  • status: स्क्रीन बनने या बदलने पर "generated"। "chat" तब होता है जब Flowstep बिना बनाए जवाब देता है, और उस स्थिति में जवाब reply में होता है और screenIds खाली होता है। अगर आपका निर्देश अस्पष्ट है, तो आपका एजेंट आपसे स्पष्टीकरण माँगे और टूल फिर से कॉल करे।
  • screenIds: कॉल के दौरान बनी या बदली गई हर स्क्रीन, जिसमें जगह पर एडिट की गई स्क्रीन भी शामिल हैं। अगर कॉल टाइम आउट होने से पहले कुछ स्क्रीन बन चुकी हों, तो एरर के बजाय वे स्क्रीन लौटाई जाती हैं।
जिन स्क्रीन को आप एडिट करने के लिए कहते हैं, वे जगह पर ओवरराइट हो जाती हैं।

ai-generate-screen-variant

एक मौजूदा स्क्रीन से पूरी तरह व्युत्पन्न एक नई स्क्रीन जोड़ें: फ़्लो का अगला चरण, एक एरर या एम्प्टी स्टेट, या किसी दूसरे प्लेटफ़ॉर्म का संस्करण। मूल स्क्रीन अपरिवर्तित रहती है। ऐसी स्क्रीन जोड़ने के लिए जो किसी मौजूदा स्क्रीन का वेरिएंट न हो (जैसे सेटिंग्स स्क्रीन), fileId के साथ ai-design-screens इस्तेमाल करें। इनपुट आउटपुट: { status, fileId, screenIds, designGuidelinesUpdated }। status हमेशा "generated" होता है।

ai-edit-screen-variant

एक मौजूदा स्क्रीन को प्रीसेट का उपयोग करके जगह पर बदलें: उसकी थीम या पॉलिश बदलें, अलग लेआउट या विज़ुअल स्टाइल आज़माएँ, या उसे शुरू से री-डिज़ाइन करें। नई स्क्रीन, मुक्त-रूप निर्देशों, या किसी एलिमेंट में सटीक बदलाव के लिए ai-design-screens इस्तेमाल करें। इनपुट आउटपुट: { status, fileId, screenIds, designGuidelinesUpdated }। status हमेशा "generated" होता है।
यह स्क्रीन की सामग्री को उसी जगह ओवरराइट करता है।

नाम बदले गए टूल्स

सितंबर और अक्टूबर 2026 में टूल नाम बदले गए। अगर आपके प्रॉम्प्ट, स्क्रिप्ट, या एजेंट निर्देश पुराने नाम इस्तेमाल करते हैं, तो उन्हें अपडेट करें: इनपुट भी बदले हैं: AI डिज़ाइन टूल्स targets की जगह elementIds (या वेरिएंट टूल्स के लिए एक screenId) लेते हैं, add-screen-jsx jsxContent और metadata comment की जगह jsx और स्पष्ट metadata फ़ील्ड लेता है, create-file title की जगह name लेता है, और डिज़ाइन गाइडलाइन्स टूल्स resourceId और linkedTo की जगह fileId लेते हैं।