Kam dosáhne
Poctivá hranice.
Vaše role rozhoduje, které nástroje existují
Server jedná jako vy, vůči připojení, které jste nastavili jako aktivní. Neexistuje žádný samostatný servisní účet ani širší přístup, než je ten váš. Od zavedení rolí neexistuje ani širší přístup, než je vaše ROLE. Seznam nástrojů, který klient dostane, se sestavuje z oprávnění, která máte v aktivním pracovním prostoru, takže klient prohlížejícího nevypíše sendEmail, createRule ani sendWithTemplate vůbec.
To je silnější věc než odmítnutí volání. Nástroj, který v seznamu chybí, není nástroj, o kterém model uvažuje, nežere kontext a nelze se o něj pokusit jménem někoho jiného a pak se za to omlouvat. Znamená to také, že prázdně vypadající klient je obvykle oprávnění, které nemáte, spíš než funkce, která tomuto serveru chybí, což je přesně to, co vám má whoAmI říct.
Registrace a volání jsou dvě brány a drží jen ta druhá. Seznam se sestaví jednou, při otevření relace, a setActiveConnection může tuto relaci přesunout do schránky, kde smíte méně, takže seznam je ze své podstaty zastaralý a protokol nemá jak nástroj uprostřed relace stáhnout. Každý hlídaný nástroj proto před spuštěním znovu vyhodnotí vaši roli vůči AKTUÁLNÍMU připojení. Registrace je zdvořilost; hranicí je volání.
Odmítnutí pojmenuje obě poloviny, například Refused (missing_permission): your role in this mailbox is Viewer, which does not include “Send email”, takže agent to může vysvětlit člověku, pro kterého pracuje, a přestat to zkoušet, místo aby opakoval neprůhlednou chybu, dokud to někdo nevzdá. Role změněná správcem za otevřené relace dopadne stejně, hned při dalším volání.
Adresy jsou druhá osa a nic z toho se jich netýká. Role říká, co smíte dělat; adresy, které vám byly uděleny, říkají, ve kterých schránkách to smíte dělat, a než zpráva odejde, musí se obě shodnout.
Samotný token stále nemá scope
Co se NEZMĚNILO, je udělení oprávnění. Token, který aplikace dostane, dosáhne na vše, co dovolí vaše role, nikoli na podmnožinu, kterou jste při schvalování zvolili, takže schválit klienta znamená schválit mu vše, co v daném pracovním prostoru můžete dělat. Před udělením čehokoli vidíte, co o přístup žádá, a Účet → Připojené aplikace to poté odebere, včetně smazání každého tokenu, který drží, i schválení za ním, ale volba „jen pro čtení, pro tuto aplikaci“ postavená není.
Strop MCP klienta je tedy stropem VÁS. Zúžit to, co aplikace může dělat, znamená zúžit roli člověka, který ji připojil, což zúží i to, co může dělat v aplikaci. Taková je dnes poctivá podoba věci a to je důvod, proč se scope pro jednotlivé udělení pořád vyplatí postavit.
Slovník je už společný: oprávnění role a scopy API klíče se berou z jedné abecedy, díky čemuž je pravomoc klíče vypočitatelná jako průnik obou. MCP scope pro jednotlivé udělení bude, až dorazí, vyjádřen stejnými slovy.