Permissões
Cada autorização traz uma lista explícita de scopes: seis permissões, nem
uma a mais. Cada ferramenta declara a permissão de que precisa; se a
autorização não a traz, a hackÜ responde 403 e a ferramenta se recusa.
Adicionar uma ferramenta nova nunca amplia o que uma credencial pode ler por
conta própria.
Os 6 scopes
Seção intitulada “Os 6 scopes”| Scope | Rótulo | O que libera |
|---|---|---|
users:read |
Listar usuários | O quadro de pessoas da empresa, uma pessoa por vez, o ranking e as cargas em massa. |
users:pii |
Ver nomes, e-mails e telefones | Faz com que as respostas que já devolvem pessoas incluam os dados identificáveis delas, em vez de só o user_id. Não abre nenhuma ferramenta nova sozinho. |
courses:read |
Consultar o catálogo de cursos | O catálogo de cursos da empresa e o detalhe de um deles, com seus módulos. |
communications:read |
Consultar comunicados e seus envios | Os comunicados preparados ou enviados, e o que aconteceu com cada destinatário. |
learning:read |
Consultar avaliações, pesquisas e pensums | Desafios, pesquisas, avaliações, tentativas e pensums — o grosso das ferramentas. |
reports:generate |
Pedir relatórios em Excel ou CSV e ver os já gerados | Ver os relatórios já pedidos, e pedir um novo. |
get_context não pede scope nenhum: ele descreve a própria credencial (de qual
empresa ela é, em nome de quem, com quais limites), e quem consegue se
autenticar já tem direito a saber isso.
users:pii é diferente dos outros
Seção intitulada “users:pii é diferente dos outros”Os outros cinco scopes abrem ou fecham uma ferramenta inteira. users:pii não
abre nenhuma: ele modifica o que já é devolvido por list_users,
get_user e list_communication_deliveries, acrescentando nome, e-mail,
telefone ou número de documento a linhas que de outra forma só trazem um id.
Isso é deliberado, segundo o próprio modelo:
USERS_PIIestá separado deUSERS_READde propósito. Se um deployment pode devolver dados pessoais é uma decisão de configuração; se uma credencial específica os recebe é uma decisão por pessoa. As duas precisam dizer sim.
Na prática isso significa duas chaves independentes, não uma: a do
deployment (MCP_EXPOSE_PII, veja Privacidade e alcance)
e a do scope da credencial. Toda resposta que pode trazer dados pessoais inclui
pii_included: true|false para deixar explícito qual dos dois modos você está
vendo — nunca é para supor isso pelo resultado.
Quais ferramentas pedem cada scope
Seção intitulada “Quais ferramentas pedem cada scope”users:read (5): get_company_overview · list_ranking · list_bulks ·
list_users · get_user
courses:read (2): list_courses · get_course
communications:read (3): list_communications · get_communication ·
list_communication_deliveries
learning:read (9): list_challenges · list_surveys ·
get_survey_results · list_evaluations · list_evaluation_attempts ·
get_evaluation_attempt · list_pensums · get_pensum ·
list_pensum_enrolments
reports:generate (2): list_reports · request_report
Sem scope (1): get_context
5 + 2 + 3 + 9 + 2 + 1 = 22 ferramentas — o total exato que o servidor expõe.
A única que não é de leitura
Seção intitulada “A única que não é de leitura”Das 22, request_report é a única que não é um read. Ela grava uma linha
e enfileira um trabalho em segundo plano; todo o resto neste servidor é uma
consulta. Por isso ela vive atrás do seu próprio scope, reports:generate, em
vez de compartilhar users:read ou outro scope de leitura — conceder essa ação
tem que ser uma decisão separada de conceder visibilidade.
