ما الذي يصل إليه
الحدّ الصادق.
دورك هو ما يحدّد الأدوات الموجودة
يتصرّف الخادم بصفتك أنت، على الاتصال الذي جعلته نشطًا. ولا يوجد حساب خدمة منفصل ولا وصول أوسع من وصولك. ومنذ إطلاق الأدوار، لم يعد هناك وصول أوسع من دورك أيضًا. وقائمة الأدوات التي يحصل عليها العميل مبنية على الصلاحيات التي تحملها في مساحة العمل النشطة، فعميل صاحب دور المشاهد لا يسرد sendEmail ولا createRule ولا sendWithTemplate إطلاقًا.
وهذا أقوى من رفض النداء. فالأداة الغائبة عن القائمة ليست أداة يفكّر فيها النموذج، ولا تلتهم سياقًا، ولا يمكن محاولتها نيابةً عن أحد ثم الاعتذار عنها. كما يعني ذلك أن العميل الذي يبدو فارغًا هو في الغالب صلاحية لا تملكها لا ميزة ينقص هذا الخادم إياها، وهذا بالضبط ما وُجدت whoAmI لتخبرك به.
التسجيل والاستدعاء بوّابتان، والثانية وحدها هي التي تصمد. فالقائمة تُبنى مرة واحدة عند فتح الجلسة، وبوسع setActiveConnection أن ينقل تلك الجلسة إلى صندوق بريد تملك فيه صلاحيات أقل، فالقائمة قديمة بحكم التصميم ولا سبيل في البروتوكول لسحب أداة في منتصف الجلسة. لذلك تعيد كل أداة مقيَّدة تحديد دورك على الاتصال الحالي قبل أن تعمل. فالتسجيل مجاملة؛ والاستدعاء هو الحدّ.
الرفض يسمّي نصفيه معًا، كما في Refused (missing_permission): your role in this mailbox is Viewer, which does not include “Send email”، حتى يستطيع الوكيل شرحه للشخص الذي يعمل لحسابه ويتوقف عن المحاولة، بدل إعادة محاولة خطأ مبهم حتى ييأس أحدهم. والدور الذي يغيّره مسؤول بينما الجلسة مفتوحة يهبط بالطريقة نفسها، عند النداء التالي مباشرة.
العناوين هي المحور الآخر ولا يمسّها شيء من هذا. فالدور يقول ما يحقّ لك فعله؛ والعناوين الممنوحة لك تقول على أي صناديق بريد يحقّ لك فعله، وعلى الاثنين أن يتفقا قبل أن تخرج رسالة.
الرمز نفسه لا يزال بلا نطاق
أما ما لم يتغيّر فهو المنح. فالرمز الذي يتلقّاه تطبيق يصل إلى كل ما يسمح به دورك لا إلى مجموعة جزئية اخترتها أثناء الموافقة، فالموافقة على عميل هي موافقة له على كل ما تستطيع فعله في مساحة العمل تلك. ويُعرض عليك ما الذي يطلب قبل منح أي شيء، والحساب ← التطبيقات المتصلة يزيله بعد ذلك، فيحذف كل رمز يحمله والموافقة التي وراءه، لكن اختيار «قراءة فقط، لهذا التطبيق» غير مبني.
وعليه فسقف عميل MCP هو سقفك أنت. وتضييق ما يستطيع تطبيق فعله يعني تضييق دور الشخص الذي وصله، وهو ما يضيّق ما يستطيع فعله في التطبيق أيضًا. هذه هي صورته الصادقة اليوم، وهي سبب بقاء نطاق لكل منحة أمرًا يستحق البناء.
المفردات مشتركة أصلًا: فصلاحيات الدور ونطاقات مفتاح API مسحوبة من أبجدية واحدة، وهذا ما يجعل سلطة المفتاح قابلة للحساب بوصفها تقاطع الاثنين. ونطاق MCP لكل منحة سيُعبَّر عنه بالكلمات نفسها حين يصل.