decision-table
Tabla de Decisión
Tabla de Decisión es una primitiva determinista de decisión y restricción para agentes de IA. Mueve los juicios de negocio acotados fuera del razonamiento del modelo y hacia un IR estricto, versionado y ejecutable.
El nombre del producto, así como los identificadores estables del paquete, CLI, plugin, Skill y MCP, quedan registrados en docs/PRODUCT_IDENTITY.md.
La primera versión proporciona:
decision.evaluate: evalúa hechos con política de aciertofirst,unique,collectopriority;decision.validate: valida el modelo y prueba de forma conservadora la existencia de reglas duplicadas, superpuestas u ocultas cuando es compatible;constraint.check: comprueba un candidato propuesto y devuelve violaciones, entradas faltantes y sugerencias de reparación configuradas;constraint.check_approved: cuando el host lo configura, realiza una comprobación de solo lectura contra un conjunto de reglas aprobado exacto que el llamador no puede reemplazar ni retrodatar;un núcleo TypeScript compartido, un CLI JSON y un servidor MCP junto con el plugin de Codex.
Instalar en Codex
codex plugin marketplace add tetracoralla/decision-table --ref main
codex plugin add decision-table@decision-tableInicia una nueva tarea de Codex después de la instalación para que las herramientas de Skill y MCP se carguen desde el plugin instalado. No se requiere cuenta de npm, paquete npm ni compilación desde el código fuente; el plugin contiene un servidor MCP precompilado y solo necesita Node.js 20.19 o posterior en PATH.
La raíz del repositorio es el marketplace y plugins/decision-table es el plugin instalable. Consulta docs/INSTALLATION.md para actualizaciones, eliminación y verificación.
Usa solicitudes ordinarias como:
"Valida este conjunto de reglas de decisión antes de usarlo".
"Evalúa este conjunto de reglas con estos hechos".
"Comprueba si esta acción propuesta satisface estas restricciones".
Tabla de Decisión se distribuye desde GitHub como un plugin de Codex. El paquete Node en este repositorio es privado y existe únicamente para compilar, probar y desarrollar la biblioteca localmente; no se publica en npm.
Desarrollar desde el código fuente
npm install
npm run checkPara el desarrollo local del plugin, añade este directorio del repositorio como marketplace y valida el plugin fuente con npm run check:plugin.
CLI
npm run cli -- validate examples/payment-approval.decision.json
npm run cli -- evaluate examples/payment-approval.decision.json \
--facts examples/payment-approval.facts.json \
--expected-version 1.0.0
npm run cli -- check examples/email-marketing.constraint.json \
--candidate examples/email-marketing.candidate.json \
--facts examples/email-marketing.facts.jsonToda la salida es JSON. Usa - en lugar de una ruta de entrada para leer ese documento desde stdin. Las opciones no definidas para el comando seleccionado se rechazan. El conjunto de reglas, los hechos y los documentos candidatos comparten un único límite acumulado de 256 KiB.
Para fijar contenido exacto, pasa tanto --expected-version como --expected-fingerprint <sha256>.
Comprobaciones aprobadas y aplicación por el host
La constraint.check en línea es consultiva porque el llamador proporciona el conjunto de reglas. Para un análisis de solo lectura con una política aprobada por el host, vincula el conjunto de reglas antes de iniciar el servidor MCP:
import {
createApprovedConstraintChecker,
createConstraintExecutionGuard,
fingerprintRuleset,
} from "@openadam/decision-table";
const expected = {
id: approvedRuleset.id,
version: approvedRuleset.version,
fingerprint: fingerprintRuleset(approvedRuleset),
};
const checker = createApprovedConstraintChecker({ ruleset: approvedRuleset, expected });El servidor stdio incluido expone constraint.check_approved cuando su host establece DECISION_TABLE_APPROVED_CONSTRAINT_JSON con el mismo objeto de vinculación estricto. El Agente no puede reemplazar la política ni retrodatar la comprobación, pero aún así proporciona candidatos y hechos, por lo que esta herramienta MCP de solo lectura no es un límite de ejecución.
Para un efecto secundario gobernado, mantén la construcción del candidato, la carga de hechos confiables, la comprobación y la ejecución dentro de un contexto propiedad del host:
const guard = createConstraintExecutionGuard(checker, async (action, run) =>
database.transaction(async (transaction) =>
run({
candidate: candidateFromActualAction(action),
facts: await loadTrustedFacts(transaction, action),
execute: (sameActionSnapshot) =>
executeActualAction(transaction, sameActionSnapshot),
}),
),
);
const outcome = await guard.execute(actualToolArguments);El guardia captura la acción real, bloquea al ejecutor a menos que las restricciones devuelvan válido, y pasa esa misma instantánea congelada a la ejecución. El contexto propiedad del host es donde una transacción o bloqueo debe mantener los hechos volátiles válidos durante el efecto secundario. El guardia es un límite de biblioteca e intencionalmente no es una herramienta MCP invocable por el Agente.
Forma del conjunto de reglas
Las condiciones son datos etiquetados, nunca cadenas ejecutables:
{
"op": "compare",
"left": { "kind": "fact", "path": "amount" },
"comparator": "gte",
"right": { "kind": "literal", "value": "10000" }
}Las entradas decimales son cadenas. Las rutas faltantes producen UNKNOWN; no se fuerzan a false. Las fechas y horas requieren un calendario ISO real, desplazamiento explícito, segundos y no más de precisión de milisegundos. Consulta examples/ y docs/PRODUCT_MODEL.md para conocer el límite completo del producto.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tetracoralla/decision-table'
If you have feedback or need assistance with the MCP directory API, please join our Discord server