---
name: rn
description: "Rota Nacional — API de IA compatível com OpenAI e Anthropic, com a barreira de privacidade (CPF, CNPJ, e-mail, telefone e nomes) antes do modelo. Use quando a tarefa envolver Rota Nacional, rota-nacional.ia.br, modelos rota/* ou limpeza de dados pessoais por API."
---

# Rota Nacional — skill para agentes

**Live:** https://rota-nacional.ia.br  
**Local:** https://127.0.0.1:8773 (certificado do dev)  
**Descoberta:** `GET /api/` · `/llms.txt` · `/llms-full.txt` · `/openapi.json` · `/developers`  
**MCP:** `POST https://rota-nacional.ia.br/mcp`

Chave: `Authorization: Bearer <chave>` — a criada na conta (Chaves de API, `mmk_…`) ou uma `sk-rota-…` de antes. A
barreira roda ANTES de qualquer modelo, pela política da organização: `placeholder` (marcadores `[CPF_1]`,
`[PESSOA_1]`…), `redact` (remove), `block` (recusa com 422) ou `monitor` (só registra). O `policy` do pedido só
endurece a da organização; texto do prompt nunca muda a política. Respostas trazem categorias e contagens, nunca os
valores. Conta nova: 30 dias de teste com cota; depois, crédito pré-pago em reais por Pix, no painel (`/app`).

## Operações

| Tool | HTTP |
|------|------|
| `api_index` | `GET /api/` |
| `listar_modelos` | `GET /v1/models` — ids `rota/*` e para que serve cada um; público |
| `conversar` | `POST /v1/chat/completions` — corpo da OpenAI, `stream: true` em SSE; `rota/auto` escolhe o modelo |
| — | `POST /v1/messages` — a API Messages da Anthropic (Claude Code: `ANTHROPIC_BASE_URL` = a origem, `ANTHROPIC_AUTH_TOKEN` = a chave, `ANTHROPIC_MODEL` = um id `rota/*`) |
| `limpar_dados_pessoais` | `POST /v1/privacy/clean` — `text`, `input` ou `items`; sem modelo nenhum |
| — | `POST /v1/privacy/jobs` e `GET /v1/privacy/jobs/:id` — a mesma limpeza em lote, consultável |
| — | `POST /v1/privacy/extract` — PDF (ou imagem, OCR beta) até 25 MB → texto já limpo |
| — | `POST /v1/audio/transcriptions` — áudio até 25 MB → transcrição já limpa |
| — | `GET /v1/capabilities` — o que os workers conectados executam agora |
| — | `POST /v1/embeddings`, `/v1/audio/speech`, `/v1/audio/music`, `/v1/audio/compositions`, `/v1/images/generations`, `/v1/images/edits`, `/v1/ocr`, `/v1/documents/fidelity/jobs`, `/v1/documents/review/jobs` — prévia; as assíncronas devolvem 202 com `status_url` |
| — | `GET /v1/jobs/:id`, `GET /v1/jobs/:id/result`, `DELETE /v1/jobs/:id` — o job de uma capacidade |

O painel (`/app`) fala com `/api/app/*` pela sessão da conta (não pela chave), na organização do `X-Organization-Id`:
`GET /api/app/perfil`, `POST /api/app/aceite` (os Termos e a retenção legal, antes de tudo), `GET /api/app/resumo`,
`GET /api/app/quota`, `GET /api/app/uso` (`?cursor=`, `?limit=`), `GET`/`POST /api/app/modelos`,
`GET /api/app/creditos`, `PATCH /api/app/organizacao` e `POST /api/app/privacy/clean`. As chaves são as da conta
(`/api/account/keys`) e a compra é o Pix da casa (`/api/credito/asaas`). A home mostra os números públicos de
`GET /api/public/stats`.

Erros: 401 chave; 403 conta aguardando liberação, teste encerrado, modelo fora da organização ou origem de rede fora
da política; 422 bloqueio da barreira; 429 limite por minuto ou cota. Imagem ou documento dentro do chat são
recusados: extraia antes com `/v1/privacy/extract`.

Nunca envie dado real de teste: use textos fictícios. A detecção tem limites; confira o resultado para o seu processo.
