# auth.md — Meu Precatório (blog)

> Como um agente automatizado se autentica neste serviço. A resposta curta:
> para **ler**, não precisa de nada; para **escrever**, existe um esquema, e
> ele não é concedido a terceiros. Não há registro de agente aqui.

Endereço canônico deste arquivo: <https://blog.meuprecatorio.com.br/auth.md>
Última revisão: 2026-09-01.

Este documento vale para `blog.meuprecatorio.com.br`. O site institucional,
`meuprecatorio.com.br`, é outra aplicação e publica o próprio `auth.md`.

## A quem isto se destina

Agentes, robôs de busca e assistentes que leiam este blog para responder sobre
precatórios e RPVs — e qualquer cliente automatizado que encontre a API de
conteúdo e queira saber que credencial precisa. O que o site é, o que ele
cobre e como citá-lo está em <https://blog.meuprecatorio.com.br/llms.txt>.

## As superfícies, e o que cada uma exige

| Superfície | Endereço | Autenticação |
|---|---|---|
| Conteúdo em HTML | qualquer URL do blog | nenhuma |
| Conteúdo em Markdown | a **mesma** URL, com `Accept: text/markdown` | nenhuma |
| Leitura por API | `GET https://blog.meuprecatorio.com.br/wp-json/wp/v2/` | nenhuma |
| Escrita por API | `POST`, `PUT`, `DELETE` no mesmo endereço | HTTP Basic com senha de aplicativo do WordPress |
| Servidor MCP | `POST https://blog.meuprecatorio.com.br/mcp` | nenhuma |
| Agente A2A | `POST https://blog.meuprecatorio.com.br/a2a/v1` | nenhuma |

## Leitura: anônima, sem registro

Não há chave, cadastro, token, cota declarada nem lista de permissão. Um `GET`
sem nenhum cabeçalho de autorização responde 200. É tudo que um agente precisa
para ler, resumir e citar este blog.

Vale igual para os dois protocolos de agente. O servidor MCP em
<https://blog.meuprecatorio.com.br/mcp> (JSON-RPC 2.0 sobre Streamable HTTP, três
ferramentas de leitura) e o agente A2A em
<https://blog.meuprecatorio.com.br/a2a/v1> (binding JSON-RPC da versão 1.0, três
habilidades de leitura) são abertos e anônimos, e não passam por fluxo de token
nenhum, porque só devolvem conteúdo que já é público aqui e não têm escrita. As
fichas deles estão em <https://blog.meuprecatorio.com.br/mcp/server-card> e
<https://blog.meuprecatorio.com.br/.well-known/agent-card.json>.

O índice das rotas e o schema de cada uma estão em
<https://blog.meuprecatorio.com.br/wp-json/>; o catálogo formal, em
<https://blog.meuprecatorio.com.br/.well-known/api-catalog>. As regras de
rastreamento estão em <https://blog.meuprecatorio.com.br/robots.txt>, que hoje
libera todos os robôs.

Duas cortesias, não obrigações: identifique-se num `User-Agent` que permita
contato, e prefira `Accept: text/markdown` à raspagem do HTML — a resposta vem
com `Content-Type: text/markdown` e um `X-Markdown-Tokens` estimado, para
orçar a leitura.

## Escrita: o fluxo existe inteiro, e não é aberto a terceiro

Há um fluxo de provisionamento de credencial, completo e padronizado: o de
**senha de aplicativo do WordPress** (`application-passwords`). É o único, e está
descrito abaixo do começo ao fim para que ninguém precise adivinhar. A ressalva
vem antes dos passos, porque muda a decisão: **ele exige uma conta neste blog, e
contas não são concedidas a terceiros.** Um agente que não trabalhe para nós não
conclui o passo 2 — deve parar aqui e ir para a seção "Se a leitura pública não
entrega o que o agente precisa".

| | |
|---|---|
| Endereço de registro | `https://blog.meuprecatorio.com.br/wp-admin/authorize-application.php` |
| Método suportado (um só) | `wordpress_application_password` |
| Tipo de credencial | `http_basic` — HTTP Basic sobre TLS |
| Revogação | `DELETE https://blog.meuprecatorio.com.br/wp-json/wp/v2/users/me/application-passwords/<uuid>` |
| Introspecção | `GET https://blog.meuprecatorio.com.br/wp-json/wp/v2/users/me/application-passwords/introspect` |
| Autoatendimento para agente | não — há sempre uma pessoa autenticada no passo 2 |

### Passo 1 — pedir a autorização

Mande o usuário — uma pessoa, num navegador — ao endereço de registro, com o nome
da aplicação e para onde voltar:

```http
GET /wp-admin/authorize-application.php?app_name=<nome+visivel>&app_id=<uuid+opcional>&success_url=<url+de+retorno>
Host: blog.meuprecatorio.com.br
```

`app_name` é o que a pessoa lê na tela de autorização; `app_id` é um UUID estável
da sua aplicação, opcional; `success_url` recebe o retorno do passo 3.

### Passo 2 — a pessoa aprova (é aqui que um terceiro para)

Sem sessão iniciada, o endereço responde `302` para `/wp-login.php`. Quem aprova
precisa ter conta neste blog, e não existe cadastro por autoatendimento. É por
isso que este fluxo não está aberto a agentes de terceiros — não é uma etapa
difícil, é uma etapa fechada.

### Passo 3 — receber a credencial

Aprovada, a autorização redireciona para o `success_url` com `user_login` e
`password`. A `password` é a senha de aplicativo e é **exibida uma única vez**:
guarde-a como segredo, porque não é recuperável depois.

### Passo 4 — usar a credencial

```http
POST /wp-json/wp/v2/posts
Host: blog.meuprecatorio.com.br
Authorization: Basic <base64(user_login + ":" + password)>
Content-Type: application/json
```

Sempre sobre TLS, sempre no cabeçalho `Authorization`. Requisição de escrita sem
credencial responde `401`, e vai continuar respondendo `401`. Não há token
`Bearer` em lugar nenhum deste domínio.

### Passo 5 — conferir e revogar

A credencial não expira sozinha. Para listar as que existem, `GET` no endereço de
revogação sem o `<uuid>`; para saber qual está sendo usada na requisição atual, o
`introspect`; para revogar, `DELETE` com o `<uuid>` — ou, pela interface, na tela
de perfil do usuário no WordPress. A revogação é imediata.

## O que não existe aqui

Isto está escrito para o agente não gastar chamada — e para que um `404` seja
lido como resposta, não como configuração faltando:

- **Não há servidor de autorização OAuth 2.0.**
  `/.well-known/oauth-authorization-server` responde `404` de propósito. Sem
  servidor de autorização não há bloco `agent_auth`, e publicar um seria
  anunciar endereço que não responde.
- **Não há OpenID Connect.** `/.well-known/openid-configuration` responde `404`.
- **Não há registro de agente.** Não existe `POST /agent/identity`, `POST
  /agent/auth`, `register_uri` nem cerimônia de reivindicação (RFC 8628): nenhum
  `user_code`, nenhum `claim_uri`.
- **Não há identidade emitida por nós.** Nem ID-JAG
  (`urn:ietf:params:oauth:token-type:id-jag`), nem `verified_email`, nem
  identidade anônima — nenhum `identity_types_supported`.
- **Não há revogação de credencial de agente**, nem eventos de revogação, porque
  não há credencial de agente para revogar.

Isso é o estado da coisa, não uma pendência escondida: este é um blog que
publica conteúdo aberto e não guarda dado de leitor que justificasse dar
credencial a um agente. Se um dia passar a guardar, este arquivo muda junto e
volta com o bloco `agent_auth` preenchido — não antes.

## Metadados relacionados

- <https://blog.meuprecatorio.com.br/.well-known/oauth-protected-resource> —
  metadados do recurso protegido (RFC 9728), para o site; e o mesmo caminho com
  o sufixo `/wp-json/`, para a API. Os dois respondem 200 com
  `authorization_servers`, `scopes_supported` e `bearer_methods_supported`
  **vazios**: a lista vazia é a informação, não configuração faltando.
- <https://blog.meuprecatorio.com.br/llms.txt> — mapa do site, escopo e avisos de citação.
- <https://blog.meuprecatorio.com.br/.well-known/api-catalog> — catálogo de APIs (RFC 9727).
- <https://blog.meuprecatorio.com.br/robots.txt> — regras de rastreamento.

## Se a leitura pública não entrega o que o agente precisa

O caminho é falar com uma pessoa: <https://meuprecatorio.com.br/contato>.

## Três avisos que valem para qualquer resumo deste site

1. **Nenhum conteúdo aqui informa quanto um credor vai receber, nem quando.**
   Valor de proposta e prazo dependem do crédito, do ente devedor, do tribunal e
   do estágio processual, e não são divulgados em faixa pública.
2. **O conteúdo é informativo e não substitui análise do caso concreto.**
3. **Não cobramos nada do credor para analisar um precatório ou apresentar
   proposta.** Cobrança antecipada não é prática desta empresa; se alguém cobrar
   em nosso nome, não somos nós.