Permisos
Cada autorización trae una lista explícita de scopes: seis permisos, ni
uno más. Cada herramienta declara el permiso que necesita; si la autorización
no lo trae, hackÜ responde 403 y la herramienta se niega. Agregar una
herramienta nueva nunca amplía lo que una credencial puede leer por su cuenta.
Los 6 scopes
Sección titulada «Los 6 scopes»| Scope | Etiqueta | Qué desbloquea |
|---|---|---|
users:read |
Listar usuarios | El padrón de la empresa, una persona a la vez, el ranking y los cargues masivos. |
users:pii |
Ver nombres, correos y teléfonos | Que las respuestas que ya devuelven personas incluyan sus datos identificables, en vez de solo el user_id. No abre ninguna herramienta nueva por sí solo. |
courses:read |
Consultar el catálogo de cursos | El catálogo de cursos de la empresa y el detalle de uno, con sus módulos. |
communications:read |
Consultar comunicados y sus envíos | Los comunicados preparados o enviados, y qué pasó con cada destinatario. |
learning:read |
Consultar evaluaciones, encuestas y pensums | Retos, encuestas, evaluaciones, intentos y pensums — el grueso de las herramientas. |
reports:generate |
Pedir reportes en Excel o CSV y ver los generados | Ver los reportes ya pedidos, y pedir uno nuevo. |
get_context no pide ningún scope: describe la credencial misma (de qué
empresa es, en nombre de quién, con qué límites), y quien puede autenticarse
ya tiene derecho a saber eso.
users:pii es distinto de los demás
Sección titulada «users:pii es distinto de los demás»Los otros cinco scopes abren o cierran una herramienta entera. users:pii no
abre ninguna: modifica lo que ya devuelven list_users, get_user y
list_communication_deliveries, agregando nombre, correo, teléfono o número
de documento a filas que de otra forma solo traen un id.
Esto es deliberado, según el propio modelo:
USERS_PIIestá separado deUSERS_READa propósito. Si un deployment puede devolver datos personales es una decisión de configuración; si una credencial dada los recibe es una decisión por persona. Las dos tienen que decir que sí.
En la práctica esto significa dos llaves independientes, no una: la del
deployment (MCP_EXPOSE_PII, ver Privacidad y alcance)
y la del scope de la credencial. Cada respuesta que puede traer datos
personales incluye pii_included: true|false para que quede explícito cuál
de los dos modos se está viendo — nunca hay que asumirlo por el resultado.
Qué herramientas piden cada scope
Sección titulada «Qué herramientas piden 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
Sin scope (1): get_context
5 + 2 + 3 + 9 + 2 + 1 = 22 herramientas — el total exacto que expone el servidor.
La única que no es de lectura
Sección titulada «La única que no es de lectura»De las 22, request_report es la única que no es un read. Escribe una
fila y encola un trabajo en segundo plano; todo lo demás en este servidor es
una consulta. Por eso vive detrás de su propio scope, reports:generate, en
vez de compartir users:read u otro scope de lectura — otorgar esa acción
tiene que ser una decisión aparte de otorgar visibilidad.
