← The evidence ledger
Evidence row 579141
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 825804d4-d32f-4788-833d-dae5f552c35d
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 13fbc422fd9cd53f7f264d4e1300e1384f78c85ec00e071e3157d9af74b54fc1
- Leaf
- 0x86937a8c7226b811fc73b494a019e088692e0b1dd5df604aebbe98449e47584b
What was observed
{
"count": 40,
"tools": [
{
"description": "Agrega un directorio al watch list para auto-reindexación.",
"inputSchema": {
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "add_watch_dirArguments",
"type": "object"
},
"name": "add_watch_dir"
},
{
"description": "\n Compress retrieved memories using a hybrid approach (extractive + LLM).\n\n First searches Hipocampo (SSC v1.0), then compresses the top-k results:\n - method=\"extractive\": sentence-level keyword relevance (fast, no API cost)\n - method=\"llm\": summarization via NVIDIA NIM (highest quality, API cost)\n - method=\"hybrid\" (default): uses LLM for technical/code content, extractive for generic text\n\n Use this tool BEFORE sending context to another LLM to reduce prompt size\n while preserving critical information.\n\n Args:\n query: Natural language search query.\n k: Number of memories to retrieve (default 5, max 20).\n method: Compression method: \"hybrid\" (default), \"extractive\", or \"llm\".\n target_token: Target token count (-1 = auto, based on content).\n include_metadata: Include per-memory details in output.\n budget_ratio: Scale factor for auto-estimated tokens (default 1.0).\n\n Returns:\n Compressed context as plain text with compression statistics.\n Includes: compressed text, original/compressed char counts, ratio, latency.\n ",
"inputSchema": {
"properties": {
"budget_ratio": {
"default": 1,
"title": "Budget Ratio",
"type": "number"
},
"include_metadata": {
"default": false,
"title": "Include Metadata",
"type": "boolean"
},
"k": {
"default": 5,
"title": "K",
"type": "integer"
},
"method": {
"default": "hybrid",
"title": "Method",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"target_token": {
"default": -1,
"title": "Target Token",
"type": "integer"
}
},
"required": [
"query"
],
"title": "compress_hipocampoArguments",
"type": "object"
},
"name": "compress_hipocampo"
},
{
"description": "\n Consolidación jerárquica: migra memorias episódicas antiguas a semánticas.\n\n Busca recuerdos con nivel 'episodica' más antiguos que min_age_days\n y los promueve a 'semantica', opcionalmente comprimiendo su contenido.\n\n Args:\n min_age_days: Edad mínima en días para consolidar (default 7).\n dry_run: Si True, solo muestra qué se consolidaría.\n\n Returns:\n Reporte de la consolidación.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
},
"min_age_days": {
"default": 7,
"title": "Min Age Days",
"type": "integer"
}
},
"title": "consolidate_hipocampoArguments",
"type": "object"
},
"name": "consolidate_hipocampo"
},
{
"description": "\n Detecta contradicciones semánticas de una memoria existente.\n\n Con TypeSafe activo (HIPOCAMPO_TYPESAFE=1): un Noul por candidato en una\n sola llamada, con probabilidad calibrada (umbral 0.7).\n Fallback: negation-probe embedding: embedea \"AFIRMACIÓN: {contenido} — ¿Esto es FALSO según: ...\"\n y compara con el embedding original. Si la distancia de la sonda de negación\n es MENOR que la del contenido original → señal de contradicción.\n\n Args:\n memory_id: ID numérico de la memoria en memoria_vectorial.\n ",
"inputSchema": {
"properties": {
"memory_id": {
"title": "Memory Id",
"type": "integer"
}
},
"required": [
"memory_id"
],
"title": "contradicciones_hipocampoArguments",
"type": "object"
},
"name": "contradicciones_hipocampo"
},
{
"description": "\n Aplica decaimiento temporal a enlaces del grafo Y memorias antiguas.\n\n ENLACES: peso exponencial, half-life 90 días. Elimina enlaces < 0.01.\n MEMORIAS: archiva episodica sin acceso ni protección a memoria_historica.\n\n Protecciones (nunca se archivan):\n - nivel = automatica o semantica\n - metadatos.critico = true\n - con enlaces entrantes en memory_links\n\n Args:\n dry_run: True (default) = solo lectura. False = ejecuta cambios.\n min_age_days: Edad mínima en días para considerar memoria candidata.\n\n Returns:\n Reporte del decaimiento aplicado.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
},
"min_age_days": {
"default": 30,
"title": "Min Age Days",
"type": "integer"
}
},
"title": "decay_hipocampoArguments",
"type": "object"
},
"name": "decay_hipocampo"
},
{
"description": "\n Elimina un recuerdo del Hipocampo (memoria_vectorial) por su ID.\n\n Esta operación es irreversible. Una vez eliminado, el recuerdo\n no podrá recuperarse ni aparecerá en búsquedas futuras.\n\n Args:\n id: ID numérico del recuerdo a eliminar.\n\n Returns:\n Confirmación de eliminación.\n ",
"inputSchema": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
}
},
"required": [
"id"
],
"title": "delete_hipocampoArguments",
"type": "object"
},
"name": "delete_hipocampo"
},
{
"description": "Obtiene una memoria exacta por ID, sin pasar por el ranking.\n\n Acepta el ID numérico de memoria_vectorial (4039), con prefijo (#4039,\n v4039) o el ID de memory_items (vmi<uuid>). Es la vía determinista para\n \"tráeme el recuerdo N\": no compite con decenas de resultados.\n\n Args:\n id: ID de la memoria (numérico o vmi<uuid>).\n format: \"compact\" (default), \"full\" o \"json\".\n\n Returns:\n La memoria completa (compact muestra un fragmento de 800 chars;\n full/json incluyen todo el contenido y metadatos).\n ",
"inputSchema": {
"properties": {
"format": {
"default": "compact",
"title": "Format",
"type": "string"
},
"id": {
"title": "Id",
"type": "string"
}
},
"required": [
"id"
],
"title": "get_hipocampoArguments",
"type": "object"
},
"name": "get_hipocampo"
},
{
"description": "\n Explora el grafo de memoria desde un nodo raíz.\n\n Args:\n node_id: ID del recuerdo raíz. Si es 0, lista todos los nodos\n con enlaces (vista general).\n depth: Profundidad de exploración (default 2, max 5).\n max_nodes: Máximo de nodos a mostrar (default 50).\n\n Returns:\n Árbol ASCII del grafo de memoria.\n ",
"inputSchema": {
"properties": {
"depth": {
"default": 2,
"title": "Depth",
"type": "integer"
},
"max_nodes": {
"default": 50,
"title": "Max Nodes",
"type": "integer"
},
"node_id": {
"default": 0,
"title": "Node Id",
"type": "integer"
}
},
"title": "graph_hipocampoArguments",
"type": "object"
},
"name": "graph_hipocampo"
},
{
"description": "\n Intenta reparar automáticamente problemas detectados en el sistema.\n\n Reparaciones posibles:\n - Reiniciar PostgreSQL si está caído\n - Crear tablas faltantes desde esquema.sql\n - Verificar/configurar NVIDIA_API_KEY\n\n Returns:\n Reporte de reparaciones ejecutadas.\n ",
"inputSchema": {
"properties": {},
"title": "hipocampo_auto_repairArguments",
"type": "object"
},
"name": "hipocampo_auto_repair"
},
{
"description": "\n Gestiona el presupuesto de memoria (budget + tiering automático).\n\n 3 tiers:\n - HOT: embedding presente (memoria_vectorial con pgvector)\n - WARM: embedding=NULL (excluido de HNSW, sigue buscable léxicamente)\n - COLD: contenido movido a memoria_historica (fuera de búsqueda principal)\n\n Protecciones: automatica/semantica/critico/enlazadas → exemptas.\n\n Args:\n dry_run: True (default) = solo análisis. False = ejecuta tiering.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
}
},
"title": "hipocampo_budgetArguments",
"type": "object"
},
"name": "hipocampo_budget"
},
{
"description": "\n Comprime memorias antiguas usando checkpointing logarítmico.\n\n Con dry_run=True (default) es solo lectura — seguro, no modifica datos.\n Con dry_run=False es destructivo: comprime memorias antiguas de forma\n irreversible (las originales se eliminan tras comprimir). Idempotente:\n ejecutar múltiples veces no daña datos.\n\n Para ejecutar checkpoint como parte del ciclo completo de mantenimiento,\n usar hipocampo_maintenance (paso 3 del ciclo). Esta herramienta es para\n ejecución puntual o previsualización.\n\n Recomendado ejecutar periódicamente (semanal o mensual) para mantener\n el rendimiento del sistema.\n\n Args:\n dry_run: Si es True (default), solo muestra qué se comprimiría.\n Si es False, ejecuta la compresión (irreversible).\n\n Returns:\n Reporte del checkpointing ejecutado o simulado.\n Incluye: cantidad de registros comprimidos, espacio liberado.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
}
},
"title": "hipocampo_checkpointArguments",
"type": "object"
},
"name": "hipocampo_checkpoint"
},
{
"description": "\n Detecta y opcionalmente fusiona duplicados en las tablas de memoria.\n\n Con merge=False (default) es solo lectura — seguro de ejecutar, no modifica datos.\n Con merge=True es destructivo: consolida filas duplicadas en una sola, operación\n irreversible. Usar con precaución. Ejecutar primero sin merge para previsualizar.\n\n ¿Qué es un duplicado? Dos registros con alta similitud semántica (embedding\n + texto), por encima del umbral configurable (default 0.95).\n\n El reporte incluye: cantidad de duplicados encontrados, IDs afectados y\n resumen de fusión si se ejecutó merge.\n\n Para ejecutar dedup como parte del ciclo completo de mantenimiento, usar\n hipocampo_maintenance (paso 2 del ciclo). Esta herramienta es para uso\n puntual o previsualización antes del merge.\n\n Args:\n merge: Si es True, fusiona los duplicados encontrados (irreversible).\n Si es False (default), solo muestra análisis (seguro).\n\n Returns:\n Reporte de duplicados encontrados o fusionados.\n ",
"inputSchema": {
"properties": {
"merge": {
"default": false,
"title": "Merge",
"type": "boolean"
}
},
"title": "hipocampo_dedupArguments",
"type": "object"
},
"name": "hipocampo_dedup"
},
{
"description": "\n Ejecuta un health check completo del sistema Hipocampo.\n\n Verifica: PostgreSQL, NVIDIA API, tablas, espacio en disco, extensiones.\n\n Returns:\n Reporte formateado del estado del sistema.\n ",
"inputSchema": {
"properties": {},
"title": "hipocampo_healthArguments",
"type": "object"
},
"name": "hipocampo_health"
},
{
"description": "\n Ejecuta el ciclo completo de mantenimiento:\n 1. Health check → auto-repair si es necesario\n 2. Dedup → fusiona duplicados\n 3. Checkpoint → comprime memorias antiguas\n 4. Purge → limpia access logs antiguos (>30d)\n 5. Tune → ajusta thresholds según métricas\n\n Nota: hipocampo_budget y decay_hipocampo se ejecutan manualmente\n o via cron separado (son destructivos y requieren dry_run previo).\n\n Returns:\n Reporte consolidado del mantenimiento.\n ",
"inputSchema": {
"properties": {},
"title": "hipocampo_maintenanceArguments",
"type": "object"
},
"name": "hipocampo_maintenance"
},
{
"description": "\n Muestra estadísticas de rendimiento del sistema Hipocampo.\n\n Analiza latencia de queries, métodos usados, scores promedios\n y da recomendaciones de optimización.\n\n Returns:\n Reporte de métricas y recomendaciones.\n ",
"inputSchema": {
"properties": {},
"title": "hipocampo_statsArguments",
"type": "object"
},
"name": "hipocampo_stats"
},
{
"description": "\n Ajusta automáticamente los thresholds y pesos del SSC\n basado en las métricas de rendimiento acumuladas.\n\n Es destructivo: modifica los thresholds y pesos de forma irreversible.\n Sin embargo, es idempotente: ejecutarlo múltiples veces converge al\n mismo resultado. Usar con precaución.\n\n Para solo ver estadísticas sin modificar nada, usar hipocampo_stats\n (solo lectura). Para ejecutar el ciclo completo de mantenimiento\n (que incluye tune como paso 5), usar hipocampo_maintenance.\n\n Recomendado ejecutar solo después de acumular suficientes métricas\n (al menos 100 consultas registradas). No usar si el sistema funciona\n correctamente sin degradación.\n\n Returns:\n Reporte de ajustes aplicados (nuevos thresholds y pesos).\n ",
"inputSchema": {
"properties": {},
"title": "hipocampo_tuneArguments",
"type": "object"
},
"name": "hipocampo_tune"
},
{
"description": "\n Indexa archivos de código fuente de un proyecto en Hipocampo (RAG).\n\n Escanea archivos PHP, JS, TS, Python, SQL, HTML, CSS, JSON, YAML,\n los divide en chunks significativos y los guarda como recuerdos con\n embedding para búsqueda semántica.\n\n La segunda corrida solo indexa archivos modificados (por mtime).\n\n Args:\n project_path: Ruta absoluta del proyecto a indexar.\n Si está vacía, usa el directorio actual.\n force: Si True, re-indexa todo aunque no haya cambios.\n\n Returns:\n Estadísticas de la indexación.\n ",
"inputSchema": {
"properties": {
"force": {
"default": false,
"title": "Force",
"type": "boolean"
},
"project_path": {
"default": "",
"title": "Project Path",
"type": "string"
}
},
"title": "index_projectArguments",
"type": "object"
},
"name": "index_project"
},
{
"description": "\n Crea un enlace entre dos recuerdos en el grafo de memoria.\n\n Args:\n source_id: ID del recuerdo origen (numérico: memoria_vectorial; string: memory_items).\n target_id: ID del recuerdo destino.\n relation_type: Tipo de relación. Valores comunes:\n \"related\" (default), \"follow_up\", \"part_of\",\n \"references\", \"similar\", \"chain\", \"validates\", \"contradicts\".\n weight: Peso de la relación (0.0 a 1.0, default 1.0).\n\n Returns:\n Confirmación del enlace creado.\n ",
"inputSchema": {
"properties": {
"relation_type": {
"default": "related",
"title": "Relation Type",
"type": "string"
},
"source_id": {
"title": "Source Id",
"type": "integer"
},
"target_id": {
"title": "Target Id",
"type": "integer"
},
"weight": {
"default": 1,
"title": "Weight",
"type": "number"
}
},
"required": [
"source_id",
"target_id"
],
"title": "link_hipocampoArguments",
"type": "object"
},
"name": "link_hipocampo"
},
{
"description": "Lista todas las memorias marcadas como conocimiento del oficio.\n\n Muestra id, preview, reusability, domain_profile y days since last access.\n ",
"inputSchema": {
"properties": {},
"title": "list_trade_knowledgeArguments",
"type": "object"
},
"name": "list_trade_knowledge"
},
{
"description": "Lista los directorios configurados para auto-reindexación.",
"inputSchema": {
"properties": {},
"title": "list_watch_dirsArguments",
"type": "object"
},
"name": "list_watch_dirs"
},
{
"description": "\n Lista todos los webhooks registrados.\n\n Returns:\n Lista de watches con ID, patrón y URL.\n ",
"inputSchema": {
"properties": {},
"title": "list_watchesArguments",
"type": "object"
},
"name": "list_watches"
},
{
"description": "\n Encuentra el camino más corto entre dos recuerdos en el grafo de memoria.\n\n Args:\n from_id: ID del recuerdo origen.\n to_id: ID del recuerdo destino.\n max_depth: Profundidad máxima de búsqueda (default 5, max 10).\n\n Returns:\n Camino encontrado como secuencia de nodos.\n ",
"inputSchema": {
"properties": {
"from_id": {
"title": "From Id",
"type": "integer"
},
"max_depth": {
"default": 5,
"title": "Max Depth",
"type": "integer"
},
"to_id": {
"title": "To Id",
"type": "integer"
}
},
"required": [
"from_id",
"to_id"
],
"title": "path_hipocampoArguments",
"type": "object"
},
"name": "path_hipocampo"
},
{
"description": "\n Pre-load context for a project or workspace. Extracts relevant memories\n from the project path and returns them as a compressed summary.\n\n Use this when starting work on a known project to restore working context.\n\n Args:\n project_path: Absolute path to the project or workspace.\n If empty, uses current working directory.\n k: Number of relevant memories to retrieve (default 8, max 20).\n rerank: Opcional (TypeSafe). Re-ordena los resultados antes de\n comprimir, con un juicio de relevancia calibrado.\n\n Returns:\n Compressed context summary with project-relevant memories.\n ",
"inputSchema": {
"properties": {
"k": {
"default": 8,
"title": "K",
"type": "integer"
},
"project_path": {
"default": "",
"title": "Project Path",
"type": "string"
},
"rerank": {
"default": false,
"title": "Rerank",
"type": "boolean"
}
},
"title": "preload_contextArguments",
"type": "object"
},
"name": "preload_context"
},
{
"description": "\n Guarda un dato de perfil personal en Hipocampo (memory_items).\n\n A diferencia de save_hipocampo (que guarda en memoria_vectorial técnica),\n esta herramienta guarda en memory_items, que está diseñado para datos\n personales: gustos, familia, preferencias, datos biográficos.\n\n Args:\n summary: Texto corto con el dato personal. Ej: \"Al usuario le gusta el té de hierbas\".\n extra: Información adicional en texto plano (opcional).\n categories: Categorías (opcional). Ej: [\"personal_info\", \"gustos\"].\n\n Returns:\n Confirmación con el ID asignado.\n ",
"inputSchema": {
"properties": {
"categories": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Categories"
},
"extra": {
"default": "",
"title": "Extra",
"type": "string"
},
"summary": {
"title": "Summary",
"type": "string"
}
},
"required": [
"summary"
],
"title": "profile_hipocampoArguments",
"type": "object"
},
"name": "profile_hipocampo"
},
{
"description": "\n Búsqueda rápida en el Hipocampo (alias corto de search_hipocampo).\n\n Es solo lectura — no modifica datos. Comportamiento y argumentos idénticos\n a search_hipocampo (filtros code:/category:/id:/after:, format compact/full/json,\n rerank auto/always/never).\n ",
"inputSchema": {
"properties": {
"categories": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Categories"
},
"code": {
"default": "",
"title": "Code",
"type": "string"
},
"created_after": {
"default": "",
"title": "Created After",
"type": "string"
},
"created_before": {
"default": "",
"title": "Created Before",
"type": "string"
},
"explain": {
"default": false,
"title": "Explain",
"type": "boolean"
},
"format": {
"default": "compact",
"title": "Format",
"type": "string"
},
"ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Ids"
},
"include_pending": {
"default": true,
"title": "Include Pending",
"type": "boolean"
},
"include_scores": {
"default": false,
"title": "Include Scores",
"type": "boolean"
},
"k": {
"default": 5,
"title": "K",
"type": "integer"
},
"memory_type": {
"default": "",
"title": "Memory Type",
"type": "string"
},
"nivel": {
"default": "",
"title": "Nivel",
"type": "string"
},
"offset": {
"default": 0,
"title": "Offset",
"type": "integer"
},
"query": {
"default": "",
"title": "Query",
"type": "string"
},
"rerank": {
"default": "auto",
"title": "Rerank",
"type": "string"
},
"rerank_budget_ms": {
"default": 800,
"title": "Rerank Budget Ms",
"type": "integer"
},
"rerank_top_k": {
"default": 8,
"title": "Rerank Top K",
"type": "integer"
},
"session_id": {
"default": "",
"title": "Session Id",
"type": "string"
},
"snippet_chars": {
"default": 300,
"title": "Snippet Chars",
"type": "integer"
}
},
"title": "quick_hipocampo_searchArguments",
"type": "object"
},
"name": "quick_hipocampo_search"
},
{
"description": "Fuerza reindexación inmediata de un directorio (o todos los watch).",
"inputSchema": {
"properties": {
"path": {
"default": "",
"title": "Path",
"type": "string"
}
},
"title": "reindex_nowArguments",
"type": "object"
},
"name": "reindex_now"
},
{
"description": "Elimina un directorio del watch list.",
"inputSchema": {
"properties": {
"path": {
"title": "Path",
"type": "string"
}
},
"required": [
"path"
],
"title": "remove_watch_dirArguments",
"type": "object"
},
"name": "remove_watch_dir"
},
{
"description": "\n Restaura una memoria desde memoria_historica a memoria_vectorial.\n\n Reconstruye embedding automáticamente. La memoria vuelve al tier HOT.\n\n Args:\n historica_id: ID de la memoria en memoria_historica.\n ",
"inputSchema": {
"properties": {
"historica_id": {
"title": "Historica Id",
"type": "integer"
}
},
"required": [
"historica_id"
],
"title": "restaurar_historicaArguments",
"type": "object"
},
"name": "restaurar_historica"
},
{
"description": "\n Revisa reglas 'automatica' sin revisión en los últimos N días.\n\n Las reglas automatica son permanentes por diseño, pero pueden degradarse\n a 'semantica' si no han sido útiles (review_count=0) después de max_age_days.\n\n Con dry_run=True solo lista las reglas candidatas a degradación.\n Con dry_run=False las degrada a 'semantica' (no se borran, solo pierden\n inmunidad de compresión).\n\n Args:\n max_age_days: Edad máxima sin revisión antes de considerar degradación (default 30).\n dry_run: Si True, solo muestra qué se degradaría.\n\n Returns:\n Reporte de reglas encontradas.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
},
"max_age_days": {
"default": 30,
"title": "Max Age Days",
"type": "integer"
}
},
"title": "review_automaticaArguments",
"type": "object"
},
"name": "review_automatica"
},
{
"description": "Revisa memorias de conocimiento del oficio candidatas a decaer.\n\n Presenta memorias con domain_profile='infrastructure' que están\n cerca de su fecha límite de decay (150+ días sin acceso de los 180).\n El agente puede:\n - Refuerza (reinforce): resetea el contador de acceso\n - Permite decay: la memoria sigue el ciclo normal\n\n Ejecutar cada 3 meses via systemd timer o manualmente.\n ",
"inputSchema": {
"properties": {
"dry_run": {
"default": true,
"title": "Dry Run",
"type": "boolean"
}
},
"title": "review_trade_knowledgeArguments",
"type": "object"
},
"name": "review_trade_knowledge"
},
{
"description": "\n Revierte un checkpoint usando el snapshot guardado previamente.\n\n Busca el snapshot por ID y verifica qué IDs originales fueron comprimidos.\n Si los originales aún existen, reporta que no se necesita rollback.\n Si fueron eliminados, intenta restaurarlos.\n\n Args:\n snapshot_id: ID del snapshot [CHECKPOINT SNAPSHOT] guardado.\n\n Returns:\n Reporte de la operación de rollback.\n ",
"inputSchema": {
"properties": {
"snapshot_id": {
"title": "Snapshot Id",
"type": "integer"
}
},
"required": [
"snapshot_id"
],
"title": "rollback_checkpointArguments",
"type": "object"
},
"name": "rollback_checkpoint"
},
{
"description": "\n Guarda un recuerdo en el Hipocampo (memoria_vectorial).\n\n INSERT inmediato y NO bloqueante: el embedding se genera en background\n (_finalize_save_bg) junto con dedup semántico, auto-link y auditoría de\n contradicciones. Hasta que el embedding se backfillea (~segundos), la\n memoria queda en tier WARM (embedding=NULL) y es recuperable por texto.\n\n Si ya existe un recuerdo casi idéntico (trigram), se advierte y se omite\n el guardado a menos que force=True. El dedup semántico (>0.9) corre en\n background y solo loguea — no bloquea.\n\n Args:\n content: Texto del recuerdo a guardar.\n memory_type: Tipo de memoria. Valores comunes:\n \"event\" (evento/experiencia),\n \"decision\" (decisión tomada),\n \"profile\" (dato personal).\n Por defecto: \"event\".\n code: Código o etiqueta corta para agrupar recuerdos (opcional).\n Ej: \"documentacion\", \"bugfix\", \"feature\", \"setup\".\n categories: Lista de categorías (opcional).\n Ej: [\"python\", \"mcp\", \"infraestructura\"].\n session_id: Opcional. Identificador de sesión para aislar memorias.\n force: Si True, guarda incluso si existe un recuerdo muy similar.\n auto_link: Si True, busca recuerdos semánticamente similares (>0.75)\n y crea enlaces \"similar\" automáticamente.\n nivel: Nivel de memoria jerárquica:\n \"episodica\" (default) — detalle completo, comprimible,\n \"semantica\" — conocimiento consolidado, protegido,\n \"automatica\" — regla permanente, nunca se comprime.\n critico: Si True, la memoria NUNCA se olvida ni se archiva.\n Protección de por vida independiente del nivel.\n snapshot_for: Si se proporciona un ID de regla inmunológica,\n después de guardar se crea automáticamente un enlace\n \"part_of\" desde este recuerdo hacia esa regla.\n Esto permite que validate_immune_rule encuentre el\n snapshot pre-cambio vinculado.\n autor: Procedencia del recuerdo (capa de fuente, 2026-10-17):\n \"agente\" (default; lo escribiste tú en una sesión),\n \"usuario\" (dictado o habla directa del usuario),\n \"catalogo\" (entrada generada al indexar archivos).\n Viaja en metadatos.autor y aparece como línea 🔖 en la\n búsqueda, para distinguir reencontrar de consultar.\n\n Returns:\n Confirmación con el ID asignado.\n ",
"inputSchema": {
"properties": {
"auto_link": {
"default": false,
"title": "Auto Link",
"type": "boolean"
},
"autor": {
"default": "agente",
"title": "Autor",
"type": "string"
},
"categories": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Categories"
},
"code": {
"default": "",
"title": "Code",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"critico": {
"default": false,
"title": "Critico",
"type": "boolean"
},
"force": {
"default": false,
"title": "Force",
"type": "boolean"
},
"memory_type": {
"default": "event",
"title": "Memory Type",
"type": "string"
},
"nivel": {
"default": "episodica",
"title": "Nivel",
"type": "string"
},
"session_id": {
"default": "",
"title": "Session Id",
"type": "string"
},
"snapshot_for": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Snapshot For"
}
},
"required": [
"content"
],
"title": "save_hipocampoArguments",
"type": "object"
},
"name": "save_hipocampo"
},
{
"description": "\n Busca código fuente indexado en Hipocampo (RAG).\n\n Similar a search_hipocampo pero filtra solo recuerdos de tipo\n code_snippet y devuelve fragmentos de código real con\n ubicación de archivo.\n\n Args:\n query: Consulta en lenguaje natural.\n k: Número de resultados (default 5, max 20).\n language: Filtrar por lenguaje (php, javascript, python, sql, etc.).\n Vacío = todos los lenguajes.\n\n Returns:\n Fragmentos de código relevantes con metadatos de archivo.\n ",
"inputSchema": {
"properties": {
"k": {
"default": 5,
"title": "K",
"type": "integer"
},
"language": {
"default": "",
"title": "Language",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "search_codeArguments",
"type": "object"
},
"name": "search_code"
},
{
"description": "Busca en el Hipocampo con carriles estructurados + semánticos.\n\n Es solo lectura (no modifica memorias). Devuelve una salida compacta por\n defecto: id, relevancia, code/fecha/nivel, un fragmento corto y el motivo.\n\n Sintaxis de query (opcional, se puede combinar con texto libre):\n code:opencode_session_forensics\n category:infraestructura,trigger:mcp\n nivel:automatica | type:decision | id:4039 | #4039\n after:2026-10-01 | since:7d | before:today\n \"frase exacta entre comillas\"\n\n También acepta filtros por argumentos (code=, categories=, nivel=,\n memory_type=, ids=, created_after=, created_before=). Los argumentos\n explícitos tienen prioridad sobre la sintaxis de la query.\n\n Args:\n query: Texto libre y/o filtros. Puede ir vacío si se usan filtros.\n session_id: Filtra a una sesión concreta.\n rerank: \"auto\" (default; re-rankea solo si puede cambiar la decisión),\n \"always\" (TypeSafe/classifier, acotado) o \"never\".\n El booleano antiguo se acepta: True≈always, False≈never.\n k: Resultados a devolver (1-20, default 5).\n offset: Paginación (0-based).\n code: Filtro exacto por code.\n categories: Filtro por una o más categorías (coincidencia cualquiera).\n nivel: episodica | semantica | automatica.\n memory_type: event | decision | profile | ...\n ids: Lista de IDs numéricos de memoria_vectorial.\n created_after / created_before: Fechas ISO (YYYY-MM-DD) o \"7d\"/\"today\".\n include_pending: Si False, oculta filas cuyo embedding aún no está listo.\n rerank_top_k: Cuántos resultados re-rankear (3-20, default 8).\n rerank_budget_ms: Presupuesto HTTP del re-rank (100-5000 ms, default 800).\n format: \"compact\" (default), \"full\" (formato histórico) o \"json\".\n snippet_chars: Longitud del fragmento (80-2000, default 300).\n include_scores: Muestra el score numérico en la salida compacta.\n explain: Muestra el desglose de canales (vec/lex/struct).\n\n Returns:\n Texto formateado (compact/full) o JSON. Si no hay coincidencias,\n indica que la búsqueda fue válida pero sin resultados.\n ",
"inputSchema": {
"properties": {
"categories": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Categories"
},
"code": {
"default": "",
"title": "Code",
"type": "string"
},
"created_after": {
"default": "",
"title": "Created After",
"type": "string"
},
"created_before": {
"default": "",
"title": "Created Before",
"type": "string"
},
"explain": {
"default": false,
"title": "Explain",
"type": "boolean"
},
"format": {
"default": "compact",
"title": "Format",
"type": "string"
},
"ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Ids"
},
"include_pending": {
"default": true,
"title": "Include Pending",
"type": "boolean"
},
"include_scores": {
"default": false,
"title": "Include Scores",
"type": "boolean"
},
"k": {
"default": 5,
"title": "K",
"type": "integer"
},
"memory_type": {
"default": "",
"title": "Memory Type",
"type": "string"
},
"nivel": {
"default": "",
"title": "Nivel",
"type": "string"
},
"offset": {
"default": 0,
"title": "Offset",
"type": "integer"
},
"query": {
"default": "",
"title": "Query",
"type": "string"
},
"rerank": {
"default": "auto",
"title": "Rerank",
"type": "string"
},
"rerank_budget_ms": {
"default": 800,
"title": "Rerank Budget Ms",
"type": "integer"
},
"rerank_top_k": {
"default": 8,
"title": "Rerank Top K",
"type": "integer"
},
"session_id": {
"default": "",
"title": "Session Id",
"type": "string"
},
"snippet_chars": {
"default": 300,
"title": "Snippet Chars",
"type": "integer"
}
},
"title": "search_hipocampoArguments",
"type": "object"
},
"name": "search_hipocampo"
},
{
"description": "\n Cambia el nivel jerárquico de un recuerdo.\n\n Niveles:\n - \"episodica\" — detalle completo, comprimible por checkpoint\n - \"semantica\" — conocimiento consolidado, protegido de compresión\n - \"automatica\" — regla permanente, nunca se comprime/checkpointea\n\n Args:\n id: ID del recuerdo.\n nivel: Nuevo nivel: \"episodica\", \"semantica\", o \"automatica\".\n\n Returns:\n Confirmación del cambio.\n ",
"inputSchema": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
},
"nivel": {
"title": "Nivel",
"type": "string"
}
},
"required": [
"id",
"nivel"
],
"title": "set_nivel_hipocampoArguments",
"type": "object"
},
"name": "set_nivel_hipocampo"
},
{
"description": "\n Elimina un enlace del grafo de memoria.\n\n Args:\n id: ID del enlace a eliminar (si se conoce).\n source_id: Si no se provee id, elimina por source+target+type.\n target_id: ID destino (requerido si no hay id).\n relation_type: Tipo de relación (opcional si no hay id).\n\n Returns:\n Confirmación de eliminación.\n ",
"inputSchema": {
"properties": {
"id": {
"default": 0,
"title": "Id",
"type": "integer"
},
"relation_type": {
"default": "",
"title": "Relation Type",
"type": "string"
},
"source_id": {
"default": 0,
"title": "Source Id",
"type": "integer"
},
"target_id": {
"default": 0,
"title": "Target Id",
"type": "integer"
}
},
"title": "unlink_hipocampoArguments",
"type": "object"
},
"name": "unlink_hipocampo"
},
{
"description": "\n Elimina un webhook registrado por su ID.\n\n Args:\n id: ID del watch a eliminar.\n\n Returns:\n Confirmación de eliminación.\n ",
"inputSchema": {
"properties": {
"id": {
"title": "Id",
"type": "integer"
}
},
"required": [
"id"
],
"title": "unwatch_hipocampoArguments",
"type": "object"
},
"name": "unwatch_hipocampo"
},
{
"description": "\n Actualiza un recuerdo existente en el Hipocampo (memoria_vectorial).\n\n Si se proporciona content, el embedding se regenera en BACKGROUND (no\n bloquea la llamada, igual que save_hipocampo): la fila conserva su\n embedding anterior hasta el backfill y la búsqueda semántica pasa al\n nuevo en cuanto esté listo. Los campos no proporcionados no se modifican.\n\n Args:\n id: ID numérico del recuerdo a actualizar.\n content: Nuevo texto del recuerdo (opcional). Si se provee, el embedding\n se regenera en background.\n memory_type: Nuevo tipo de memoria (opcional). Ej: \"event\", \"decision\".\n code: Código o etiqueta corta (opcional).\n categories: Nueva lista de categorías (opcional).\n meta_patch: Dict opcional que se FUSIONA sobre metadatos (sobrescribe\n solo las claves incluidas; el resto se conserva). Pensado\n para sincronizar md5/bytes sin escribir SQL a mano.\n Ej: {\"md5\": \"6dbe9bdb...\", \"bytes\": 52790}\n\n Returns:\n Confirmación de la actualización.\n ",
"inputSchema": {
"properties": {
"categories": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Categories"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Code"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content"
},
"id": {
"title": "Id",
"type": "integer"
},
"memory_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Memory Type"
},
"meta_patch": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Meta Patch"
}
},
"required": [
"id"
],
"title": "update_hipocampoArguments",
"type": "object"
},
"name": "update_hipocampo"
},
{
"description": "\n Valida una regla inmunológica (Nivel 4).\n\n Analiza una regla 'automatica' marcada como REGLA INMUNOLÓGICA:\n 1. Verifica snapshots pre-cambio vinculados en memory_links\n 2. Detecta reglas contradictorias sobre el mismo archivo/proyecto\n 3. Reporta reglas huérfanas (>30d sin enlaces entrantes)\n\n Args:\n rule_id: ID de la regla inmunológica a validar.\n\n Returns:\n Reporte de validación con recomendaciones.\n ",
"inputSchema": {
"properties": {
"rule_id": {
"title": "Rule Id",
"type": "integer"
}
},
"required": [
"rule_id"
],
"title": "validate_immune_ruleArguments",
"type": "object"
},
"name": "validate_immune_rule"
},
{
"description": "\n Registra un webhook que se dispara cuando se crea/modifica/elimina\n un recuerdo cuyo contenido o metadatos contengan el patrón dado.\n\n Args:\n pattern: Texto a buscar en contenido o metadatos del recuerdo.\n webhook_url: URL que recibirá un POST con event, id, content, metadatos.\n\n Returns:\n Confirmación con ID del watch creado.\n ",
"inputSchema": {
"properties": {
"pattern": {
"title": "Pattern",
"type": "string"
},
"webhook_url": {
"title": "Webhook Url",
"type": "string"
}
},
"required": [
"pattern",
"webhook_url"
],
"title": "watch_hipocampoArguments",
"type": "object"
},
"name": "watch_hipocampo"
}
]
}What the leaf hashes
{"body":"13fbc422fd9cd53f7f264d4e1300e1384f78c85ec00e071e3157d9af74b54fc1","id":579141,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793143317849254,"prev":null,"subject":"825804d4-d32f-4788-833d-dae5f552c35d","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0x869380e0aa6050790de57cd1ec5c9a853c60aca6db7b4c99d25c1045e432f527
- 0xce202152d27e7983f7297fd38016d340cf1c652b8fbcb08946600a557f337a3c
- 0x766b8304a7d20d8248d135e96cd1bdab69a4bd5b8292cd377a1a5666c482185e
- 0x93936045f1225e0f41881da819a71ce51337519173558c15e429880836cb952d
- 0x34f781cc41dc160a591c5e3f2bba80079a930c483daf67e776a07f017fb5c685
- 0x487a6765292ae6667104e07b806422212fc559dce78470792c65ecf93a36376a
- 0xf4503b5c1c9d167ab7c76de7c7adc9f63458912e9c56a6de9ce0203b07f17c69
- 0x9b71a1e41e5d54d4fa9df3fc1520d57006200f1b29e8a86c5a1c10c1714eeac8
- 0x6379cb39cc0041e9f8862ab6094a764bf7f93412abd49a57f9d6f2204b426bf1
- 0x62b856b44e16d175a37058c6919f0c4acdf69afdf756c53db4e59cf54aa2a004
- 0xa422cf0aa2444c11b145e66f51596fb564431c83c30bc600fea79ecf01652ab4
- 0xe5ce8ac1ba4d6152605e0a032058cac5906d85f82e3fda1ad44852337b713b17
- 0x07d414626f116f3edc6ddb34183ed02538c3a805fec6db00f9d764f8fd595d04
- 0x4964f0806efde5ed25f60da2b45d78cd2e0f07d67e64aad2822f6016ad973c47
- 0x3c500ec3d3edf0c74b87a6ca8fcd77656bfbe03db3d478bd0c184d0c88839c6b
- 0xfecf3d4646dd4984a13dd715499e842c3fde63692336d97394c2bfd8e877ca5d
- 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
- 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4