addrbookFor publishers
← 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).

  1. 0x869380e0aa6050790de57cd1ec5c9a853c60aca6db7b4c99d25c1045e432f527
  2. 0xce202152d27e7983f7297fd38016d340cf1c652b8fbcb08946600a557f337a3c
  3. 0x766b8304a7d20d8248d135e96cd1bdab69a4bd5b8292cd377a1a5666c482185e
  4. 0x93936045f1225e0f41881da819a71ce51337519173558c15e429880836cb952d
  5. 0x34f781cc41dc160a591c5e3f2bba80079a930c483daf67e776a07f017fb5c685
  6. 0x487a6765292ae6667104e07b806422212fc559dce78470792c65ecf93a36376a
  7. 0xf4503b5c1c9d167ab7c76de7c7adc9f63458912e9c56a6de9ce0203b07f17c69
  8. 0x9b71a1e41e5d54d4fa9df3fc1520d57006200f1b29e8a86c5a1c10c1714eeac8
  9. 0x6379cb39cc0041e9f8862ab6094a764bf7f93412abd49a57f9d6f2204b426bf1
  10. 0x62b856b44e16d175a37058c6919f0c4acdf69afdf756c53db4e59cf54aa2a004
  11. 0xa422cf0aa2444c11b145e66f51596fb564431c83c30bc600fea79ecf01652ab4
  12. 0xe5ce8ac1ba4d6152605e0a032058cac5906d85f82e3fda1ad44852337b713b17
  13. 0x07d414626f116f3edc6ddb34183ed02538c3a805fec6db00f9d764f8fd595d04
  14. 0x4964f0806efde5ed25f60da2b45d78cd2e0f07d67e64aad2822f6016ad973c47
  15. 0x3c500ec3d3edf0c74b87a6ca8fcd77656bfbe03db3d478bd0c184d0c88839c6b
  16. 0xfecf3d4646dd4984a13dd715499e842c3fde63692336d97394c2bfd8e877ca5d
  17. 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON