Soulfield Lens
Capa de revisión independiente para texto generado por IA: un modelo separado ejecuta un control fijo de diez verificaciones sobre la salida que no escribió y devuelve la línea marcada y el motivo por cada verificación, nunca una calificación.
Documentación
Soulfield Lens — Servidor MCP
Validación externa para texto generado por IA, como herramienta MCP.
Toda herramienta de IA le pregunta al mismo modelo que escribió la respuesta si es buena. Dice que sí. Soulfield Lens es externo: un modelo separado ejecuta una compuerta fija sobre tu salida. Verifica texto — no lo escribe. Este paquete coloca esa compuerta dentro de Claude Code, Cursor y cualquier otro agente compatible con MCP, para que la salida pueda validarse en el camino donde se genera.
La compuerta es de cierre ante fallo: un caso límite devuelve UNKNOWN, nunca una aprobación silenciosa. No hay paso de generación, por lo que no puede inventar afirmaciones propias — solo verificar. Aún puede equivocarse en un juicio; es exactamente por eso que los casos límite devuelven UNKNOWN en lugar de un sí confiado.
Este es un envoltorio stdio delgado alrededor de la API Lens alojada (api.soulfield.one). Sin modelo local, sin paso de compilación — un archivo, dos dependencias.
Expone dos niveles. El nivel de compuerta (3 herramientas) solo necesita una clave API. El nivel de validador (6 herramientas) es opcional y solo se activa si también tienes el CLI lens-kit instalado localmente — ejecuta verificaciones deterministas entre archivos y la memoria de defectos que la compuerta de documento único no puede ver. Omítelo y el nivel de compuerta funciona exactamente como antes.
Pruébalo antes de instalar nada
El endpoint de demostración sin clave ejecuta la misma compuerta — unas pocas ejecuciones al día por IP, sin registro:
curl -s https://api.soulfield.one/v1/demo \
-H 'content-type: application/json' \
-d '{"text": "<paste the AI output you are about to ship>"}'
Instalación
npm install -g @soulfield/lens-mcp
O ejecuta sin 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
Cualquier cliente MCP (configuración JSON)
{
"mcpServers": {
"soulfield-lens": {
"command": "npx",
"args": ["@soulfield/lens-mcp"],
"env": {
"SOULFIELD_API_BASE": "https://api.soulfield.one",
"SOULFIELD_API_KEY": "<your-key>"
}
}
}
}
Las llamadas de producción necesitan una clave API — solicítala en hello@soulfield.one. lens_health funciona sin una.
Herramientas
Nivel de compuerta — API alojada, funciona de inmediato
| Herramienta | Qué hace | Autenticación |
|---|---|---|
validate_content | Ejecuta la compuerta externa sobre texto. Devuelve aprobado/rechazado, puntuación, resultados por dimensión y detalles de violación con razonamiento. domain opcional (general, finanzas, marketing, legal, seo, agencia) y context (audiencia/propósito). | clave |
scrub_pii | Escaneo del lado del servidor para PII estructurada y secretos — correos electrónicos, números de teléfono del Reino Unido/EE. UU., números de tarjetas de crédito, SSN de EE. UU., números NI/UTR del Reino Unido, cadenas de conexión de bases de datos y patrones comunes de claves API/credenciales. Devuelve texto depurado (cada coincidencia reemplazada por un marcador de tipo) más hallazgos. Basado en patrones, sin llamada LLM. Se dirige a identificadores estructurados — no detecta nombres personales ni PII de forma libre, y la cobertura de formatos estructurados es de mejor esfuerzo, no exhaustiva. | clave |
lens_health | Verifica que la API Lens esté activa. Devuelve estado y versión. | ninguna |
Nivel de validador — opcional, requiere el CLI lens-kit localmente
Nota de versión: el nivel de validador llega en 1.1.0. Si
npm view @soulfield/lens-mcp versionaún reporta1.0.0, el registro no se ha puesto al día con este repositorio todavía ynpx @soulfield/lens-mcpte dará solo las tres herramientas del nivel de compuerta. Instala desde el código fuente mientras tanto.
Efecto secundario que vale la pena conocer: cada llamada del nivel de validador agrega una fila a
RUNS.mden su directorio de trabajo — ese es el registro de ejecución del kit, por diseño. El directorio es el argumentocwd, o el cwd del propio servidor si lo omites, así que pasacwdexplícitamente si te importa dónde vive el registro. Los valores de banderas sensibles se redactan en la fila (--deny <redacted>), por lo que los términos de denegación no llegan al disco.
Requisito previo: pip install lens_kit (Apache-2.0, github.com/mrhpython/lens-kit), o establece LENS_KIT_BIN a su ruta. Sin él, estas seis herramientas devuelven UNKNOWN con un error — nunca una aprobación silenciosa. No se necesita clave API: se ejecutan localmente y no hacen ninguna llamada LLM.
Por qué se ejecutan localmente y no en la API alojada: toman rutas de archivo de tu disco. Un endpoint alojado que aceptara rutas locales arbitrarias sería un vector de divulgación de archivos, no una característica. En stdio, las rutas son de tu propia máquina, por lo que la capacidad es segura aquí y solo aquí — y por esa razón no se agregará a la API alojada.
| Herramienta | Qué hace | Semántica de salida |
|---|---|---|
lens_consistency_leaks | Escanea archivos en busca de términos de lista de denegación (literal insensible a mayúsculas). Ejecuta en cada archivo orientado al cliente antes de una publicación irreversible: detecta un nombre real de cliente, un nombre en clave interno o un absoluto prohibido que sobrevive en la copia enviada. Un escáner de credenciales no encontrará estos, porque nada aquí es una credencial. Ciego a la negación: una frase prohibida citada para negarla coincide idénticamente con la misma frase afirmada. | el acierto prueba que la cadena está presente — adjudica el veredicto |
lens_consistency_numbers | Verifica que cada literal numérico en un resumen realmente aparezca en el cuerpo que resume. Detecta la cifra inventada. Alambre trampa: solo coincidencia literal, sin aritmética derivada, y una cifra citada como superada ("supera la estimación de ~471") marca exactamente como una obsoleta. Revisa, no confíes automáticamente. | violación / limpio |
lens_consistency_markers | Verifica que los marcadores de evidencia en una fuente sobrevivan en cada salida renderizada — la advertencia o cita eliminada entre formatos. Sensible a MAYÚSCULAS, a diferencia de leaks arriba: TRIPWIRE no coincidirá con Tripwire y se lee como eliminado cuando nada se eliminó. Alambre trampa: un render de subconjunto deliberado también subcuenta legítimamente. | violación / limpio |
Elección de términos de denegación y marcadores. Estos tres son alambres trampa, no oráculos — en una ejecución en vivo sobre la copia de este proyecto produjeron seis banderas y cero defectos verdaderos, en tres clases distintas de falsos positivos (negación, cifra superada, mayúsculas). Ese es el comportamiento diseñado, y es por eso que la doctrina es adjudica, nunca apliques automáticamente. Los términos de denegación funcionan mejor como cadenas que están mal en cualquier contexto — un nombre real de cliente, un nombre en clave interno — en lugar de afirmaciones que no haces, que legítimamente aparecen dentro de descargos. Los marcadores funcionan mejor cuando su uso de mayúsculas es estable entre fuente y render.
| lens_catches_relevant | Lee el banco de defectos antes de validar: defectos nombrados previos para un tipo de artefacto, los más recurrentes primero. Los patrones en el umbral se marcan [PROMOTE] — recurren con suficiente frecuencia como para merecer una verificación fija. | — |
| lens_catches_add | Registra un defecto nombrado para que se detecte la próxima vez: qué estaba mal, el patrón general, la regla hacia adelante. Los pases de rutina se rechazan por diseño — solo defectos reales. | — |
| lens_catches_stats | Conteos de recurrencia por patrón con sugerencias de promoción. Te dice qué endurecer a continuación. | — |
Los dos niveles son complementarios, no alternativas. La compuerta no tiene herramientas ni acceso a archivos — eso es precisamente lo que la convierte en una verificación independiente, y también es por eso que no puede ver una contradicción extendida entre dos archivos. El nivel de validador ve el disco; la compuerta posee la puntuación. Combínalos: reúne evidencia de sustrato con las herramientas locales, entrega el texto a la compuerta y nunca discutas un FALLO de compuerta hacia un APROBADO. Protocolo completo: docs/VALIDATOR-AGENT.md.
Lo que obtienes por ejecución: recibos — qué se verificó, qué pasó, qué se retuvo y por qué. Legible por máquina, no una insignia. No te daremos un número de precisión garantizado para tus datos: las puntuaciones no se transfieren entre modelos, conjuntos de datos y tiempos de ejecución, y una herramienta que promete una cifra fija sobre datos que nunca ha visto está haciendo exactamente la afirmación que esta compuerta existe para detectar.
Entradas largas
Las entradas de ~4,000 caracteres o más se envían como un trabajo asíncrono y se sondean hasta completarse automáticamente, por lo que una sola validación larga nunca muere por un tiempo de espera de solicitud. Las entradas cortas usan la ruta síncrona rápida. Sin configuración necesaria.
Configuración (variables de entorno)
| Variable | Predeterminado | Propósito |
|---|---|---|
SOULFIELD_API_BASE | http://localhost:8002 | URL base de la API Lens. Usa https://api.soulfield.one para el servicio alojado, o tu propio despliegue. |
SOULFIELD_API_KEY | — | Requerida para validate_content y scrub_pii. |
SOULFIELD_VALIDATE_TIMEOUT_MS | 180000 | Tiempo de espera por solicitud para la ruta síncrona. |
SOULFIELD_VALIDATE_BUDGET_MS | 600000 | Presupuesto total de tiempo de pared para el bucle de sondeo asíncrono. |
SOULFIELD_ASYNC_MIN_CHARS | 4000 | Longitud de entrada en la que la ruta asíncrona se activa. |
LENS_KIT_BIN | lens-kit | Ruta al CLI lens-kit para el nivel de validador. Solo se necesita si no está en PATH. |
LENS_KIT_TIMEOUT_MS | 120000 | Tiempo de espera para un comando del nivel de validador. En tiempo de espera, el veredicto es UNKNOWN, nunca una aprobación. |
El resto del producto
Este envoltorio es una de varias superficies sobre el mismo motor:
- Auditoría gratuita de una salida — api.soulfield.one/audit. La auditoría es la demostración.
- Conéctalo (gancho de detención SDK y middleware) — api.soulfield.one/developers.
- Poséelo — el kit: lentes, compilador, bucle de auto-mejora, agente validador, Apache-2.0. Entrénalo con tus propios datos. Repositorio público: github.com/mrhpython/lens-kit — clónalo,
pip install -e ".[dev]", y la suite de pruebas se ejecuta sin conexión sin clave. Instalarlo también es lo que activa el nivel de validador arriba.
Mantenemos nuestra propia copia de marketing bajo la misma compuerta que expone este paquete.
Licencia
MIT — ver LICENSE. (El producto lens-kit está licenciado por separado bajo Apache-2.0.)