addrbookFor publishers
← The evidence ledger

Evidence row 565535

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 689542d9-f083-4d6a-8189-51186d857317
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
e3f5b163a21ca4ed2e8e1a7c97f64b6c4ad4ae1cb806b799eb54c3f8f27431e4
Leaf
0x029abadb2a3fb63f81959dc988842f5d7ff201581cd655bb819bc244e2fb4982

What was observed

{
  "count": 6,
  "tools": [
    {
      "description": "Soft-delete a memory by id. The row is retained for audit but excluded from search/list and removed from the vector index.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "UUID of the memory to forget.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "memory_forget"
    },
    {
      "description": "List the user's most recent memories in reverse chronological order. Use for browsing or catching up on what the user's other model sessions have written recently. Same content/content_raw shape as memory_search. Optional filters (tags, written_by, session_id, since, until) narrow the listing at the SQL level.",
      "inputSchema": {
        "properties": {
          "cursor": {
            "description": "Pagination cursor from a previous call's `cursor` field (ms epoch); returns rows older than this timestamp.",
            "type": "integer"
          },
          "limit": {
            "description": "Max rows to return (1–200). Default 50.",
            "type": "integer"
          },
          "raw": {
            "description": "Return original prose instead of the compressed form. Default false.",
            "type": "boolean"
          },
          "session_id": {
            "description": "Only return memories with an exact session_id match.",
            "type": "string"
          },
          "since": {
            "description": "Only return memories created at or after this ms-epoch timestamp.",
            "type": "integer"
          },
          "tags": {
            "description": "Only return memories containing ALL of these tags (AND semantics).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "until": {
            "description": "Only return memories created strictly before this ms-epoch timestamp.",
            "type": "integer"
          },
          "written_by": {
            "description": "Only return memories with an exact written_by match.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "memory_list"
    },
    {
      "description": "Search the user's memories. Default mode is 'hybrid': blends semantic (cosine over Vectorize) and keyword (BM25 over SQLite FTS5) hits via Reciprocal Rank Fusion (k=60). Semantic catches paraphrases; keyword catches exact-string hits (IDs, dates, code snippets). Pass mode:'semantic' or mode:'keyword' to run just one. Content defaults to the LLM-optimized (compressed) form when available (raw:true to invert). Excludes forgotten + superseded. Optional filters narrow after retrieval: tags (AND), written_by, session_id, and/or since/until (ms epoch).",
      "inputSchema": {
        "properties": {
          "k": {
            "description": "Max results (1–50). Default 10.",
            "type": "integer"
          },
          "mode": {
            "description": "Retrieval mode. Default 'hybrid'.",
            "enum": [
              "semantic",
              "keyword",
              "hybrid"
            ],
            "type": "string"
          },
          "query": {
            "description": "Search query. Interpreted as natural language for semantic mode and as FTS5-safe text for keyword mode.",
            "type": "string"
          },
          "raw": {
            "description": "Return original prose instead of the compressed form. Default false.",
            "type": "boolean"
          },
          "session_id": {
            "description": "Only return memories with an exact session_id match.",
            "type": "string"
          },
          "since": {
            "description": "Only return memories created at or after this ms-epoch timestamp.",
            "type": "integer"
          },
          "tags": {
            "description": "Only return memories containing ALL of these tags (AND semantics).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "until": {
            "description": "Only return memories created strictly before this ms-epoch timestamp.",
            "type": "integer"
          },
          "written_by": {
            "description": "Only return memories with an exact written_by match (e.g. 'claude-code').",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "memory_search"
    },
    {
      "description": "Replace a stale memory with a corrected one. The old row is marked superseded and excluded from future reads; the new row becomes the current version. Use for corrections; use memory_forget for pure deletions.",
      "inputSchema": {
        "properties": {
          "new_content": {
            "description": "New content that supersedes the old memory.",
            "type": "string"
          },
          "old_id": {
            "description": "UUID of the memory to replace.",
            "type": "string"
          },
          "session_id": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "written_by": {
            "type": "string"
          }
        },
        "required": [
          "old_id",
          "new_content"
        ],
        "type": "object"
      },
      "name": "memory_supersede"
    },
    {
      "description": "Save a fact, preference, decision, or note to the user's cross-model memory. Any MCP client can read this back later. Include written_by (e.g. 'claude-code', 'gpt-5', 'kimi-k2') for provenance and session_id to group related writes. Long content (>400 chars) is automatically compressed on write to a structured-facts form optimized for LLM reading — the raw text is preserved. Pass no_optimize:true to skip. Writes are deduped by default: (1) SHA-256 of trim(content) short-circuits byte-identical writes with { id, exact_duplicate:true } for free (no embed call); (2) failing that, semantic dedup returns { id, deduped:true, matched_score } when cosine ≥ 0.85. Pass force:true to bypass both, or use memory_supersede to explicitly correct a prior memory.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The fact or note to remember. Plain text, max 8000 characters.",
            "type": "string"
          },
          "force": {
            "description": "Bypass semantic dedup and write anyway. Default false.",
            "type": "boolean"
          },
          "no_optimize": {
            "description": "Skip AI compression of long content. Default false.",
            "type": "boolean"
          },
          "session_id": {
            "description": "Opaque identifier grouping related writes from the same conversation.",
            "type": "string"
          },
          "tags": {
            "description": "Optional short labels for filtering (e.g. ['preference','stack']).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "written_by": {
            "description": "Identifier of the model / client writing this (e.g. 'claude-code', 'gpt-5', 'kimi-k2', 'manual').",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "memory_write"
    },
    {
      "description": "Write up to 50 memories in a single call. Each entry runs the same path as memory_write (semantic dedup by default; pass force:true per-entry to skip). Embeddings + optimizations run in parallel; D1 inserts are batched. Returns { results: [...] } with one entry per input in the same order — each is { id, created_at, optimized? } on success, { id, created_at, deduped, matched_score } on dedup, or { error } on failure. Free-tier limits apply to the sum: if adding N would exceed 200, the first (200 - existing) succeed and the rest return an error.",
      "inputSchema": {
        "properties": {
          "memories": {
            "description": "Array of memory-write entries (1–50).",
            "items": {
              "properties": {
                "content": {
                  "description": "The fact or note to remember. Plain text, max 8000 characters.",
                  "type": "string"
                },
                "force": {
                  "description": "Bypass semantic dedup for this entry. Default false.",
                  "type": "boolean"
                },
                "no_optimize": {
                  "description": "Skip AI compression of long content. Default false.",
                  "type": "boolean"
                },
                "session_id": {
                  "type": "string"
                },
                "tags": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "written_by": {
                  "type": "string"
                }
              },
              "required": [
                "content"
              ],
              "type": "object"
            },
            "maxItems": 50,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "memories"
        ],
        "type": "object"
      },
      "name": "memory_write_bulk"
    }
  ]
}

What the leaf hashes

{"body":"e3f5b163a21ca4ed2e8e1a7c97f64b6c4ad4ae1cb806b799eb54c3f8f27431e4","id":565535,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138192048367,"prev":null,"subject":"689542d9-f083-4d6a-8189-51186d857317","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. 0x029a805d59c5da768c42bb389eb5d53a5e26135135a72a58c9d2ae74fe657374
  2. 0xe389dc4bfebd308ae190cdc05383e0fea6bd631917e025188fcd1a88842413ae
  3. 0x3f3a999fe53b0d1beb0358874832af5bf3c8ce6b1023454faad6c449a0517ef6
  4. 0xa73637e9a827fd50c1cb9a691980b2e4ed9b57db1032e5971ccb8a3ecd68571a
  5. 0xe404824fd988de74883432a616d66544df6c528a0442fbfbd9859128960de595
  6. 0xd60d207887a35f61b5651c5de6f7d6913e5439cc62c66f79faa4bb02ef32c2c2
  7. 0xf49f86fd663001708242d0c71e41e31c163a642d0c6dd509c4258f01820d488b
  8. 0x20bf7aab3d63092286a6598b41e11211c987292240fe284cecb7f0d8772fbfb5
  9. 0xe819ad96b28bea541e20f57e7c13ea043108be33ab796776512ecdd4bbd4784b
  10. 0x9dccb519cb2984d5b4533c1b78e03e29964480f14ce1a0877b610ad1575cab3e
  11. 0xca110c77af452531cd72d9dfe28e4dd3c3e60be71c9e7ac05ad2b782f9713bde
  12. 0x05916cc6b98491a0d541e4ecca3d0132fa255184243406b5a8a52bb1b6b63bd0
  13. 0x5b34b9f89512a83faa4bfecec322037670cc1af58e6e94a86fe88934434d7ddf
  14. 0x29e12cb67839430fa64ab8bd05d52bab606f2978d9e6d2fb094fece9438fd4de
  15. 0x2cf27e8a181d60d0dd27c186c2eddfcbb4e8fa71cf66feeb55a4d730e15ee8c4
  16. 0x518b93854db03dc9fc938883abf30da6eaae5ae0d4336903968fd32a7df8c71b
  17. 0x22c1fb9487ee0b9732fa017a0cc321eb27a60c08450d112f755089796e12cb1c
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
Not published on a chain yet

How to check it · This row as JSON