المصادقة
يتطلب كل طلب إلى https://mcp.more.you/api ترويسة Authorization برمز Bearer. وأمامك طريقتان للحصول على رمز.
OAuth (موصى به لعملاء الذكاء الاصطناعي)
يجري عملاء الذكاء الاصطناعي تسجيل العميل الديناميكي (Dynamic Client Registration) عند أول اتصال، ثم يمرّون بالمستخدم على شاشة موافقة OAuth. تتولى صفحة /mcp/connect ذلك تلقائيًا. يحصل عميلك على رمز وصول صالح 30 يومًا.
مفتاح API
للسكربتات وCI، أنشئ مفتاح API شخصيًا في تطبيق More.You من الحساب ← مفاتيح API. يبدأ المفتاح بالبادئة apikey_ ويُقدَّم كرمز Bearer مثل أي رمز آخر.
نقطة النهاية
تذهب كل استدعاءات الأدوات إلى نقطة نهاية JSON-RPC 2.0 واحدة عبر HTTPS POST.
الأدوات
list_scheduled_posts
اعرض منشوراتك المجدولة (في قائمة النشر ولم تُرسل بعد).
المعاملات
limitfromما يعيده
كائن يحوي posts: [{id, platform, content, scheduledAt, status}]. حتى limit نتيجة.
مثال
curl -X POST https://mcp.more.you/api \
-H "Authorization: Bearer apikey_xxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","id":1,
"params":{"name":"list_scheduled_posts",
"arguments":{"limit":5}}}'
list_drafts
اعرض مسودات منشوراتك (غير المجدولة بعد).
المعاملات
limitما يعيده
كائن يحوي drafts: [{id, platform, content, updatedAt}]. حتى limit نتيجة.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"list_drafts","arguments":{"limit":10}}}
list_connected_accounts
اعرض الحسابات الاجتماعية المرتبطة بفريقك.
المعاملات
بلا معاملات.
ما يعيده
كائن يحوي accounts: [{platform, handle, connected, lastSyncAt}].
مثال
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"list_connected_accounts","arguments":{}}}
get_account_healthخطة مدفوعة
احصل على ملخص صحة عبر كل المنصات المرتبطة.
المعاملات
platformwindowDaysما يعيده
كائن يحوي windowDays وpostsScheduled وpostsPublished وpostsFailed وتفصيلًا byPlatform وtopErrors[].
مثال
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"get_account_health",
"arguments":{"windowDays":30}}}
create_post_draft
أنشئ مسودة منشور جديدة. لا تُنشر المسودات تلقائيًا.
المعاملات
platformcontentmediaUrlsclientRequestIdما يعيده
كائن يحوي المسودة الجديدة: {id, platform, content, status: "DRAFT", createdAt}.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"create_post_draft",
"arguments":{"platform":"twitter",
"content":"Hello from MCP"}}}
update_post_draft
حدّث مسودة موجودة. يجب تقديم content أو mediaUrls على الأقل.
المعاملات
postIdcontentmediaUrlsclientRequestIdما يعيده
كائن يحوي المسودة المحدّثة: {id, platform, content, mediaUrls, status, updatedAt}.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"update_post_draft",
"arguments":{"postId":"",
"content":"Updated copy"}}}
connect_channel
أنشئ رابطًا لمرة واحدة يفتحه المستخدم ليفوّض ربط منصة جديدة.
المعاملات
platformما يعيده
كائن يحوي authUrl (رابط لمرة واحدة يفتحه المستخدم للتفويض) وexpiresAt وplatform.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"connect_channel",
"arguments":{"platform":"linkedin"}}}
schedule_post
انقل مسودة (حالتها DRAFT) إلى قائمة النشر BullMQ في وقت لاحق. متكرر الأثر ضمن انحراف ±60 ثانية؛ ويرفض محاولات إعادة الجدولة في وقت مختلف ما لم يسبقها إلغاء صريح.
المعاملات
postIdscheduledAtما يعيده
كائن يحوي postId وscheduledAt (ISO) وstatus: SCHEDULED.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"schedule_post",
"arguments":{"postId":"",
"scheduledAt":"2026-05-10T09:00:00Z"}}}
cancel_scheduled_post
ألغِ منشورًا مجدولًا وأزله من قائمة النشر. تبقى المسودة الأصلية محفوظة.
المعاملات
postIdما يعيده
كائن يحوي postId وstatus: CANCELLED.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"cancel_scheduled_post",
"arguments":{"postId":""}}}
delete_draft
احذف مسودة منشور نهائيًا. يرفض المنشورات غير DRAFT (استخدم cancel_scheduled_post للمنشورات SCHEDULED).
المعاملات
postIdما يعيده
كائن يحوي postId وdeleted: true.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"delete_draft",
"arguments":{"postId":""}}}
get_post
أعد PostGroup الكامل للمنشور postId مع المحتوى والحالة والطوابع الزمنية لكل منصة.
المعاملات
postIdما يعيده
كائن يحوي postId وstatus وscheduledAt وcreatedAt وupdatedAt وproviders (سجل platform → content).
مثال
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"get_post",
"arguments":{"postId":""}}}
search_posts
بحث بجزء من النص (غير حساس لحالة الأحرف) في محتوى المنشورات للفريق النشط. المرشحات: status وplatform وlimit (1-100، الافتراضي 20).
المعاملات
querystatusplatformlimitما يعيده
كائن يحوي posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. يحتوي snippet على السياق المطابق مع علامات حذف على الجانبين.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"search_posts",
"arguments":{"query":"launch","limit":10}}}
list_teams
أعد الفرق التي يملكها المستخدم المصادَق أو يديرها، مع تعليم الفريق النشط حاليًا.
المعاملات
بلا معاملات.
ما يعيده
كائن يحوي currentTeamId وteams: [{teamId, teamName, isCurrent}].
مثال
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_teams","arguments":{}}}
set_current_team
بدّل الفريق النشط لرمز Bearer هذا. يجب أن يكون المستخدم عضوًا. يُحفظ في مستند رمز OAuth؛ والتغيير داخل الجلسة يسري فورًا على الأدوات اللاحقة في المحادثة نفسها.
المعاملات
teamIdما يعيده
كائن يحوي teamId وteamName وpersisted (true مع OAuth وfalse مع مفتاح API) وnote اختياري.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
get_plan_limits
اقرأ مستوى اشتراك المستخدم الحالي وحصصه (القنوات والتخزين وأرصدة الذكاء الاصطناعي والنشر). متاحة في كل الخطط. مفيدة قبل أدوات التعديل لتتوقع هل سيُرفض الاستدعاء.
المعاملات
بلا معاملات.
ما يعيده
كائن يحوي tier وtierDisplayName وisPaid وisTrial وupgradeUrl وlimits (channels/storage/aiCalls/posts، كلٌّ بصيغة {limit, current, exceeded} أو {limit, allowed}) وcreditsAvailable ({total, subscriptionRemaining, purchasedBalance} أو null).
مثال
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_plan_limits","arguments":{}}}
get_post_metrics
اجلب مقاييس التفاعل لمنشور نُشر على كل منصة أُرسل إليها. تعيد Twitter وInstagram مقاييس كاملة (الإعجابات وإعادات التغريد/المشاركات والتعليقات/الردود ومرات الظهور)؛ وتعيد LinkedIn وThreads وTikTok حالة النشر والرابط فقط (جمع التفاعل مؤجل إلى إصدار لاحق). ويجمع ملخص إجماليات موحّد الإعجابات والتعليقات والمشاركات ومرات الظهور عبر المنصات التي أبلغت بها.
المعاملات
postId معرّف منشور More.You من استدعاء قائمة.
ما يعيده
كائن يحوي postId وstatus وproviders: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] وtotals: {likes, comments, shares, impressions}. metrics كائن بأعداد رقمية لكل منصة، أو null حين لا تجمع المنصة التفاعل بعد.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"get_post_metrics",
"arguments":{"postId":""}}}
get_publish_status
شخّص ما حدث لمنشور مجدول: حالته في القائمة ونجاحه أو خطؤه على كل منصة ووقت المعالجة ومعرّف مهمة العامل. يعيد isScheduled=false للمنشورات الموجودة كمسودات ولم تُنقل قط إلى قائمة النشر، مع تلميح يشير إلى schedule_post.
المعاملات
postId معرّف منشور More.You من استدعاء قائمة.
ما يعيده
كائن يحوي postId وisScheduled وstatus وscheduledAt وpublishedAt وplatforms وprocessingTimeMs وjobId وtopLevelError وresults: [{platform, success, publishedPostId, publishedAt, error}]. يتضمن hint حين تكون isScheduled false.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_publish_status",
"arguments":{"postId":""}}}
update_brand_profile
عدّل ملف العلامة النشط للمستخدم. الحقول المسموح بها: bio وbrandVoice وpersonalityTraits وmainThemes وexpertiseAreas وpreferredHashtags وaudienceSize. أي حقل آخر يُهمل بصمت. يُحدَّد الملف "النشط" بالملف الافتراضي للفريق أولًا، ثم أول ملف نشط يملكه المستخدم.
المعاملات
brandVoice مصفوفة أوصاف لصوت العلامة (مثل ["professional", "concise"]).
حقول أخرى قابلة للتعديل: bio وpersonalityTraits وmainThemes وexpertiseAreas وpreferredHashtags وaudienceSize.
ما يعيده
كائن يحوي profileId وname وupdated: [أسماء الحقول التي عُدّلت] والقيم الحالية للحقول bio وbrandVoice وpersonalityTraits وmainThemes وexpertiseAreas وpreferredHashtags وaudienceSize بعد التعديل.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["professional","concise"]}}}
get_best_time_to_post خطة مدفوعة
اقترح أفضل N خانة (dayOfWeek, hour) للمنشور التالي على منصة معيّنة، مرتبة حسب التفاعل لكل منشور خلال آخر 90 يومًا. تعيد Twitter وInstagram درجات موزونة بالتفاعل؛ أما LinkedIn وThreads وTikTok فترتيبها بتكرار النشر فقط. الأوقات بالمنطقة الزمنية IANA المحددة (الافتراضي UTC). يتطلب خطة مدفوعة.
المعاملات
platform المنصة الاجتماعية: twitter أو instagram أو linkedin أو threads أو tiktok.
timezone اسم منطقة زمنية IANA (مثل Europe/Berlin وAmerica/New_York). الافتراضي UTC.
topN عدد الخانات الموصى بها المطلوب إعادتها (1-24، الافتراضي 5).
ما يعيده
كائن يحوي platform وtimezone وsampleWindowDays وsampleSize وmetricsAvailable وrecommendations: [{dayOfWeek (1-7، الاثنين=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. يتضمن hint في حالات البداية الباردة أو غياب المقاييس.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":19,
"params":{"name":"get_best_time_to_post",
"arguments":{"platform":"twitter","timezone":"Europe/Berlin","topN":5}}}
search_tools
ابحث في كتالوج أدوات MCP بنص حر أو فئة أو غرض. يعيد الفئات وrequiresScope ووصفًا من سطر واحد ووسوم حالات الاستخدام المطابقة. مجانية لكل الخطط (واجهة الاكتشاف).
المعاملات
كلها اختيارية. استدعِ دون معاملات لعرض كل الأدوات المتاحة.
query بحث نصي حر في أسماء الأدوات وأوصافها ووسوم حالات الاستخدام.
category صفِّ إلى فئة واحدة: posts أو accounts أو analytics أو brand أو teams أو discovery أو other.
ما يعيده
كائن يحوي totalTools وmatchCount وcategories: [string[]] وtools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. يتضمن hint حين لا توجد مطابقة أو لا مرشح.
مثال
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"search_tools",
"arguments":{"query":"why did my post fail"}}}
موارد MCP
الموارد سياق للقراءة فقط يستطيع العميل جلبه عبر الطريقة resources/read في MCP. يسحبها Claude عند بدء المحادثة ليحصل على سياق الحساب والفريق والعلامة دون أن تعيد السؤال في كل جلسة.
moreyou://account/summary
البريد الإلكتروني واسم مستخدم الحساب (ليتأكد Claude من الحساب الذي يعمل عليه)، والخطة، وأرصدة الذكاء الاصطناعي المستخدمة / الحد، وعدد المسودات والمجدولة والقنوات المرتبطة. الأعداد محدودة بـ 100 لكل منها لسرعة التحميل.
moreyou://channels/connected
بالشكل نفسه الذي تعيده list_connected_accounts؛ تُعرض كمورد ليسحبها Claude مرة واحدة عند بدء المحادثة (دون رحلة استدعاء أداة).
moreyou://brand-profiles/active
ملف العلامة النشط للمستخدم (الافتراضي للفريق، وإن لم يوجد فأول ملف يملكه). يعيد الحقول المفيدة للنموذج اللغوي فقط: bio وexpertiseAreas وpersonalityTraits وbrandVoice وmainThemes وaudienceSize وpreferredHashtags.
moreyou://teams/current
بيانات الفريق الحالي (teamId وteamName) مع العدد totalTeamsAvailable. اقرنه بالأداتين list_teams وset_current_team للتبديل.
مسارات العمل المسماة
اختصارات في قائمة الشرطة المائلة تنسّق عدة أدوات. اختر واحدًا ودع مساعدك ينفّذ مهمة من عدة خطوات مع طلب التأكيد قبل تغيير أي شيء.
/weekly-plan
اقرأ ملف العلامة والقنوات المرتبطة والمنشورات المنتظرة، ثم اقترح 5 إلى 10 مسودات موزعة من الاثنين إلى الجمعة.
/draft-thread
اكتب سلسلة من 5 إلى 10 منشورات على Twitter أو Threads عن موضوع أو رابط تقدمه، بصوت علامتك.
/audit-queue
افحص منشورات الأيام السبعة القادمة المجدولة ونبّه إلى المكرر وازدحام المنصات والفجوات.
/channel-sweep
قارن القنوات المرتبطة بالمجموعة المدعومة واقترح ما تربطه أو تجدده.
نقاط الاكتشاف وOAuth
بيانات وصفية متوافقة مع المعايير ليضبط أي عميل MCP إعداداته تلقائيًا.
GET /.well-known/oauth-protected-resource/api: RFC 9728GET /.well-known/oauth-authorization-server: RFC 8414GET /oauth/.well-known/openid-configuration: OIDCPOST /oauth/reg: تسجيل العميل الديناميكي (RFC 7591)GET /oauth/auth: التفويض (PKCE-S256 مطلوب)POST /oauth/token: تبادل الرمز
مفتوح المصدر
وصفات جاهزة للصق ومرجع للمطورين في مستودع وثائقنا العام. مرخّص برخصة MIT؛ طلبات السحب مرحّب بها. github.com/moreyouhq/moreyou-mcp
أدِر قنواتك الاجتماعية من أي مساعد ذكاء اصطناعي
خطط للمنشورات واكتب مسوداتها وجدولها وراجعها على 7 منصات بمحادثة بسيطة مع Claude أو ChatGPT أو Cursor. اتصال آمن واحد يفتح كل ميزات More.You.
