الانتقال إلى المحتوى الرئيسي
عند النجاح، تُعيد كل أداة باستثناء get-screen-image نتيجتها مرتين: كـ structuredContent (يُتحقق منه مقابل مخطط المخرجات المنشور للأداة)، وككائن نفسه مُسلسَل في كتلة نصية، { type: "text", text: "<json-string>" }، وذلك للعملاء التي لا تقرأ المحتوى المنظّم. أما get-screen-image فتُعيد كتلة صورة MCP فقط: { type: "image", data: "<base64>", mimeType: "image/png" }. عند الفشل، تُضبط isError: true وتحتوي الكتلة النصية على رسالة خطأ قصيرة. تشرح الأخطاء التي يمكنك التصرف بناءً عليها، مثل عدم تطابق الاسم عند الحذف، أو رابط Figma غير صالح، أو إرشادات تصميم غير صالحة، أو مشكلة في مرفق، أو انتهاء مهلة التوليد، ما يجب إصلاحه. أما الإخفاقات الأخرى فتُعيد رسالة عامة مثل Failed to list files.
التسعير: تستخدم أدوات التصميم بالذكاء الاصطناعي الثلاث، وهي ai-design-screens وai-generate-screen-variant وai-edit-screen-variant، حصة الرسائل نفسها التي يستخدمها تطبيق Flowstep. جميع الأدوات الأخرى مجانية. راجع حدود الاستخدام.
تنشر كل أداة أيضًا تعليقات توضيحية (annotations) من MCP ليعرف عميلك ما تفعله. تُوسَم delete-file وdelete-screen وdelete-design-guidelines وreplace-screen-jsx وai-design-screens وai-edit-screen-variant بأنها مدمّرة، لأنها تحذف محتوى موجودًا أو تكتب فوقه.

أدوات الملفات

list-files

اعرض البيانات الوصفية لملفات Flowstep الخاصة بك. استدعِ هذه الأداة أولًا للتحقق مما إذا كان هناك ملف ذو صلة موجود. لا تُعيد الأداة أي محتوى للشاشات، واستخدم get-screen-image أو get-screen-jsx لذلك. المدخلات المخرجات — { files }.
  • owner — true إذا كنت أنت من أنشأ الملف.
  • shared_with_me — true إذا شاركك أحد الملف مباشرةً، وليس فقط عبر مؤسستك.
  • url — يفتح الملف في محرر Flowstep.

get-file

اعرض البيانات الوصفية لملف واحد. يُستبعد محتوى الملف عمدًا: استخدم get-screen-image أو get-screen-jsx لفحص الشاشات، واستخدم get-design-guidelines لاسترجاع إرشادات التصميم المرفقة. إذا كانت لديك دعوة معلّقة للملف، فإن استدعاء get-file يقبلها. المدخلات المخرجات — { file, user_access_level }.
  • access_level — private أو read أو write.
  • visibility — private أو member أو public.
  • user_access_level — صلاحيتك على الملف: read أو write.

create-file

أنشئ ملف Flowstep فارغًا دون أي شاشات. لإنشاء ملف وتوليد شاشات في خطوة واحدة، استدعِ ai-design-screens دون fileId بدلًا من ذلك. استخدم 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 المُعادة مع أدوات الشاشات الأخرى وأدوات التصميم بالذكاء الاصطناعي. المدخلات المخرجات — { screens }.
  • prompt — آخر موجّه توليد للشاشة، أو نص فارغ إن لم تُولَّد قط (مثلًا شاشة أُضيفت باستخدام add-screen-jsx).
  • fidelity — lofi أو hifi أو ui.

get-screen-image

صيّر شاشة إلى PNG وأعِدها كصورة مضمّنة. تتطلب هذه الأداة عميلًا يدعم كتل الصور. استدعِ الأداة مرة واحدة لكل screenId تُعيده أداة تصميم بالذكاء الاصطناعي، أو add-screen-jsx، أو replace-screen-jsx، أو import-figma. المدخلات المخرجات — كتلة محتوى صورة MCP (image/png). قيمة data هي base64 قياسية لبايتات PNG، وليست URI للبيانات. لا يوجد structuredContent لهذه الأداة.

get-screen-jsx

احصل على شاشة كـ JSX، مع بياناتها الوصفية، لتبني منها في قاعدة الكود، أو لتعدّلها وتكتبها مرة أخرى باستخدام replace-screen-jsx. استخدم get-screen-image للمعاينة المرئية بدلًا من ذلك. المدخلات المخرجات — { fileId, screenId, name, prompt, fidelity, screenType, colorTheme, jsx, fragments }.
  • jsx — علامات الترميز فقط. تُضمَّن سمات data-id فقط عندما تكون includeIds مساوية لـ true.
  • prompt — آخر موجّه توليد، أو نص فارغ إن لم تُولَّد الشاشة قط.
  • fragments — عناصر الواجهة المشتركة المخزّنة على الشاشة، مثل شريط التنقل أو الترويسة أو الشعار، ككائنات { purpose, markup }. تكون فارغة إن لم توجد. مرّرها إلى replace-screen-jsx للاحتفاظ بها أو تحديثها.
راجع قيم حقول الشاشة للاطلاع على قيم fidelity وscreenType وcolorTheme.

add-screen-jsx

أضف شاشة جديدة إلى ملف من JSX كتبته. هذا هو المسار الذي يبدأ من الكود، وهو مجاني. استخدم ai-design-screens عندما تريد أن يصمم الذكاء الاصطناعي في Flowstep الشاشة. تُنشئ add-screen-jsx دائمًا شاشة جديدة: لكتابة فوق شاشة موجودة، استخدم replace-screen-jsx. لعرض صورة رفعتها، راجع الصور في JSX. إذا كانت الشاشة الجديدة مبنية على شاشة موجودة، فابدأ من get-screen-jsx (دون includeIds) للحصول على name وfidelity وscreenType وcolorTheme وjsx، ثم غيّر ما يجب أن يختلف. المدخلات المخرجات — { fileId, screenId }. استدعِ get-screen-image مع screenId لعرض النتيجة.

replace-screen-jsx

اكتب فوق شاشة موجودة بـ JSX كتبته. تحتفظ الشاشة بـ screenId وموقعها على اللوحة، وتحصل العناصر المتداخلة على معرّفات جديدة. هذا هو المسار الذي يبدأ من الكود، وهو مجاني. استخدم ai-design-screens أو ai-edit-screen-variant للتغييرات بالذكاء الاصطناعي، واستخدم add-screen-jsx لإنشاء شاشة جديدة بدلًا من ذلك. ابدأ من get-screen-jsx (دون includeIds)، ثم غيّر ما يجب أن يختلف. لعرض صورة رفعتها، راجع الصور في JSX. المدخلات المخرجات — { fileId, screenId }. استدعِ get-screen-image مع screenId لعرض النتيجة.
هذا يستبدل محتوى الشاشة في مكانه.

rename-screen

أعِد تسمية شاشة على اللوحة، أي الاسم الذي يظهر في list-screens وفي المحرر. يغيّر هذا التسمية فقط، ولا يغيّر تخطيط الشاشة أو حجمها أو محتواها، لذا استخدم ai-design-screens لذلك. المدخلات المخرجات — { screenId, name }.

delete-screen

احذف شاشة نهائيًا من ملف. يُفحص name الذي تمرره مقابل الاسم المعروض الحالي للشاشة، فإذا لم يتطابق يُلغى الحذف. يُوجَّه الوكلاء لتأكيد الأمر معك أولًا. المدخلات المخرجات — { "deleted": true }

الصور في JSX

يقبل add-screen-jsx وreplace-screen-jsx صورًا في src لعنصر img، أو كخلفية في className باستخدام bg-[url(...)]. اكتب نص alt لكل صورة، واضبط حجمها بما يناسب غرضها. لإضافة صورة من عندك:
  1. ارفعها باستخدام upload-attachment في الوضع A (mimeType + fileName)، ثم شغّل uploadCommand المُعاد.
  2. إذا كانت قيمة type في الاستجابة "image"، فضع assetUrl كما أُعيد تمامًا في img src أو bg-[url(assetUrl)].
أبقِ أي عنوان صورة آخر كما أعاده get-screen-jsx تمامًا. لا تضع path أو signedUrl أو uploadCommand في src.

قيم حقول الشاشة

تُعيد get-screen-jsx، ويقبل add-screen-jsx وreplace-screen-jsx، هذه القيم:

أدوات إرشادات التصميم

إرشادات التصميم نصّ بصيغة DESIGN.md مخزّن على ملف. عند ضبطها، تُدرج في كل توليد بالذكاء الاصطناعي لذلك الملف. راجع إرشادات التصميم.

get-design-guidelines

احصل على إرشادات التصميم المرفقة بملف. المدخلات المخرجات — { guidelines }.
تكون قيمة guidelines هي null إذا لم تُضبط أي إرشادات.

update-design-guidelines

اضبط إرشادات التصميم لملف أو استبدلها. مرّر الإرشادات كنص عادي بصيغة DESIGN.md من Google، وليس ككائن أو JSON. إذا كنت تقرأ من ملف، فمرّر نص ذلك الملف. المدخلات قواعد التحقق
  • يجب فتح الواجهة (frontmatter) وإغلاقها بشكل صحيح
  • يجب أن تكون أسطر الواجهة بصيغة YAML كتلية (block-style) صالحة
  • يجب ألا يحتوي النص الرئيسي بصيغة Markdown على عناوين ## مكررة
إذا فشل التحقق، يُعيد الاستدعاء خطأً يبدأ بـ Invalid design guidelines:. المخرجات — { updated, warnings? }.
يسرد warnings مشكلات التحقق غير الصارمة (مفاتيح غير معروفة، وألوان ليست بصيغة hex) التي قُبلت لكن قد يتجاهلها الذكاء الاصطناعي. تُحذف هذه القائمة عند عدم وجود مشكلات. اعرض هذه التحذيرات على المستخدم.

delete-design-guidelines

امسح إرشادات التصميم لملف. حذف إرشادات غير موجودة لا يُحدث أي أثر. المدخلات المخرجات — { "deleted": true }

أدوات المحادثة

get-chat-history

احصل على محادثة التصميم المرتبطة بملف، أي محادثة Flowstep الخاصة بالملف، وليس محادثة عميل MCP لديك. استخدمها لاستئناف العمل السابق على الملف. المدخلات المخرجات — { messages }. تكون messages فارغة إذا لم تكن لديك محادثة تصميم على الملف. لكل رسالة type (وهو "request" أو "response")، وauthor (وهو "human" أو "ai")، وcontent_type. تستخدم رسائل الاستجابة القيم "text" أو "summary" أو "followup".

أدوات المرفقات

upload-attachment

ارفع ملفًا مرجعيًا ليُستخدم كمرفق في ai-design-screens، أو صورة لوضعها في JSX الخاص بك باستخدام add-screen-jsx أو replace-screen-jsx. لا تقبل ai-generate-screen-variant وai-edit-screen-variant مرفقات. لا تمرّ بايتات الملفات عبر النموذج، ولا يجلب الخادم عناوين URL نيابةً عنك. للإشارة إلى صفحة ويب، ضمّن عنوانها URL في message الخاص بـ ai-design-screens بدلًا من ذلك. توجد طريقتان، استخدم واحدة فقط ولا تجمع بينهما. الوضع A: الملفات والصور (mimeType + fileName) تدفق إلزامي من ثلاث خطوات لأي صورة أو ملف PDF أو ملف نصي كبير:
  1. استدعِ upload-attachment بالمعاملين mimeType وfileName فقط (مثلًا image/png وdog.png). الاستجابة هي رفع مُجهّز، وليست ملفًا مخزّنًا:
  2. استبدل LOCAL_FILE_PATH في uploadCommand بالمسار المطلق لملفك، ثم نفّذ الأمر تمامًا في الصدفة لديك، ويجب أن ينتهي بالرمز 0. يصرّح الرمز المميز في signedUrl بهذا الرفع الواحد فقط. تخطّي هذه الخطوة يترك التخزين فارغًا، فتفشل أداة التصميم في فحص التحقق المسبق (preflight).
  3. مرّر { id, path, type } فقط إلى مصفوفة attachments في ai-design-screens، لا signedUrl أو uploadCommand أو nextStep. لوضع صورة في JSX الخاص بك بدلًا من ذلك، ضع assetUrl في img src أو bg-[url(...)] في JSX الذي تمرره إلى add-screen-jsx أو replace-screen-jsx. راجع الصور في JSX.
لإرفاق ملف عن بُعد، نزّله إلى مسار محلي بنفسك أولًا (مثلًا باستخدام curl)، ثم اتبع الخطوات الثلاث نفسها. لا تمرر عنوان URL إلى upload-attachment أبدًا. الوضع B: نص قصير (text + mimeType) ارفع نصًا موجودًا بالفعل في السياق، دون الحاجة إلى أمر صدفة. الاستجابة جاهزة للاستخدام مباشرةً:
مرّر { id, path, type } الناتج إلى مصفوفة attachments في ai-design-screens. أقصى حجم للملف هو 3 MB في الوضعين، ويقتصر ملف PDF على 100 صفحة. المخرجات — { id, path, assetUrl, type, mimeType, signedUrl?, uploadCommand?, nextStep? }.
  • type — "image" للصور، و"document" لملفات PDF والملفات النصية.
  • assetUrl — عنوان URL للملف المرفوع، ويُعاد في الوضعين. استخدمه في JSX مع add-screen-jsx أو replace-screen-jsx فقط عندما تكون قيمة type هي "image"، وبعد تشغيل uploadCommand في الوضع A.
  • signedUrl وuploadCommand وnextStep — تُضبط في الوضع A فقط. لا تمررها إلى أدوات التصميم.

أدوات Figma

import-figma

استورد إطار Figma إلى ملف Flowstep كعناصر قابلة للتحرير على لوحته. كل استيراد يضيف شاشة جديدة، فاستيراد الإطار نفسه مرتين يعطيك شاشتين، لذا احذف القديمة باستخدام delete-screen إذا كنت تقصد استبدالها. يجب أن تكون مؤسسة الملف متصلة بـ Figma في إعدادات Flowstep. المدخلات المخرجات — { fileId, screenId, frameCount? }. screenId هو الشاشة المستوردة، مرّرها إلى get-screen-image لعرض النتيجة. عندما يستورد رابط الصفحة عدة إطارات، تكون قيمة screenId هي null ويُعاد frameCount بدلًا منها. استدعِ list-screens ثم get-screen-image لكل شاشة جديدة.

أدوات الخطة والفوترة

get-plan-details

احصل على خطة مؤسستك في Flowstep، وحالة اشتراكها، واستخدامها، والحصة المتبقية. لا تأخذ هذه الأداة أي مدخلات، إذ تُحدَّد المؤسسة من المستخدم المسجّل الدخول. استخدمها للتحقق من حصتك قبل استدعاء أدوات التصميم بالذكاء الاصطناعي. المخرجات — { plan, subscription, limits, usage, remaining }. تختلف الحدود حسب الخطة، راجع الأسعار وحدود الاستخدام.

أدوات التصميم بالذكاء الاصطناعي

تصمّم هذه الأدوات الثلاث من وصف أو إعداد جاهز، ولا تستقبل JSX ولا تعيد استخدامه أبدًا. يستهلك كل استدعاء من حصة الرسائل نفسها التي يستخدمها تطبيق Flowstep، وينتظر حتى يكتمل التوليد أو تنتهي مهلته (180 ثانية). تُعيد الأدوات الثلاث { status, fileId, screenIds, designGuidelinesUpdated }. استدعِ get-screen-image مرة واحدة لكل screenId لعرض النتيجة.
  • 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

أضف شاشة جديدة مشتقة من شاشة موجودة واحدة بالضبط: الخطوة التالية في التدفق، أو حالة خطأ أو فارغة، أو نسخة لمنصة أخرى. تبقى الشاشة الأصلية دون تغيير. لإضافة شاشة ليست نسخة من شاشة موجودة (مثل شاشة الإعدادات)، استخدم ai-design-screens مع fileId. المدخلات المخرجات — { status, fileId, screenIds, designGuidelinesUpdated }. قيمة status دائمًا "generated".

ai-edit-screen-variant

غيّر شاشة موجودة واحدة بالضبط في مكانها باستخدام إعداد جاهز: طبّق عليها سمة أو حسّنها، أو جرّب تخطيطًا أو أسلوبًا بصريًا مختلفًا، أو أعد تصميمها من الصفر. للشاشات الجديدة، أو التعليمات الحرة، أو التعديل الدقيق لعناصر فردية، استخدم ai-design-screens. المدخلات المخرجات — { status, fileId, screenIds, designGuidelinesUpdated }. قيمة status دائمًا "generated".
هذا يستبدل محتوى الشاشة في مكانه.

الأدوات المُعاد تسميتها

تغيّرت أسماء الأدوات في سبتمبر وأكتوبر 2026. إذا كانت لديك موجّهات أو سكربتات أو تعليمات لوكيل تستخدم الأسماء القديمة، فحدّثها: تغيّرت المدخلات أيضًا: تأخذ أدوات التصميم بالذكاء الاصطناعي elementIds (أو screenId واحدًا لأدوات النسخ المتغيرة) بدلًا من targets، ويأخذ add-screen-jsx القيمة jsx وحقول بيانات وصفية صريحة بدلًا من jsxContent مع تعليق بيانات وصفية، ويأخذ create-file القيمة name بدلًا من title، وتأخذ أدوات إرشادات التصميم القيمة fileId بدلًا من resourceId وlinkedTo.