APRENDIZADO & COGNIÇÃO · ESTUDO BASEADO EM EVIDÊNCIA

"Nada consta" ou "fonte fora do ar"? O problema de dar dado público para um agente de IA

Estou montando um servidor MCP que checa empresa brasileira por CNPJ: cadastro na Receita, sanções federais (CEIS, CNEP, CEPIM, acordos…

Estou montando um servidor MCP que checa empresa brasileira por CNPJ: cadastro na Receita, sanções federais (CEIS, CNEP, CEPIM, acordos de leniência), contratos com o governo federal e registro na CVM. A parte de chamar as APIs foi a fácil. O que deu trabalho foi outra coisa, e acho que vale para quem integra dado público com agente.

O problema

Se a API de sanções do Portal da Transparência dá timeout e o seu código devolve [], o agente lê “empresa sem sanções”. Para um fluxo de KYC ou due diligence, isso é o pior erro possível: um falso negativo silencioso, com cara de resposta boa.

E acontece fácil: try/except que devolve lista vazia, .get('dados', []), fallback “para não quebrar”. O LLM não tem como desconfiar.

O que fiz

1. Status por fonte, sempre. Toda resposta traz um bloco fontes, uma entrada por fonte consultada:

{"nome": "Portal da Transparência – CEIS", "status": "ok", "consultado_em": "2026-10-04T09:39:07-03:00", "de_cache": true, "idade_cache_s": 45573}

status é ok, nao_encontrado, erro, timeout ou limite_excedido. A regra: lista vazia só existe com status ok. Fonte com erro devolve null, nunca [].

2. Resultado parcial em vez de falha total. O relatório completo roda as 4 consultas em paralelo, cada uma com timeout próprio. Se uma estoura, ela volta null, entra em secoes_com_falha e o campo completo vira false. O agente recebe o que deu certo e sabe exatamente o que faltou.

3. Cache visível. Cadastro fica 7 dias em cache; sanções e contratos, 24h. Mas de_cache e idade_cache_s estão em toda fonte: quem consome decide se aquele dado de ontem serve.

4. Fato, não opinião. Nada de score de risco. O servidor devolve fatos com fonte e data; quem interpreta é o agente do cliente. Score parece valor agregado, mas é responsabilidade que eu não tenho como sustentar.

Pegadinhas das fontes (para quem for integrar)

  • O filtro por CNPJ do Portal só casa o CNPJ exato. Consultar a matriz não traz sanção da filial e vice-versa. Consultar uma filial dispara também a consulta da matriz, e o registro de outro estabelecimento vem marcado. O caminho inverso não existe: o servidor não varre as filiais a partir da matriz. Se a sanção está numa filial, é preciso consultar o CNPJ dela.
  • Campos com o texto “Sem informação” (em data, inclusive) e números negativos como -3 no lugar de nulo. Tudo isso vira null.
  • A API de contratos não ordena. Para devolver “os mais recentes”, é preciso ler as páginas e ordenar localmente, com teto.
  • CVM não tem API por CNPJ, mas o cadastro de companhias abertas é um CSV de 1,5 MB atualizado diariamente (latin1, separador ;). Baixar e indexar em memória é mais rápido e confiável que qualquer API. E a mesma empresa aparece mais de uma vez (registro cancelado antigo + ativo).
  • Cobertura: sanções e contratos são só da esfera federal. “Nada consta” aqui não prova nada em estado ou município, e o aviso da resposta diz isso.

LGPD

Dado público não é dado liberado para qualquer uso. O servidor nunca devolve QSA (sócios), e-mail ou telefone. Para MEI e empresário individual, razão social e endereço costumam conter nome e residência da pessoa, então são omitidos (dados_omitidos_lgpd: true). Sanção aplicada a CPF é descartada.

Exemplo real

Resposta completa da Petrobras e as 5 ferramentas: https://github.com/DouglasGouvea/mcp-empresas-br-docs

Está publicado na MCPize (https://mcpize.com/mcp/mcp-empresas-br), com plano gratuito de 100 consultas/mês, no Smithery (https://smithery.ai/servers/gouvea-douglas/mcp-empresas-br) e no registro oficial de MCP. Feedback de quem trabalha com compliance ou KYC é o que mais me ajuda agora: o que falta para isso entrar num fluxo real?

Perguntas frequentes

Respostas institucionais sobre esta cobertura, fontes e limites editoriais.

Sobre o que trata “"Nada consta" ou "fonte fora do ar"? O problema de…”?
Estou montando um servidor MCP que checa empresa brasileira por CNPJ: cadastro na Receita, sanções federais (CEIS, CNEP, CEPIM, acordos de leniência), contratos com o governo federal e registro na CVM. A parte de chamar as…
O que a matéria explica sobre “O problema”?
Se a API de sanções do Portal da Transparência dá timeout e o seu código devolve [], o agente lê "empresa sem sanções". Para um fluxo de KYC ou due diligence, isso é o pior erro possível: um falso negativo silencioso, com…
O que a matéria explica sobre “O que fiz”?
1. Status por fonte, sempre. Toda resposta traz um bloco fontes, uma entrada por fonte consultada:{"nome": "Portal da Transparência – CEIS", "status": "ok", "consultado_em": "2026-10-04T09:39:07-03:00", "de_cache": true, "idade_cache_s": 45573}status é ok, nao_encontrado, erro, timeout ou limite_excedido. A regra: lista vazia só existe…
O que a matéria explica sobre “Pegadinhas das fontes (para quem for integrar)”?
O filtro por CNPJ do Portal só casa o CNPJ exato. Consultar a matriz não traz sanção da filial e vice-versa. Consultar uma filial dispara também a consulta da matriz, e o registro de outro estabelecimento vem marcado. O caminho inverso não…
O que a matéria explica sobre “Exemplo real”?
Resposta completa da Petrobras e as 5 ferramentas: https://github.com/DouglasGouvea/mcp-empresas-br-docsEstá publicado na MCPize (https://mcpize.com/mcp/mcp-empresas-br), com plano gratuito de 100 consultas/mês, no Smithery (https://smithery.ai/servers/gouvea-douglas/mcp-empresas-br) e no registro oficial de MCP. Feedback de quem trabalha com compliance ou KYC é o que mais me ajuda…
Quem edita o conteúdo do Estrato Mente?
A cobertura é produzida e revisada pela equipe editorial do Estrato Mente, com editor-chefe responsável pela linha editorial. Conheça a redação em https://mente.estrato.cc/equipe/.
Quais fontes o Estrato prioriza?
Priorizamos fontes primárias (órgãos oficiais, balanços, estudos revisados, documentos públicos) e cruzamos informações antes da publicação, conforme a política editorial.
Como solicitar correção de uma matéria?
Envie o pedido pela página de Correções (https://mente.estrato.cc/correcoes/) ou Contato (https://mente.estrato.cc/contato/). Erros materiais são corrigidos com registro da atualização.
WhatsApp X LinkedIn
Compartilhar: LinkedIn
Nina Barros

Nina Barros

Nina Barros integra a equipe editorial do Estrato Mente, vertical da rede Estrato, na função de Repórter de Finanças comportamentais. O escopo permanente de cobertura inclui vieses e decisões, com atenção ao leitor brasileiro que busca contexto factual, datas oficiais e implicações práticas. Na produção diária, prioriza fontes primárias (órgãos públicos, balanços, papers e documentos oficiais), cruza pelo menos duas referências independentes quando o tema é contestado e evita manchetes que prometam certeza onde há incerteza. Critérios de qualidade: lead com o fato principal, atribuição clara de autoria da equipe Estrato, atualização com selo quando há mudança material e linguagem acessível sem simplificar demais o risco ou o contexto. Trabalha sob revisão da mesa editorial e do editor-chefe do portal. Matérias YMYL recebem segunda leitura antes da publicação e podem ser atualizadas quando surgem novos dados oficiais. Limites: este perfil descreve o papel editorial na marca Estrato. O conteúdo publicado é informativo e não constitui aconselhamento médico, financeiro, jurídico ou profissional personalizado. Transparência ao leitor: metodologia em /metodologia/, ética em /etica-editorial/, correções em /correcoes/, equipe em /equipe/ e canal em /contato/ ([email protected]). Na página-mãe da rede, a bio ampliada e o arquivo de matérias ficam em estrato.cc/blog/, com link para o arquivo do autor em cada portal.

Deixe um comentário