> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatsailer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticação

> OAuth para uma pessoa, um token de workspace para um script. Um servidor por grant.

Toda requisição MCP carrega uma credencial bearer. Não há header de workspace
— a credencial *é* o workspace.

Dois tipos. Escolha o que combina com quem está chamando.

|                    | OAuth                                   | Token de workspace                                   |
| ------------------ | --------------------------------------- | ---------------------------------------------------- |
| Para quem          | Uma pessoa no Claude, ChatGPT ou Cursor | Um script, job de CI ou Cloud Agent                  |
| Como você consegue | Entra quando o cliente abre um browser  | Um admin emite `sk_live_…` na Sailer                 |
| Quem está atrás    | A pessoa que aprovou                    | Ninguém                                              |
| Visibilidade CRM   | O ACL dessa pessoa                      | O workspace inteiro                                  |
| Ligado a           | Um servidor MCP                         | Os dois servidores, se os scopes do token permitirem |

`whoami` reporta `credential: oauth` ou `credential: api_token`, e
`reads_company_wide: true` quando não há usuário para filtrar. Pergunte isso
quando você não tiver certeza de que tipo de conexão está olhando.

## OAuth

É isso que os [tutoriais de cliente](/pt-BR/mcp/connect) percorrem. O cliente
descobre o authorization server da Sailer, você entra com o seu email da
Sailer, escolhe um workspace se pertencer a mais de um, aprova.

Três telas, nesta ordem:

1. **Auth0 sign-in** — o email que é membro de um workspace da Sailer. Já
   está logado? Este passo é pulado.
2. **Consent** — qual workspace, e quais permissões. Um workspace por
   conexão, pela vida do grant. Nada numa URL ou num argumento de tool pode
   mudar isso.
3. **Done** — feche a aba. O cliente agora tem tokens.

Deixe Client ID e Client Secret em branco. A Sailer registra o cliente ela
mesma. Colar credenciais que você inventou, ou de algum outro app OAuth, é
como isso falha.

### A primeira conexão é só leituras

O primeiro consent pede identity (`openid`, `profile`, `offline_access`) mais
cada scope `*:read` que o seu papel realmente consegue conceder. Sem writes.
Ninguém deveria aprovar "atualiza o meu CRM" antes de ter lido um só
registro.

Se você pedir ao modelo para criar ou atualizar algo, a tool vai dizer que a
conexão está sem um scope e que **tentar de novo não vai ajudar**.
Desconecte, reconecte e aprove o write quando o consent pedir — contacts,
organizations, deals ou campaigns, o que a tarefa precisar.

### Scopes são uma interseção

O consent mostra o que *o seu papel naquele workspace* consegue conceder.
Permissões riscadas não são bug — o seu papel não pode ceder elas. Peça a um
admin para ampliar o papel se você precisar delas.

Um scope é `<resource>:<access>`. Tools que você não consegue chamar não
aparecem em `tools/list`. Uma conexão somente leitura não deveria ver
`create_record` de jeito nenhum.

### Um servidor por grant

Um token OAuth é emitido para exatamente um resource: `/mcp/crm` ou
`/mcp/studio`. Usar um token de CRM no Studio é **401**, não 403. Descompasso
de audience não é scope faltando. Reconecte no outro servidor; não tente de
novo.

## Tokens de workspace

Um token estático `sk_live_…` / `sk_test_…` é o caminho de máquina. O mesmo
formato da [API REST](/pt-BR/guides/authentication). Envie como
`Authorization: Bearer sk_live_…`.

Ele não tem usuário, então o ACL de visibilidade do CRM não se aplica: o
token lê cada registro do workspace que os seus scopes permitirem. Trate-o
como acesso a todo o workspace. Um token por integração, nunca no controle de
versão.

## Trocar de workspace

Uma conexão fica ligada a um workspace pela vida dela. Para usar outro, tire
o conector e adicione de novo, depois escolha o outro workspace no consent. A
mesma reconexão é como você concede writes.

Você não consegue apontar uma URL para dois workspaces ao mesmo tempo.
