Pular para o conteúdo

Introdução

O Valter é um backend de conhecimento jurídico que serve jurisprudência do STJ (Superior Tribunal de Justiça) através de uma API REST e um servidor MCP (Model Context Protocol). Ele transforma decisões judiciais brutas em raciocínio jurídico estruturado, verificado e composível — permitindo que LLMs e advogados consultem precedentes, analisem divergências entre ministros e componham argumentos respaldados por um grafo de conhecimento.

O Valter faz parte do ecossistema sens.legal, junto com o Leci (legislação) e o Juca (frontend para advogados).

LLMs são assistentes de pesquisa jurídica poderosos, mas têm um problema fundamental: alucinam referências legais. Um LLM vai citar com convicção uma Súmula que não existe, atribuir uma decisão ao ministro errado ou inventar um número de processo que nunca foi protocolado.

O Valter existe para resolver isso. Em vez de deixar LLMs gerarem conhecimento jurídico a partir dos dados de treinamento, o Valter fornece um backend de conhecimento estruturado onde cada referência é rastreável a dados reais do tribunal. Quando um LLM usa o Valter como ferramenta (via MCP), ele pode:

  • Buscar jurisprudência com retrieval híbrido (lexical + semântico + grafo de conhecimento)
  • Verificar que qualquer referência legal realmente existe antes de apresentá-la ao usuário
  • Compor argumentos a partir de padrões de sucesso encontrados no grafo de conhecimento
  • Entender quem julga o quê e como as posições divergem ao longo do tempo

A base de conhecimento do Valter é construída a partir de dados públicos do STJ:

StoreRegistrosO que contém
PostgreSQL~23.400 decisõesTexto integral, ementas, metadados, features extraídas por IA
Neo4j~28.500 nós, ~207.000 arestasDecisões conectadas por critérios, dispositivos, precedentes
Qdrant~3.700 vetores (768-dim)Embeddings semânticos para busca por similaridade
PostgreSQL~810.000 registros de metadadosMetadados brutos do tribunal STJ

O Valter atende três tipos de consumidores através de dois protocolos:

O Juca é um frontend Next.js para advogados que consome a API REST do Valter diretamente. Ele oferece uma interface amigável para buscar jurisprudência, analisar processos e revisar insights gerados por IA.

O Claude Desktop e Claude Code conectam via MCP stdio — uma conexão direta em nível de processo que não requer rede. A configuração é uma única entrada no claude_desktop_config.json:

{
"mcpServers": {
"valter": {
"command": "python",
"args": ["-m", "valter.mcp"],
"cwd": "/caminho/para/Valter"
}
}
}

O ChatGPT conecta via MCP remoto — um servidor HTTP/SSE rodando na porta 8001 com autenticação HMAC. Ele é deployado no Railway junto com a API principal.

Os três consumidores acessam as mesmas 28 tools MCP e os mesmos data stores.

A maioria das plataformas de legal tech são motores de busca com um skin jurídico. O Valter é um grafo de conhecimento com uma camada de raciocínio. Veja como essa diferença se manifesta:

O que os outros fazemO que o Valter faz
Busca por palavras-chaveBusca híbrida: BM25 lexical + vetores semânticos + boost por grafo de conhecimento + reranking com cross-encoder
Lista de casos similaresComposição de argumentos a partir de padrões de sucesso no grafo — quais critérios levam a quais resultados, com qual taxa de sucesso
”A jurisprudência diz…""O REsp 1.234.567 diz X, verificado contra dados do tribunal, citado 14 vezes no grafo, aplicado pelo Ministro Y em 73% dos casos da categoria Z”
Tratam todas as decisões como iguaisInteligência temporal — decisões recentes pesam mais, detecção de tendência (crescente, declinante, estável)
Ignoram quem julgaPerfis de ministros — taxas de sucesso por ministro, divergências ativas, padrões comportamentais
Alucinam referênciasVerificação anti-alucinação: cada súmula, nome de ministro, número de processo e referência legislativa checados contra dados reais
Sistemas fechados e proprietáriosMCP-native — qualquer LLM compatível com MCP pode usar o Valter como ferramenta
Documentos como blobs de textoGrafo de conhecimento — decisões conectadas por critérios, dispositivos, precedentes e legislação em uma ontologia baseada em FRBR

As capacidades do Valter são organizadas em seis domínios:

O pipeline de busca combina cinco estratégias em um único fluxo. Uma requisição de busca executa BM25 lexical e similaridade semântica Qdrant em paralelo, combina resultados via pontuação ponderada ou Reciprocal Rank Fusion (RRF), eleva scores usando conectividade do grafo Neo4j, e reordena os top resultados com um cross-encoder. Query expansion via Groq LLM pode gerar até 3 variantes da query para melhor recall.

Endpoints: POST /v1/retrieve, POST /v1/similar_cases, POST /v1/search/features, POST /v1/factual/dual-search

Doze endpoints expõem o grafo de conhecimento Neo4j para raciocínio jurídico. Você pode detectar divergências ativas entre ministros, encontrar o caminho de argumento ótimo para uma categoria, rastrear como a aplicação de critérios evolui ao longo do tempo, e gerar perfis abrangentes de ministros.

Endpoints: POST /v1/graph/* (12 endpoints)

O sistema de verificação checa referências legais contra dados reais do tribunal — súmulas, nomes de ministros, números de processo e legislação. O sistema de enriquecimento adiciona análise IRAC (Issue, Rule, Application, Conclusion) e contexto do grafo de conhecimento a qualquer decisão.

Endpoints: POST /v1/verify, POST /v1/enrich, POST /v1/factual/extract

Um workflow completo de análise de caso processa PDFs desde o upload até a análise jurídica revisada. O pipeline PROJUDI extrai e segmenta o documento, a análise de fases identifica estágios processuais, e o matching de jurisprudência encontra precedentes relevantes para cada fase. Uma state machine garante transições auditáveis, e revisão humana permite aprovação ou rejeição em cada etapa.

Endpoints: POST /v1/ingest/* (17 endpoints)

Vinte e oito tools MCP expõem todas as capacidades do Valter para LLMs. As tools são organizadas em categorias de knowledge, graph e workflow. Os transportes stdio (Claude) e HTTP/SSE (ChatGPT) são suportados, com autenticação por API key e HMAC respectivamente.

Logging JSON estruturado via structlog com trace IDs em cada request, 30+ métricas Prometheus e tracing OpenTelemetry fornecem visibilidade sobre o comportamento do sistema.

O Valter é um monolito modular com quatro runtimes — todos compartilhando o mesmo codebase Python:

RuntimeComandoPortaPropósito
REST APImake dev8000Endpoints HTTP para Juca e consumidores diretos
MCP stdiopython -m valter.mcpConexão local para Claude Desktop/Code
MCP HTTP/SSEmake mcp-remote8001Conexão remota para ChatGPT
ARQ Workermake worker-ingestProcessamento em background de ingestão de PDFs

O codebase segue uma arquitetura de camadas estrita: api/core/models/, com stores/ implementando interfaces de protocolo de core/protocols.py. A lógica de negócio nunca importa stores diretamente — tudo flui via injeção de dependência.

Para um mergulho profundo na arquitetura, veja Visão Geral da Arquitetura.

  • Quickstart — Rode o Valter localmente em menos de 5 minutos
  • Instalação — Guia completo de setup com todos os bancos e opções
  • Referência da API — Documentação completa de endpoints
  • Tools MCP — Todas as 28 tools MCP com parâmetros e exemplos