strata
Strata compone módulos backend verificados y personalizados de manera determinista en tu codebase
Documentación
Tu agente escribe el backend. Strata demuestra que funciona.
Un servidor MCP que compone módulos backend verificados en tu código base — leyendo tu esquema, siguiendo tus convenciones, conectándolos en el orden que Express realmente requiere — y luego escribe un comando que arranca la aplicación y ejercita cada requisito contra un servidor en vivo.
$ # your agent calls one tool, once
strata_use dir=./shop-api task="product list API"
capabilities=[ "cursor pagination with sorting",
"per-IP rate limiting",
"structured request logging" ]
FILES CREATED
server.js
strata/lib.js — the implementation these import from
strata/verify.js — boots the app and exercises the feature end to end
$ npm install && node strata/verify.js
PASS unit selftests — 3 passed, 0 failed
PASS server boots and answers /health
PASS correlation id honours an inbound x-request-id
PASS an authorization header is NOT written to the log
PASS a password in a request BODY is NOT written to the log
PASS a malformed body is a 4xx and leaks no stack trace to the caller
PASS /items walks pages by cursor without repeating a row
PASS a sort field that is not allowlisted is REJECTED, not honoured
PASS a burst past capacity yields 429 + Retry-After
12/12 checks passed — the delivered feature works end to end.
la pregunta es si la página dos repite la página uno.
Capacidades clave
- Composición consciente del esquema — lee Prisma, Mongoose, Drizzle, TypeORM, Sequelize o JS plano y conecta módulos contra tu entidad, campos y columna ID reales
- Orden correcto del middleware — logging por encima del análisis del cuerpo, límites de tasa por encima de las rutas, manejadores de errores al final, impuesto por rango en lugar de dejarlo al modelo
- Verificador integral generado —
strata/verify.jsarranca la aplicación en un puerto libre y ejercita cada requisito contra ella - Seis puertas de admisión verificadas por máquina — ningún módulo llega a tu proyecto sin pasar todas ellas
- Rechazos honestos — rechaza aproximadamente un tercio de las tareas, donde componer cuesta más que escribir el código
$ # asked for something the library does not cover
strata_use task="slugify helper" capabilities=["convert a string to a url slug"]
No verified Strata recall covers "slugify helper". Build it from scratch the
normal way — a clean hand-written implementation is the right outcome here,
not a forced match.
y una herramienta que siempre dice sí es una herramienta en la que dejas de confiar.
- Local por construcción — tu código fuente y esquema nunca salen de la máquina; solo se envía el texto de la tarea
Benchmark
60 sesiones completas de agente: cuatro tareas de backend, cinco brazos, tres ejecuciones cada una. Las verificaciones se congelaron y publicaron antes de la primera ejecución, cada verificación lleva un control negativo que demuestra que puede fallar, y cada árbol de salida está archivado. El código fuente de los módulos entregados no se publica — los módulos viven en el hub y llegan a un proyecto en el momento de la llamada.
¿Funcionó a la primera?
| Brazo | Funcionó a la primera | Tiempo total | Costo / ejecución | Costo de una característica funcional |
|---|---|---|---|---|
| haiku | 0 / 11 — 0% | 5.1 min | $0.22 | nunca produjo una |
| haiku + Strata | 6 / 12 — 50% | 3.6 min | $0.27 | $0.53 |
| sonnet | 2 / 11 — 18% | 4.4 min | $1.07 | $5.88 |
| sonnet + Strata | 10 / 12 — 83% | 6.1 min | $1.62 | $1.94 |
| opus | 3 / 12 — 25% | 5.2 min | $1.33 | $5.33 |
"Funcionó a la primera" = todas las verificaciones pre-registradas para esa tarea pasaron, sin segundo intento. haiku simple es el más barato por ejecución y no produjo nada que funcionara completamente en once intentos.
Proporción de verificaciones superadas
| Brazo | Catálogo | Idempotencia | Pagos | Reintento | Promedio |
|---|---|---|---|---|---|
| haiku | 70.8% | 66.7% | 29.2% | 85.7% | 63.1% |
| haiku + Strata | 87.5% | 85.7% | 100% | 95.2% | 92.1% |
| sonnet | 62.5% | 85.7% | 95.8% | 64.3% | 77.1% |
| sonnet + Strata | 100% | 100% | 95.8% | 95.2% | 97.8% |
| opus | 75.0% | 90.5% | 75.0% | 95.2% | 83.9% |
Dos verificaciones fueron falladas por cada ejecución de referencia en cada nivel y superadas por cada ejecución de Strata — un limitador de tasa cuya ventana nunca se recarga (referencia 0/9, Strata 6/6) y una solicitud malformada que devuelve un rastreo de pila al llamador (0/9, 6/6). haiku 0/3, sonnet 0/3, opus 0/3 en ambas. Un modelo más grande no arregló ninguna.
Qué te cuesta
Strata es un sobrecosto por sesión — +26% en haiku, +51% en sonnet. Ese sobrecosto se debe a la lectura, no a la escritura: de dos tercios a cuatro quintos de la factura de un agente es releer contexto acumulado, y una sesión de Strata lee ~12–14k tokens de implementación entregada donde una referencia lee ~1k. Se está trabajando para cerrarlo; hoy no está cerrado.
Aproximadamente tres cuartos de la ventaja están en defectos que no habrías notado — casos límite, problemas de sincronización y errores de corrección que aparecen más tarde como incidentes. En defectos que sí notarías, un modelo simple ya acierta el 86.4% de las veces. Por eso existe strata/verify.js: convierte la corrección en una lista de verificaciones con nombre que puedes leer.
Metodología completa, puntuaciones por ejecución, la división visible/invisible y cada defecto de instrumento encontrado en el camino: docs/BENCHMARK.md.
Inicio rápido
Requisitos previos: Node.js ≥ 18 y cualquier cliente MCP — Claude Code, Cursor, Windsurf, VS Code o Claude Desktop.
// .mcp.json (or claude_desktop_config.json for Claude Desktop)
{
"mcpServers": {
"strata": { "command": "npx", "args": ["-y", "stratalib"] }
}
}
Reinicia el cliente y pide una característica de backend que necesite varias partes:
Add cursor pagination, per-IP rate limiting and request logging to the products API.
Strata lee el proyecto, compone los módulos, escribe los archivos e imprime lo que creó y lo que modificó. Luego:
npm install && node strata/verify.js
[!NOTE] Sin clave API y sin cuenta. Los módulos se sirven desde el hub; el texto de la tarea es lo único que se envía. Tu código fuente, esquema y archivos permanecen en tu máquina.
La herramienta
Strata registra exactamente una herramienta. Cada herramienta en un esquema MCP se factura en cada turno, por lo que la superficie se mantiene en una que hace todo el trabajo.
strata_use
| Argumento | Propósito |
|---|---|
dir | Ruta absoluta a la raíz del proyecto — de donde se leen el esquema y las convenciones |
task | Una etiqueta corta para el trabajo |
capabilities | 3–6 frases que nombran las partes del trabajo. Tu modelo las escribe; ha leído toda la tarea |
Devuelve los archivos creados y modificados, las exportaciones disponibles de cada módulo y el comando para verificar el resultado.
Cómo funciona
1 · Lee el proyecto — localiza el ORM y extrae la entidad real: campos, tipos, enums y la columna ID real. Determinista, en Node, antes de que el modelo vea un byte. Cuando la entidad no se puede identificar con confianza, Strata deja un espacio en lugar de adivinar.
2 · Selecciona módulos — cada frase de capacidad se puntúa contra la biblioteca, y cualquier coincidencia basada solo en vocabulario compartido se descarta. Menos de dos módulos supervivientes provoca un rechazo.
3 · Compone — los módulos contribuyen a la aplicación en lugar de poseerla, cada contribución lleva un rango que fija su posición en la cadena de middleware. Una solicitud malformada lanza una excepción durante el análisis del cuerpo, por lo que el logging se monta por encima; invierte eso y la solicitud que más vale la pena rastrear es la que pierde su id de correlación.
4 · Escribe el verificador — strata/verify.js ejecuta la suite propia de cada módulo, arranca la aplicación en un puerto libre y ejercita cada requisito contra ella. Construido contra tu entidad, para que las verificaciones se ejecuten en tus campos y tus rutas.
Puertas de admisión
Cada módulo pasa seis puertas verificadas por máquina antes de poder servirse. Un módulo que falla se descarta, no se repara — parchear a mano módulos generados devuelve la cobertura al oficio manual y detiene su escalabilidad.
| Puerta | Requisito |
|---|---|
| Exportaciones | Carga, y cada exportación que declara se resuelve en tiempo de ejecución |
| Autoprueba | Su propia suite pasa, con un recuento de aserciones estable en cinco ejecuciones |
| Adversarial | ≥ 8 aserciones, entradas hostiles y aserciones de que algo no debe suceder |
| Composición | Fragmentos válidos con rangos y fábricas declaradas que existen |
| Colisiones | Ningún nombre exportado choca con otro módulo |
| Arranque compuesto | Se compone con otros dos en una aplicación que arranca y verifica |
La puerta adversarial es la que importa. Cada módulo escrito a mano en esta biblioteca se publicó con un error real que sus propias pruebas no detectaron — un 404 que reiniciaba el contador de fallos de un interruptor de circuito, una restricción de enum eliminada, un id de solicitud controlado por el atacante reflejado en un encabezado de respuesta. Una suite confirmatoria admite exactamente esos.
Estructura del repositorio
| Ruta | Contenido |
|---|---|
src/ | Servidor MCP: lectura del proyecto, selección, composición, generación del verificador |
bin/ | Punto de entrada CLI |
templates/ | Esqueleto Express utilizado durante la composición |
benchmark/ | La batería de calidad de 60 ejecuciones, suites pre-registradas, controles negativos, árboles de salida archivados |
scripts/ | Puertas de admisión, indexación de biblioteca, pruebas de selección |
Los módulos se sirven desde el hub; el texto de la tarea es lo único que se envía. Tu código fuente, esquema y archivos permanecen en tu máquina.
Documentación
| Documento | Tema |
|---|---|
docs/BENCHMARK.md | El benchmark de 60 ejecuciones: método, tablero y cada defecto de instrumento encontrado |
Desarrollo
npm install
node --max-old-space-size=8192 node_modules/typescript/bin/tsc -p tsconfig.mcp.json # build
node scripts/admit-recall.js recalls/<domain>/<name>/v1 # run the gates
node benchmark/quality/negative-control.js # prove the checks can fail
node benchmark/run-quality-battery.js --tasks catalog --max 3 # collect runs
STRATA_MODE=local compone contra un checkout local de recalls/ en lugar del hub — necesario al probar un módulo que no se ha desplegado.
Agradecimientos
Construido sobre el Model Context Protocol, Express, Prisma, Mongoose, Drizzle, TypeORM y Sequelize.
Licencia
AGPL-3.0-or-later. Ver LICENSE.