content من كتل محتوى MCP. أدوات النص تعيد { type: "text", text: "<json-string>" }. أدوات الصور تعيد { type: "image", data: "<base64>", mimeType: "image/png" }. عند الفشل، يتم تعيين isError: true وتحتوي كتلة النص على رسالة الخطأ.
أدوات الملفات
list-files
قائمة ملفات Flowstep للمستخدم الحالي.
الإدخال
الإخراج — مصفوفة JSON من كائنات الملفات.
get-file
احصل على ملف واحد حسب المعرّف. يتم حذف محتوى الملف بشكل مقصود — استخدم get-screen أو get-screen-image لفحص الشاشات وget-design-guidelines لاسترجاع الإرشادات المرفقة.
الإدخال
الإخراج — كائن ملف JSON.
create-file
إنشاء ملف Flowstep جديد.
الإدخال
الإخراج — كائن ملف JSON مع
id الملف الجديد.
id المُرجع كـ fileId في استدعاءات الأدوات اللاحقة.
update-file
إعادة تسمية ملف.
الإدخال
الإخراج — كائن ملف محدّث بنفس شكل
get-file.
delete-file
حذف ملف بشكل دائم. يتم التحقق من name الذي تمرره مقابل اسم الملف الفعلي قبل الحذف — إذا لم يتطابق، يتم إلغاء الحذف. يمنع هذا الحذف العرضي للملف الخاطئ.
الإدخال
الإخراج —
"File deleted successfully"
أدوات الشاشة
list-screens
قائمة جميع الشاشات المُنشأة لملف. استخدم قيم screenId المُرجعة للإشارة إلى الشاشات في get-screen وget-screen-image وكـ targets في edit-design أو regenerate-design أو expand-design.
الإدخال
الإخراج — مصفوفة JSON من ملخصات الشاشة.
name هو اسم الشاشة المعيّن من قبل المستخدم أو null إذا لم تكن لها اسم.
get-screen
احصل على كود JSX لشاشة يتيح لك تحرير أو استخدام الكود خارج Flowstep. استخدم get-screen-image للحصول على معاينة بصرية بدلاً من ذلك.
الإدخال
الإخراج — الشاشة كرمز (JSX). لاحظ تعليق السطر الأول الذي يكون مطلوباً عند استخدام أداة
add-screen.
add-screen
إضافة شاشة جديدة إلى ملف Flowstep من سلسلة JSX خام.
الإدخال
ملاحظة - يجب أن يكون تعليق مماثل لما يلي موجوداً كسطر أول من JSX لأنه يُستخدم لإضافة الشاشة بشكل صحيح.
screenType وname وscreenId اختياري جميعها — يتم استخدام screenId (داخلياً) إذا كان موجوداً (على سبيل المثال عند تمرير JSX منسوخ من مخرجات get-screen) لكنه ليس إلزامياً. يتم أخذ اسم الشاشة من حقل name في التعليق (يُعرض كـ “Copy of <name>”)، أو “Untitled” إذا كان غائباً.
<!-- screenType: "iphone-x-vertical" width: "375" height: "812" name: "Change to a light theme" colorTheme: "blue" -->
الإخراج — معرّف الشاشة الجديدة المضافة.
get-screen-image
تحويل شاشة إلى PNG وإرجاعها كصورة مدمجة. يتطلب عميلاً يدعم كتل المحتوى الصورة.
الإدخال
الإخراج — كتلة محتوى صورة MCP (
image/png).
أدوات الذكاء الاصطناعي
create-new-design
إنشاء تصميم شاشة واحد أو أكثر من موجه نصي. حذف fileId لإنشاء ملف جديد تلقائياً. يحجب حتى يكتمل الإنشاء أو ينتهي الوقت (180 ثانية).
الإدخال
الإخراج —
{ fileId, screenIds, designGuidelinesUpdated }. مرّر كل screenId إلى get-screen-image لعرض النتائج. designGuidelinesUpdated يُبلّغ ما إذا تم تغيير إرشادات تصميم الملف كجزء من هذا الإنشاء.
regenerate-design
إعادة إنشاء الشاشات الموجودة من الصفر أو بتباين نمط. يتطلب screenId واحد على الأقل في targets. يحجب حتى يكتمل الإنشاء أو ينتهي الوقت (180 ثانية).
الإدخال
الإخراج —
{ fileId, screenIds, designGuidelinesUpdated }. مرّ كل screenId إلى get-screen-image لعرض النتائج.
expand-design
إضافة شاشات متابعة إلى تصميم موجود. يتطلب screenId واحد على الأقل في targets وoperationVariant إلزامي. يحجب حتى يكتمل الإنشاء أو ينتهي الوقت (180 ثانية).
الإدخال
الإخراج —
{ fileId, screenIds, designGuidelinesUpdated }. مرّ كل screenId إلى get-screen-image لعرض النتائج.
edit-design
تعديل الشاشات الموجودة عبر موجه. يتطلب screenId واحد على الأقل في targets. يحجب حتى يكتمل الإنشاء أو ينتهي الوقت (180 ثانية).
الإدخال
الإخراج —
{ fileId, screenIds, designGuidelinesUpdated }. مرّ كل screenId إلى get-screen-image لعرض النتائج.
upload-attachment
حمّل ملف لاستخدامه كمرفق في create-new-design أو edit-design (وليس regenerate-design أو expand-design). بايتات الملف لا تمر أبداً عبر النموذج، والخادم لا يحصل على عناوين URL نيابة عنك.
هناك وضعان — استخدم واحد بالضبط، ولا تجمع بينهما.
الوضع أ — الملفات والصور (mimeType + fileName)
تدفق مطلوب من ثلاث خطوات لأي صورة أو ملف PDF أو ملف نصي أكبر:
-
استدعِ
upload-attachmentمعmimeTypeوfileNameفقط (على سبيل المثالimage/pngوdog.png). الاستجابة تُرجع تحميل مُحضّر، وليس ملف مخزّن: -
استبدل
LOCAL_FILE_PATHفيuploadCommandبالمسار المطلق لملفك وشغّل تلك الأمر بالضبط في قوقعتك — يجب أن تخرج 0. الرمز فيsignedUrlيفوّض فقط هذا التحميل الفردي. تجاوز هذه الخطوة يترك التخزين فارغاً والأداة التصميم تفشل في فحص الفحص المسبق. -
مرّر فقط
{ id, path, type }في صفيفattachmentsالخاص بأداة التصميم — وليسsignedUrlأوuploadCommandأوnextStep.
curl)، ثم اتبع نفس الخطوات الثلاث. لا تمرّر عنوان URL إلى upload-attachment.
الوضع ب — نص قصير (
text + mimeType)
حمّل نصاً في السياق بالفعل — لا توجد حاجة لأمر shell. الاستجابة جاهزة للاستخدام مباشرة:
مرّر
{ id, path, type } الناتجة إلى مصفوفة attachments من create-new-design أو edit-design.
حد أقصى لحجم الملف هو 3 ميجابايت عبر كلا الطريقتين، وملفات PDF محدودة بـ 100 صفحة. type هو "image" لملفات الصور و"document" لملفات PDF والملفات النصية.
أدوات الدردشة
get-chat-history
احصل على سجل رسائل الدردشة لملف.
الإدخال
الإخراج — كائن JSON بمصفوفة
messages. لكل رسالة type ("request" أو "response"، وauthor ("human" أو "ai")، وcontent_type ("text" أو "summary" أو "followup").
أدوات التصميم
get-design-guidelines
احصل على إرشادات التصميم المخزنة لملف.
الإدخال
الإخراج
guidelines هو null إذا لم يتم تعيين أي إرشادات.
update-design-guidelines
عيّن أو استبدل إرشادات التصميم لملف. يتم تمرير الإرشادات كسلسلة نصية عادية بصيغة design.md من Google — لا تمرّر كائن أو JSON.
يقوم الخادم بفحص ناعم وقد يعيد قسم Warnings: في الاستجابة قائمة مشاكل (مفاتيح غير معروفة، ألوان غير hex) تم قبولها لكن قد يتم تجاهلها من قبل الذكاء الاصطناعي. سطح هذه للمستخدم.
الإدخال
قواعد الفحص
- يجب فتح الصدارة وإغلاقها بشكل صحيح
- يجب أن تكون خطوط الصدارة بصيغة YAML صالحة من نوع الكتلة
- يجب ألا يحتوي نص Markdown على عناوين قسم
##مكررة
"Design guidelines updated successfully"، اختياري متبوع بقسم Warnings:.
delete-design-guidelines
امسح إرشادات التصميم لملف.
الإدخال
الإخراج —
"Design guidelines deleted successfully"
أدوات Figma
import-figma
استيراد إطار Figma إلى ملف Flowstep كعناصر قابلة للتحرير على القماشة. يؤدي إعادة استيراد الإطار نفسه إلى تحديثه في المكان. يجب أن يكون لدى تنظيم الملف اتصال Figma في إعدادات Flowstep.
الإدخال
الإخراج —
{ fileId, screenId }. screenId هو معرّف عنصر الشاشة المستوردة — مرّره إلى get-screen-image لعرض النتيجة. عندما يستورد عنوان URL صفحة إطارات متعددة، يكون screenId هو null ويتم إرجاع frameCount بدلاً من ذلك.