Agent Receipts

Responsabilidad criptográfica para agentes de IA. Recibos firmados con Ed25519 para cada llamada de herramienta MCP: restricciones, cadenas, juicio de IA, facturación, panel local.

Documentación

Agent Receipts

Tu agente de IA recuerda todo — y puedes demostrarlo.

Memoria persistente para agentes de IA, respaldada por recibos criptográficos. Cada hecho que tu agente aprende está firmado, es rastreable y verificable de forma independiente. No se requiere nube.

Live Demo Interactive Walkthrough npm version License: MIT

Prueba la Demo Interactiva · Instala en 30 Segundos · Cómo Es Diferente


El Problema

Estás construyendo con agentes de IA. Claude Code refactoriza tu módulo de autenticación y dice "listo, todas las pruebas pasan". Tu agente genera una cotización para un cliente y dice que aplicó el precio correcto. Tu asistente recuerda tus preferencias de la semana pasada — pero no puedes ver por qué piensa eso, ni si es correcto.

Tres cosas están rotas:

  1. Los agentes olvidan todo entre sesiones. Cada conversación comienza desde cero. El contexto se pierde. Vuelves a explicar las mismas cosas.

  2. Cuando los agentes recuerdan, no puedes ver el interior. La memoria de la plataforma es una caja negra. No puedes ver qué almacenó, cuándo o por qué. No puedes corregirla, exportarla ni verificarla.

  3. No hay prueba de lo que los agentes realmente hicieron. Los registros son mutables. Los agentes escriben sus propios registros. "Actualicé 3 archivos y todas las pruebas pasan" — ¿lo hizo? Estás confiando en la palabra del agente sobre su propio trabajo.

Qué Hace Agent Receipts

Memoria que realmente funciona

Tu agente obtiene memoria estructurada y persistente entre sesiones — personas, proyectos, herramientas, preferencias, hechos. No es un almacén plano de clave-valor. Es un grafo de entidad-observación donde cada hecho se vincula a la conversación que lo creó.

# Your agent learns something
memory_observe → "User prefers TypeScript, uses Neovim, building a SaaS called ModQuote"

# Next session, it already knows
memory_context → loads everything: entities, observations, relationships, preferences

# You can search it
memory_recall → "what tech stack does the user prefer?" → structured results

# You can forget (and the forget itself is tracked)
memory_forget → soft delete with audit trail

El agente maneja esto automáticamente cuando agregas el prompt del sistema. No gestionas la memoria manualmente.

Prueba que es realmente prueba

Cada observación de memoria y cada acción del agente produce un recibo — un documento JSON firmado con:

  • Firma Ed25519 — a prueba de manipulaciones, verificable de forma independiente
  • Hashes de entrada/salida — prueba exactamente qué entró y salió (los datos brutos nunca se almacenan)
  • Marcas de tiempo — cuándo ocurrió, cuándo se completó
  • ID del agente — qué agente lo hizo
  • Cadena de procedencia — rastrea cualquier memoria hasta la conversación que la creó

Esto no es registro. Los registros son archivos de texto mutables que el agente escribe sobre sí mismo. Los recibos son prueba criptográfica que un tercero puede verificar sin confiar en ti, en tu servidor o en el agente.

Todo se ejecuta localmente

npx @agent-receipts/mcp-server

Eso es todo. Sin clave de API. Sin cuenta. Sin nube. Sin tarifa mensual. Ningún dato sale de tu máquina. Base de datos SQLite en ~/.agent-receipts/. Funciona sin conexión.

Por Qué Existe Esto

Estaba construyendo ModQuote — un SaaS multiinquilino donde los agentes de IA generan cotizaciones para talleres de protección automotriz. Dinero real, clientes reales, responsabilidad real.

Cuando Claude generó una cotización de PPF de $2,400, necesitaba respuestas: ¿Qué datos del vehículo recibió? ¿Qué reglas de precios aplicó? Si un cliente disputa el precio, ¿puedo demostrar lo que sucedió — no con una entrada de registro que el agente escribió sobre sí mismo, sino con prueba criptográfica?

Miré las herramientas existentes:

  • Mem0 — gran memoria, pero sin prueba. Recuerda cosas, pero no puede probar cuándo o por qué las aprendió. Los recuerdos son mutables.
  • Langfuse — gran observabilidad, pero es rastreo, no prueba. Los registros son internos a tu sistema, no verificables por terceros.
  • Zep — grafo de conocimiento temporal, pero alojado y opaco.

Ninguno de ellos pudo responder: "Demuestra a alguien fuera de tu sistema que este agente específico tomó esta acción específica con esta entrada específica en este momento específico."

Así que construí Agent Receipts. Ahora cada generación de cotización es un recibo firmado. Cada memoria tiene una cadena de procedencia. Y cuando alguien pregunta "¿cómo llegó el agente a ese número?" — les doy un recibo que pueden verificar ellos mismos.

Cómo Es Diferente

Agent ReceiptsMem0LangfuseZep
MemoriaGrafo de entidad-observación firmadoExtracción inteligente + consolidaciónSin memoriaGrafo de conocimiento temporal
PruebaRecibos firmados Ed25519NingunaTrazas mutablesNinguna
VerificaciónSin conexión, por cualquiera, sin servidorNoNoNo
Infraestructuranpx y listo. Configuración cero.Requiere LLM para extracciónNube o autoalojadoAPI en la nube
CostoGratis para siempre (local)Nivel gratuito, luego de pagoNivel gratuito, luego de pagoDe pago
ExportaciónPaquetes portátiles con verificación criptográficaExportación disponibleExportación por APINo
Rastro de auditoríaCadena de recibos inmutableMutableRegistros mutablesMutable

Agent Receipts no es una mejor versión de estas herramientas. Es algo diferente.

Mem0 responde: "¿Qué recuerda mi agente?" Langfuse responde: "¿Qué sucedió en mi pipeline de LLM?" Agent Receipts responde: "¿Puedes demostrarlo?"

Comienza

1. Agrega el Servidor MCP

Claude Code:

claude mcp add agent-receipts -- npx @agent-receipts/mcp-server

Claude Desktop (claude_desktop_config.json) / Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "agent-receipts": {
      "command": "npx",
      "args": ["@agent-receipts/mcp-server"]
    }
  }
}

2. Agrega el Prompt del Sistema

Esto le dice a tu agente cuándo observar memorias, recordar contexto y rastrear acciones — para que funcione automáticamente:

npx @agent-receipts/cli prompts claude-code

Copia la salida en las instrucciones de tu proyecto o en el prompt del sistema.

3. Empieza a Usarlo

Tu agente ahora:

  • Llamará a memory_context al inicio de las sesiones para cargar lo que sabe sobre ti
  • Llamará a memory_observe cuando aprenda algo que valga la pena recordar
  • Llamará a track_action cuando realice acciones significativas
  • Firmará todo con Ed25519

4. Ve lo que Está Sucediendo

npx @agent-receipts/dashboard    # Web UI at localhost:3274
npx @agent-receipts/cli stats    # Terminal overview
npx @agent-receipts/cli memory entities  # See what your agent remembers

5. Prueba Antes de Instalar

Ejecuta la demo interactiva → — experimenta memoria, verificación y exportación de paquetes en 60 segundos. No se requiere instalación.

Qué Hay Dentro

  • 24 herramientas MCP — memoria, acciones, verificación, restricciones, juicios, facturación, paquetes
  • 21 métodos SDK — API completa de TypeScript
  • 14 comandos CLI + 9 subcomandos de memoria — primero en terminal
  • 18 páginas de panel — recibos, grafo de memoria, cadenas, agentes, restricciones, juicios, facturas
  • 492 pruebas — cero any de TypeScript, cero advertencias de ESLint
  • Ed25519 + SHA-256 — mediante @noble/ed25519 (auditado, JS puro)
  • SQLite + FTS5 — local primero con búsqueda de memoria de texto completo

Paquetes de Memoria Portátiles

Exporta toda la memoria de tu agente como un único archivo verificable:

npx @agent-receipts/cli memory export > my-project.bundle.json

El paquete incluye cada entidad, observación, relación, los recibos que los crearon y la clave pública necesaria para verificar todo. Entrégalo a otro agente, otro equipo u otra instancia de Agent Receipts — pueden verificar cada hecho sin confiar en ti.

Enlaces

Demo InteractivaPruébala en tu navegador — 60 segundos
Panel en VivoVe el panel completo con datos de muestra
Cómo FuncionaAnatomía del recibo, modelo de memoria, historia de ModQuote
npmLos 6 paquetes
Referencia completa de la API del SDK (21 métodos)

Seguimiento de Acciones

  • ar.track(params) — Rastrea una acción completada con hash automático
  • ar.start(params) — Crea un recibo pendiente
  • ar.complete(receiptId, params) — Completa un recibo pendiente
  • ar.verify(receiptId) — Verifica la firma Ed25519 de un recibo
  • ar.get(receiptId) — Obtén un recibo por ID
  • ar.list(filter?) — Lista recibos con filtrado y paginación
  • ar.getPublicKey() — Obtén la clave pública de firma
  • ar.getJudgments(receiptId) — Obtén juicios para un recibo
  • ar.cleanup() — Elimina recibos expirados
  • ar.generateInvoice(options) — Genera factura a partir de recibos

Memoria

  • ar.context(params?) — Obtén volcado completo del contexto de memoria para la inicialización de sesión
  • ar.observe(params) — Almacena una observación de memoria (siempre con recibo)
  • ar.recall(params?) — Busca memorias (silencioso por defecto, audited: true para recibo)
  • ar.forget(params) — Eliminación suave de observación o entidad (siempre con recibo)
  • ar.entities(filters?) — Lista entidades
  • ar.relate(params) — Crea relación de entidad
  • ar.provenance(observationId) — Obtén cadena de procedencia
  • ar.memoryAudit(params?) — Informe de auditoría de memoria

Paquetes

  • ar.exportBundle(params?) — Exporta paquete de memoria portátil y verificable
  • ar.importBundle(bundle, params?) — Importa y verifica un paquete de memoria

Alias

  • ar.emit(params) — Alias para track()
Referencia completa de herramientas MCP (24 herramientas)
HerramientaDescripciónParámetros Clave
track_actionRastrea una acción del agente con hash automáticoaction, input, output, constraints
create_receiptCrea un recibo con hashes precalculadosaction, input_hash, output_hash
complete_receiptCompleta un recibo pendiente con resultadosreceipt_id, output, status
verify_receiptVerifica la firma criptográficareceipt_id
get_receiptRecupera un recibo por IDreceipt_id
list_receiptsLista recibos con filtradoagent_id, status, chain_id
get_chainObtén todos los recibos en una cadenachain_id
get_public_keyExporta la clave pública Ed25519—
judge_receiptInicia la evaluación del Juez IAreceipt_id, rubric
complete_judgmentCompleta un juicio pendientereceipt_id, verdict, score
get_judgmentsObtén todos los juicios para un reciboreceipt_id
cleanupElimina recibos expiradosdry_run, cleanup_memory
generate_invoiceGenera factura a partir de recibosfrom, to, format
get_startedGuía de inicio—
memory_contextVolcado completo de contexto para inicialización de sesiónscope, max_entities
memory_observeAlmacena una observación de memoriaentity_name, entity_type, content
memory_recallBusca memorias almacenadasquery, entity_type, scope
memory_forgetEliminación suave de observación o entidadentity_id o observation_id
memory_entitiesLista entidades conocidasentity_type, scope, query
memory_relateCrea relación de entidadfrom_entity_id, to_entity_id, type
memory_provenanceCadena de procedencia para observaciónobservation_id
memory_auditInforme de auditoría de operaciones de memoriaagent_id, from, to
memory_export_bundleExporta paquete de memoria portátilentity_ids, include_receipts
memory_import_bundleImporta y verifica paquete de memoriabundle, skip_existing
Referencia completa de CLI | Comando | Descripción | |---------|-------------| | `init` | Crear directorio de datos y generar claves de firma | | `keys [--export] [--import]` | Mostrar, exportar o importar claves de firma | | `inspect ` | Imprimir un recibo de forma legible | | `verify [--key]` | Verificar la firma de un recibo | | `list [--agent] [--status] [--json]` | Listar recibos con filtros | | `chain [--tree]` | Mostrar cadena de recibos | | `judgments [--json]` | Listar juicios de un recibo | | `cleanup [--dry-run]` | Eliminar recibos caducados | | `stats` | Agregar estadísticas de recibos | | `export [--pretty]` | Exportar recibos como JSON | | `invoice --from --to [--format]` | Generar factura | | `seed [--demo] [--count] [--clean]` | Sembrar datos de demostración | | `watch [--agent] [--action]` | Observar nuevos recibos | | `prompts ` | Guía de configuración (claude-code, cursor, system) | | `memory context` | Resumen de contexto de memoria | | `memory observe ` | Almacenar observación | | `memory recall [query]` | Buscar memorias | | `memory entities [--type]` | Listar entidades | | `memory forget ` | Olvidar observación o entidad | | `memory audit` | Informe de auditoría de memoria | | `memory provenance ` | Cadena de procedencia | | `memory export` | Exportar memorias como JSON | | `memory import ` | Importar memorias |
Configuración
Variable de entornoDescripciónPredeterminado
AGENT_RECEIPTS_DATA_DIRRuta del directorio de datos~/.agent-receipts
AGENT_RECEIPTS_AGENT_IDID de agente predeterminadolocal-agent
AGENT_RECEIPTS_ORG_IDID de organizaciónlocal-org
AGENT_RECEIPTS_ENVIRONMENTEtiqueta de entornoproduction
RECEIPT_SIGNING_PRIVATE_KEYClave privada Ed25519 (hex)Generada automáticamente

Almacenamiento:

~/.agent-receipts/
├── keys/
│   ├── private.key    # Ed25519 private key (mode 0600)
│   └── public.key     # Ed25519 public key
├── receipts.db        # SQLite database (receipts + memory)
└── config.json        # Agent and org configuration

Paquetes

PaqueteDescripción
@agent-receipts/schemaEsquemas Zod y tipos TypeScript
@agent-receipts/cryptoFirma Ed25519, verificación, gestión de claves
@agent-receipts/mcp-serverServidor MCP con 24 herramientas
@agent-receipts/sdkSDK de TypeScript (21 métodos)
@agent-receipts/cliInterfaz de línea de comandos
@agent-receipts/dashboardInterfaz web de Mission Control

Hoja de ruta

  • Nivel cloud — paneles de equipo, sincronización de memoria multi-agente, verificación entre organizaciones
  • Recuperación semántica — búsqueda de memoria impulsada por embeddings
  • Adaptadores de frameworks — integraciones con LangChain, CrewAI, AutoGen
  • Puentes de confianza entre organizaciones — dos organizaciones verificando los recibos de agentes de la otra

Licencia

MIT


Creado por Amin Suleiman — creando ModQuote y Agent Receipts.