Jurisfylex
README.md
# Jurisfylex
Servidor MCP de **pesquisa e verificação jurídica com prova de origem**, para advocacia
brasileira. Versão **0.3.0** (laboratório; não homologado para uso em petições sem conferência humana).
O objetivo central é impedir que uma peça seja protocolada com citação inexistente, divergente,
cancelada ou revogada. Para isso, toda resposta traz a fonte, a data da coleta e um status de
verificação próprio, e **falha de fonte nunca vira "nenhum resultado"**.
## O que funciona hoje
| Ferramenta | O que faz | Fonte |
|---|---|---|
| `pesquisar_jurisprudencia` | Pesquisa acórdãos, decisões, súmulas, OJs e PNs do TST com relator, órgão, datas e link oficial; para STF e STJ devolve status explícito e o link oficial de pesquisa já preenchido | TST (portal oficial) |
| `verificar_julgado` | Confere um julgado pelo número CNJ e, campo a campo, classe, relator, data, órgão e trecho da ementa; só atesta a citação (`citation_fully_verified`) se relator ou data conferirem e a decisão for única; guarda SHA-256 do inteiro teor | TST; demais tribunais: existência via DataJud |
| `verificar_sumula` | Confere texto e **situação** (ex.: Súmula 437 do TST — CANCELADA) de súmula, OJ ou PN | TST |
| `verificar_norma` | Confere identidade, data e publicação de norma federal, revogação total e o histórico de alterações de um artigo (ex.: art. 611-A da CLT) | Senado Federal |
| `consultar_processo_publico` | Metadados públicos do processo (classe, órgão, assuntos, movimentos); sigilo respeitado. **Desligado por padrão** até a análise jurídica da issue #11 | DataJud (CNJ) |
| `auditar_citacoes` | Recebe a minuta inteira, extrai as citações (com classe, relator e data ao lado do número) e confere cada uma; aponta trechos com cara de citação que não reconheceu; `can_file` é só indicativo e a revisão humana é sempre exigida | todas |
| `verificar_fontes` | Catálogo das fontes: o que está operacional, bloqueado, planejado ou sob análise jurídica (sem rede) | — |
| `validar_numero_cnj` | Dígito verificador e tribunal do número CNJ (não prova existência) | — |
| `diagnosticar_fontes` | Estado das fontes, disjuntores e teste ao vivo opcional | — |
Regras de verificação: `verified_against_primary_source` só quando a fonte oficial devolveu o
registro e os campos conferem; `contradicted_or_invalid` só com prova (dígito verificador CNJ
inválido, campo divergente, ausência em todas as fontes oficiais); qualquer falha de fonte é
`pending_primary_source_verification` com `can_cite=false`.
## Limites conhecidos (sem maquiagem)
- **STF e STJ** bloqueiam automação com desafio anti-robô. O servidor não contorna: devolve o link
oficial e marca a citação como pendente de conferência manual.
- **TJs, TRFs e TRTs:** só existência e metadados do processo (DataJud); o conteúdo do acórdão
não é conferido automaticamente.
- **Normas:** não há texto compilado por artigo; há alertas de alteração/revogação por artigo.
- **Autenticação por tokens** serve para uso privado (Claude Code e clientes que aceitam cabeçalho).
Conectores que exigem OAuth (ex.: conector personalizado do claude.ai) precisam do modo `jwt`
com um servidor de autorização (Keycloak, Auth0 etc.).
- Módulo de autos/peças (Fase 5) e multi-tenant não foram implementados.
Detalhes em `docs/AUDITORIA_FASE0.md` e `docs/TESTES_ACEITE.md`.
## Uso local (stdio)
```bash
python -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
export DATAJUD_API_KEY='<chave publica vigente na wiki do DataJud>'
jurisfylex # stdio, para Claude Desktop/Code no mesmo computador
```
## Uso como serviço HTTP (MackNa Cloud)
```bash
jurisfylex-token igor research,verify # gera o token e a linha para JURISFYLEX_TOKENS
docker build -t jurisfylex .
docker run -p 8110:8110 -e JURISFYLEX_TOKENS='igor=sha256:...=research|verify' \
-e DATAJUD_API_KEY='...' jurisfylex
```
Endpoint MCP: `/mcp` (Streamable HTTP). Saúde: `/health` e `/ready`. Passo a passo no MackNa em
`docs/MACKNA_DEPLOY.md`.
Claude Code:
```bash
claude mcp add --transport http jurisfylex https://<dominio>/mcp \
--header "Authorization: Bearer <token>"
```
## Testes
```bash
pytest # 102 testes offline (fixtures reduzidas de respostas reais)
pytest -m live -v # 7 testes contra as fontes reais (rede; DataJud exige chave)
ruff check src tests
```
## Licenças e fontes
Código MIT. Dados de terceiros têm regras próprias: DataJud é restrito a fins legais e não
comerciais, com citação obrigatória do CNJ (Portaria CNJ 160/2020 e alterações). Ver
`docs/LICENCAS_E_FONTES.md`.
## Produto único
O usuário conecta apenas ao **Jurisfylex**. BRLaw e MCP Brasil foram auditados e ficam como
componentes internos opcionais, desligados (ver `docs/AUDITORIA_FASE0.md` e `NOTICE`). Não há
segundo MCP público.
## Planejamento
Acompanhamento no [ROADMAP.md](ROADMAP.md) e na [lista mestra #20](https://github.com/cocoputiz-sudo/jurisfylex/issues/20).
Estudo dos tribunais: `docs/ESTUDO_TRIBUNAIS_2026-10-17.md`.
> **Atenção:** repositório público. Nenhum documento sigiloso, token, senha ou processo privado
> deve ser commitado. Os workflows `security.yml` (Bandit, pip-audit, extensões proibidas) e
> `secret-history.yml` (Gitleaks) rodam em cada PR.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessUnresponsive