Docs

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.