Mapping COAZ-MCP
O padrão que diz como os argumentos de uma tool MCP viram o recurso da pergunta AuthZEN.
O mapping default trata a tool como o recurso. Isso basta para "este agente pode chamar list_issues?", mas não para "este agente pode abrir issue em acme/payments?". O recurso de verdade está num argumento, e só quem conhece a tool sabe qual. O COAZ-MCP é o padrão que registra essa informação: um mapping, escrito em CEL, que projeta argumentos da tool call nos campos da pergunta AuthZEN.
Um mapping que torna o repositório o recurso de uma tool do GitHub fica assim:
{
"resource": {
"type": "github_repository",
"id": "$params.arguments.repository"
}
}Com ele, create_issue com repository = acme/payments vira uma pergunta sobre o recurso github_repository de id acme/payments. O tipo tool continua com o sentido de "não há recurso concreto": nesse caso o PDP só confere se o agente pode chamar a tool. Qualquer outro tipo exige, além disso, acesso ao recurso. O tipo segue o formato ^[a-z][a-z0-9_]{1,79}$, e o id precisa ser um texto não vazio; um id ausente ou de outro tipo bloqueia a chamada.
De onde vem o mapping
O mapping vem do próprio server, no schema da tool (inputSchema.x-authzen-mapping). Quando o schema revisado não declara nenhum, vale o default COAZ-MCP:
A declaração do server só vale depois que o administrador revisa o schema. Se o mapping falha ao ser avaliado, a chamada é bloqueada. O Xokepoint não recorre ao default: um mapping quebrado que caísse no default trocaria uma verificação de recurso por uma verificação só de tool, e isso abriria acesso.
Por que CEL
O CEL é uma linguagem de expressões sem efeitos colaterais e sem acesso à rede, com custo de avaliação limitado. A projeção lê o token e a mensagem e não faz mais nada. Ela não busca dados, que é papel do PIP, e não altera os argumentos que serão executados.