Soulfield Lens
Camada de revisão independente para texto gerado por IA: um modelo separado executa uma verificação fixa de dez pontos sobre a saída que não escreveu e retorna a linha sinalizada e o motivo por verificação, nunca uma nota.
Documentação
Soulfield Lens — servidor MCP
Validação de fora para dentro para texto gerado por IA, como uma ferramenta MCP.
Toda ferramenta de IA pergunta ao mesmo modelo que escreveu a resposta se ela é boa. Ele diz que sim. A Soulfield Lens é de fora para dentro: um modelo separado executa um portão fixo sobre sua saída. Ele verifica texto — não o escreve. Este pacote coloca esse portão dentro do Claude Code, Cursor e qualquer outro agente compatível com MCP, para que a saída possa ser validada no caminho onde é gerada.
O portão é fail-closed: um caso limítrofe retorna UNKNOWN, nunca uma aprovação silenciosa. Não há etapa de geração, então ele não pode inventar afirmações próprias — apenas verificar. Ele ainda pode errar em um julgamento; é exatamente por isso que casos limítrofes retornam UNKNOWN em vez de um sim confiante.
Este é um wrapper stdio fino em torno da API Lens hospedada (api.soulfield.one). Sem modelo local, sem etapa de build — um arquivo, duas dependências.
Ele expõe dois níveis. O nível de portão (3 ferramentas) não precisa de nada além de uma chave de API. O nível de validador (6 ferramentas) é opcional e só ativa se você também tiver o CLI lens-kit instalado localmente — ele executa verificações determinísticas entre arquivos e a memória de defeitos que o portão de documento único não consegue ver. Pule-o e o nível de portão funciona exatamente como antes.
Experimente antes de instalar qualquer coisa
O endpoint de demonstração sem chave executa o mesmo portão — algumas execuções por dia por IP, sem cadastro:
curl -s https://api.soulfield.one/v1/demo \
-H 'content-type: application/json' \
-d '{"text": "<paste the AI output you are about to ship>"}'
Instalação
npm install -g @soulfield/lens-mcp
Ou execute sem instalar: npx @soulfield/lens-mcp.
Claude Code
claude mcp add soulfield-lens \
-e SOULFIELD_API_BASE=https://api.soulfield.one \
-e SOULFIELD_API_KEY=<your-key> \
-- npx @soulfield/lens-mcp
Qualquer cliente MCP (config JSON)
{
"mcpServers": {
"soulfield-lens": {
"command": "npx",
"args": ["@soulfield/lens-mcp"],
"env": {
"SOULFIELD_API_BASE": "https://api.soulfield.one",
"SOULFIELD_API_KEY": "<your-key>"
}
}
}
}
Chamadas de produção precisam de uma chave de API — solicite uma em hello@soulfield.one. lens_health funciona sem uma.
Ferramentas
Nível de portão — API hospedada, funciona imediatamente
| Ferramenta | O que faz | Autenticação |
|---|---|---|
validate_content | Executa o portão de fora para dentro sobre o texto. Retorna aprovação/reprovação, pontuação, resultados por dimensão e detalhes de violação com raciocínio. domain opcional (geral, finanças, marketing, jurídico, SEO, agência) e context (público/propósito). | chave |
scrub_pii | Verificação no servidor para PII estruturada e segredos — e-mails, números de telefone do Reino Unido/EUA, números de cartão de crédito, SSNs dos EUA, números NI/UTR do Reino Unido, strings de conexão de banco de dados e padrões comuns de chave de API/credenciais. Retorna texto limpo (cada correspondência substituída por um marcador de tipo) além de descobertas. Baseado em padrões, sem chamada de LLM. Visa identificadores estruturados — não detecta nomes pessoais ou PII de forma livre, e a cobertura de formatos estruturados é de melhor esforço, não exaustiva. | chave |
lens_health | Verifica se a API Lens está ativa. Retorna status e versão. | nenhuma |
Nível de validador — opcional, requer o CLI lens-kit localmente
Nota de versão: o nível de validador chega na 1.1.0. Se
npm view @soulfield/lens-mcp versionainda reportar1.0.0, o registro ainda não alcançou este repositório enpx @soulfield/lens-mcpfornecerá apenas as três ferramentas do nível de portão. Instale a partir do código-fonte enquanto isso.
Efeito colateral que vale saber: toda chamada do nível de validador adiciona uma linha a
RUNS.mdem seu diretório de trabalho — esse é o registro de execução do kit, por design. O diretório é o argumentocwd, ou o cwd do próprio servidor se você o omitir, então passecwdexplicitamente se você se importa onde o registro fica. Valores sensíveis de flags são mascarados na linha (--deny <redacted>), então termos de negação não caem no disco.
Pré-requisito: pip install lens_kit (Apache-2.0, github.com/mrhpython/lens-kit), ou defina LENS_KIT_BIN para seu caminho. Sem ele, essas seis ferramentas retornam UNKNOWN com um erro — nunca uma aprovação silenciosa. Nenhuma chave de API necessária: elas rodam localmente e não fazem chamada de LLM.
Por que rodam localmente e não na API hospedada: elas pegam caminhos de arquivo do seu disco. Um endpoint hospedado que aceitasse caminhos locais arbitrários seria um vetor de divulgação de arquivos, não um recurso. No stdio, os caminhos são da sua própria máquina, então a capacidade é segura aqui e somente aqui — e por essa razão não será adicionada à API hospedada.
| Ferramenta | O que faz | Semântica de saída |
|---|---|---|
lens_consistency_leaks | Verifica arquivos para termos de lista de negação (literal insensível a maiúsculas/minúsculas). Execute em todo arquivo voltado ao cliente antes de uma publicação irreversível: captura um nome real de cliente, um codinome interno ou um absoluto banido sobrevivendo em texto publicado. Um verificador de credenciais não encontrará isso, porque nada aqui é uma credencial. Cego a negação: uma frase banida citada para negá-la corresponde identicamente à mesma frase afirmada. | acerto prova que a string está presente — julgue o veredito |
lens_consistency_numbers | Verifica se todo literal numérico em um resumo realmente aparece no corpo que ele resume. Captura a figura inventada. Tripwire: apenas correspondência literal, sem aritmética derivada, e uma figura citada como substituída ("substitui a estimativa ~471") sinaliza exatamente como uma desatualizada. Revise, não confie automaticamente. | violação / limpo |
lens_consistency_markers | Verifica se marcadores de evidência em uma fonte sobrevivem em toda saída renderizada — a ressalva ou citação descartada entre formatos. Sensível a maiúsculas/minúsculas, ao contrário de leaks acima: TRIPWIRE não corresponderá a Tripwire e será lido como descartado quando nada foi. Tripwire: uma renderização deliberada de subconjunto também subconta legitimamente. | violação / limpo |
Escolhendo termos de negação e marcadores. Esses três são tripwires, não oráculos — em uma execução ao vivo sobre a cópia deste próprio projeto, eles produziram seis flags e zero defeitos verdadeiros, em três classes distintas de falso positivo (negação, figura substituída, maiúsculas/minúsculas). Esse é o comportamento projetado, e é por isso que a doutrina é julgar, nunca aplicar automaticamente. Termos de negação funcionam melhor como strings que estão erradas em todo contexto — um nome real de cliente, um codinome interno — em vez de afirmações que você não faz, que legitimamente aparecem dentro de isenções. Marcadores funcionam melhor quando sua capitalização é estável entre fonte e renderização.
| lens_catches_relevant | Lê o banco de defeitos antes de validar: defeitos nomeados anteriores para um tipo de artefato, mais recorrentes primeiro. Padrões no limite são marcados [PROMOTE] — eles recorrem com frequência suficiente para merecer uma verificação fixa. | — |
| lens_catches_add | Registra um defeito nomeado para que seja capturado na próxima vez: o que estava errado, o padrão geral, a regra futura. Passagens rotineiras são rejeitadas por design — apenas defeitos reais. | — |
| lens_catches_stats | Contagens de recorrência por padrão com sugestões de promoção. Diz o que endurecer em seguida. | — |
Os dois níveis são complementares, não alternativas. O portão não tem ferramentas e nenhum acesso a arquivos — é exatamente isso que o torna uma verificação independente, e também é por isso que ele não pode ver uma contradição espalhada por dois arquivos. O nível de validador vê o disco; o portão possui a pontuação. Combine-os: colete evidências de substrato com as ferramentas locais, entregue o texto ao portão e nunca discuta uma REPROVAÇÃO do portão em APROVAÇÃO. Protocolo completo: docs/VALIDATOR-AGENT.md.
O que você obtém por execução: recibos — o que foi verificado, o que passou, o que foi retido e por quê. Legível por máquina, não um selo. Não vamos entregar um número de precisão garantida para seus dados: pontuações não transferem entre modelos, conjuntos de dados e runtimes, e uma ferramenta que promete uma figura fixa em dados que nunca viu está fazendo exatamente a afirmação que este portão existe para capturar.
Entradas longas
Entradas de ~4.000 caracteres ou mais são submetidas como um trabalho assíncrono e sondadas até a conclusão automaticamente, então uma única validação longa nunca morre em um timeout de requisição. Entradas curtas usam o caminho síncrono rápido. Nenhuma configuração necessária.
Configuração (variáveis de ambiente)
| Variável | Padrão | Propósito |
|---|---|---|
SOULFIELD_API_BASE | http://localhost:8002 | URL base da API Lens. Use https://api.soulfield.one para o serviço hospedado, ou sua própria implantação. |
SOULFIELD_API_KEY | — | Necessária para validate_content e scrub_pii. |
SOULFIELD_VALIDATE_TIMEOUT_MS | 180000 | Timeout por requisição para o caminho síncrono. |
SOULFIELD_VALIDATE_BUDGET_MS | 600000 | Orçamento total de tempo de parede para o loop de sondagem assíncrona. |
SOULFIELD_ASYNC_MIN_CHARS | 4000 | Comprimento de entrada no qual o caminho assíncrono entra em ação. |
LENS_KIT_BIN | lens-kit | Caminho para o CLI lens-kit para o nível de validador. Só é necessário se não estiver em PATH. |
LENS_KIT_TIMEOUT_MS | 120000 | Timeout para um comando do nível de validador. No timeout, o veredito é UNKNOWN, nunca uma aprovação. |
O resto do produto
Este wrapper é uma das várias superfícies no mesmo motor:
- Auditoria gratuita de uma saída — api.soulfield.one/audit. A auditoria é a demonstração.
- Integre (hook de parada de SDK e middleware) — api.soulfield.one/developers.
- Possua — o kit: lentes, compilador, loop de auto-melhoria, agente validador, Apache-2.0. Treine-o em seus próprios dados. Repositório público: github.com/mrhpython/lens-kit — clone-o,
pip install -e ".[dev]", e a suíte de testes roda offline sem chave. Instalá-lo também é o que ativa o nível de validador acima.
Seguramos nosso próprio material de marketing ao mesmo portão que este pacote expõe.
Licença
MIT — veja LICENSE. (O produto lens-kit é licenciado separadamente sob Apache-2.0.)