openterms-mcp
Recibos de consentimiento firmados con Ed25519 + motor de políticas programable para agentes de IA antes de que tomen acciones.
Documentación
Openterms
Recibos criptográficos de consentimiento de código abierto + salvaguardas programables + verificación de proveedores para agentes de IA.
Tu agente demuestra a qué se comprometió. Tu política controla qué se le permite hacer. El proveedor de API puede verificar ambas cosas.
Pruebas de Licencia
Demo en Vivo · Inicio Rápido · Auto-Alojamiento · Servidor MCP · Contribuciones · Especificación de Recibo Abierto
Qué Hace Openterms se sitúa entre tu agente de IA y las acciones que realiza. Tres capas:
-
Recibos — Antes de que tu agente llame a una API, obtiene un recibo firmado con Ed25519. JSON canónico (RFC 8785), hash SHA-256, criptografía real. Cualquiera puede verificarlo usando claves públicas — sin necesidad de clave API, sin confiar en el servidor.
-
Motor de Políticas — Límites de gasto diarios, listas blancas de tipos de acción, umbrales de escalada. El motor de políticas evalúa antes de que se firme el recibo. Las acciones denegadas nunca reciben un recibo.
-
Verificación de Proveedores — Los proveedores de API registran su URL de términos y verifican el consentimiento del agente antes de atender solicitudes. Una llamada GET pública. Ambos lados de la transacción confían en la prueba.
Inicio Rápido 60 segundos para tu primer recibo:
git clone https://github.com/jstibal/openterms.git cd openterms pip install flask pyjwt cryptography pyyaml bash quickstart.sh O con Docker:
git clone https://github.com/jstibal/openterms.git cd openterms docker compose up --build
En otra terminal:
bash quickstart.sh La emisión de recibos es gratuita — sin billetera, sin depósito, sin pago requerido.
Auto-Alojamiento Ejecuta tu propia instancia de Openterms:
Opción 1: Directo
pip install flask pyjwt cryptography pyyaml python run.py
Servidor en http://localhost:5000
Opción 2: Docker
docker compose up --build
Opción 3: Apunta el servidor MCP a tu instancia
export OPENTERMS_API_URL=http://localhost:5000 python openterms_mcp_server.py Todo se ejecuta localmente. Base de datos SQLite, sin dependencias externas.
Servicio Alojado ¿No quieres auto-alojarlo? Usa la instancia alojada en openterms.com — el mismo código de código abierto, gestionado por ti.
Servidor MCP 10 herramientas para agentes de IA:
Herramienta Qué hace issue_receipt Recibo firmado antes de cualquier acción, con cabeceras de verificación de proveedor verify_receipt Verificar integridad criptográfica del recibo (público) verify_receipt_by_hash Buscar y verificar por hash canónico (público) check_balance Saldo del espacio de trabajo get_pricing Precios por recibo list_receipts Recibos recientes get_policy Salvaguardas activas — llamar al inicio simulate_policy Pre-verificación: ¿se permitiría esta acción? policy_decisions Registro de auditoría de cada permitir/denegar/escalar provider_activity Estadísticas de recibos para tu API (autenticación de proveedor) Configuración MCP { "mcpServers": { "openterms": { "command": "python3", "args": ["openterms_mcp_server.py"], "env": { "OPENTERMS_API_URL": "https://openterms.com", "OPENTERMS_API_KEY": "openterms_your_key_here" } } } }
Cómo Funciona la Verificación de Proveedores Agente Openterms Proveedor de API | | | |-- issue_receipt ------->| | |<-- recibo + cabeceras --| | | |-- notificación webhook -->| | | | |-- llamada API + cabeceras -->|-------------------------->| | |<-- verify/{hash} ---------| | |-- datos del recibo ------->| |<--------- respuesta ----|---------------------------|
El agente emite recibo → obtiene cabecera X-Openterms-Receipt El agente incluye la cabecera en la llamada API El proveedor llama a GET /v1/receipts/verify/{hash} — público, sin autenticación Válido → atender. Inválido → rechazar.
Endpoints de API
Núcleo Método Ruta Autenticación Descripción POST /v1/receipts Bearer Emitir recibo firmado POST /v1/receipts/verify Ninguna Verificar recibo GET /v1/receipts/verify/{hash} Ninguna Verificar por hash GET /v1/receipts Bearer Listar recibos GET /.well-known/jwks.json Ninguna Claves de firma públicas Motor de Políticas Método Ruta Autenticación Descripción GET /v1/policy Bearer Política activa PUT /v1/policy Admin Crear/actualizar política POST /v1/policy/simulate Bearer Probar acción hipotética GET /v1/policy/decisions Bearer Registro de auditoría de decisiones Verificación de Proveedores Método Ruta Autenticación Descripción POST /v1/providers Ninguna Registrarse como proveedor POST /v1/providers/verify Proveedor Verificar dominio GET /v1/provider/stats Proveedor Estadísticas de recibos GET /v1/provider/receipts Proveedor Recibos recientes
Pruebas
make test
120 pruebas pasando (80 núcleo + 40 verificación de proveedores)
Arquitectura openterms/ ├── app.py # API Flask (1135 líneas) ├── db.py # Base de datos SQLite (15 tablas) ├── openterms_mcp_server.py # Servidor MCP + CLI (10 herramientas) ├── core/ │ ├── canonical.py # Canonicalización RFC 8785 │ └── signing.py # Firma Ed25519 + JWKS ├── services/ │ ├── receipt_service.py # Pipeline de recibos │ ├── ledger_service.py # Seguimiento de saldo │ └── policy_engine.py # Evaluación de reglas ├── tests/ │ ├── test_core.py # 80 pruebas │ └── test_mvp3.py # 40 pruebas ├── Dockerfile ├── docker-compose.yml ├── quickstart.sh └── .env.example
Hoja de Ruta
Fase Estado Qué hace MVP1 ✅ Enviado Recibos firmados — registrar lo que sucedió MVP2 ✅ Enviado Motor de políticas — hacer cumplir lo permitido MVP3 ✅ Enviado Verificación de proveedores — ambas partes confían en la prueba
Especificación ORS 🔄 En progreso Especificación de Recibo Abierto — formato portable
Integraciones 🔄 En progreso Callbacks de una línea para LangChain, CrewAI
MVP4 Planificado Encadenamiento de recibos, certificación de agentes
Contribuciones
Consulta CONTRIBUTING.md. Agradecemos especialmente integraciones de frameworks, SDKs de lenguajes y comentarios sobre la Especificación de Recibo Abierto.
Licencia Apache 2.0 — ver LICENSE.
Copyright 2026 Staticlabs Inc.