# auth.md — acesso de agentes a cantivy.com

## Para quem é isto

Agentes de IA e clientes automatizados que leem os dados públicos que este site publica.

## Ler os dados: sem autenticação

Todo endpoint sob `https://cantivy.com/dados/v1/` é público, sem chave e com CORS aberto. Não há etapa de
cadastro, não há chave de API para provisionar, não há servidor de autorização OAuth e, portanto,
não há documento `/.well-known/oauth-authorization-server` a buscar — publicar um anunciaria um
fluxo que não existe.

| Endpoint | O que retorna |
|---|---|
| `https://cantivy.com/dados/v1/tunings.json` | 20 afinações de 6 instrumentos, com a frequência de cada corda |
| `https://cantivy.com/dados/v1/chords.json` | 108 digitações de acorde para violão e guitarra |
| `https://cantivy.com/dados/v1/progressions.json` | 10 progressões harmônicas calculadas em 12 tons |
| `https://cantivy.com/dados/v1/genres.json` | 30 gêneros brasileiros, 13 com faixa de andamento |
| `https://cantivy.com/dados/v1/status.json` | Frescor dos conjuntos de dados |
| `https://cantivy.com/dados/v1/openapi.json` | Descrição OpenAPI 3.1 de tudo acima |

**Por que `/dados/` e não `/api/`.** `/api/` está reservado para o backend do aplicativo e é
`Disallow`ado no robots.txt. Um conjunto de dados aberto sob um caminho proibido a rastreadores
seria um conjunto de dados publicado para ninguém.

Uso justo: são arquivos estáticos atrás de um CDN. Guarde-os em cache. Eles mudam quando o site é
recompilado; `status.json` traz a data, se você precisar decidir se vale rebuscar.

Licença: CC BY 4.0. Atribua a Cantivy — https://cantivy.com, ou à página de onde o número veio.

## Cadastro de agentes

**Nenhum cadastro é necessário, e nenhum é possível.** Não há endpoint de registro de agente, não há
`register_uri`, não há fluxo de provisionamento de cliente e não há credencial a obter. O tipo de
identidade suportado é **anônimo**: um agente pode se identificar por um User-Agent, e nada na
resposta muda de um jeito ou de outro.

| Pergunta | Resposta |
|---|---|
| Endpoint de registro | Nenhum. Leia os endpoints diretamente. |
| Métodos de autenticação | `none` (anônimo) |
| Tipos de credencial | Nenhuma é emitida |
| Token endpoint | Nenhum |
| Escopos | Nenhum — todo endpoint é público e somente leitura |
| Limite de uso atrelado a identidade | Nenhum |

O mesmo, legível por máquina. Esta é a forma honesta de um bloco `agent_auth` para um serviço que
não autentica ninguém — as URIs de registro, credencial e revogação são `null` porque não existem,
não omitidas, para que um cliente distinga "declarado ausente" de "esqueceram de publicar".

```json
{
  "agent_auth": {
    "identity_types_supported": ["anonymous"],
    "anonymous": {
      "credential_types_supported": [],
      "claim_uri": null
    },
    "register_uri": null,
    "revocation_uri": null,
    "events_supported": [],
    "documentation": "https://cantivy.com/dados/"
  }
}
```

## Ferramentas: MCP e A2A

Um servidor MCP está publicado em `https://cantivy.com/mcp` (Streamable HTTP, sem autenticação); o cartão dele
está em `https://cantivy.com/.well-known/mcp/server-card.json`. Um endpoint A2A que responde as mesmas
perguntas em prosa está em `https://cantivy.com/a2a`, cartão em `https://cantivy.com/.well-known/agent-card.json`. Os dois
expõem os mesmos dados somente-leitura acima, como ferramentas. Nenhum dos dois grava nada, cobra
nada ou lê qualquer coisa sobre um usuário.

## Agir em nome de um usuário: não disponível

As ferramentas deste site — afinador, metrônomo, piano, gravador, contador de BPM, gerador de
acordes, conversor — rodam inteiramente no navegador de quem acessa, com Web Audio API e
MediaRecorder. Não existe API de usuário no servidor, não existe conta, e não existe credencial que
um agente pudesse segurar. Se você é um agente a quem pediram "afine meu violão", a resposta certa é
entregar a página do afinador à pessoa, não tentar uma integração que não existe.

## Contato

Suporte e abuso: contato@cantivy.com · https://cantivy.com/contato/
