addrbookFor publishers
← The evidence ledger

Evidence row 1299953

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 60ca49c0-56d3-442f-a72b-e10e7f871cda
Recorded
Previous row
#290711
Body SHA-256
ccfe11dcde1c256528473fc600fb685d192732d7b5245ae075b1b6b0c7d4ef2d
Leaf
0xbc0a817e0c46946f2a0c7180239765d55bc248aaaea660b1e1a3ec7f0423fbc6

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Permanently delete one of your own assets by id. Irreversible: the share URL stops working immediately and the content cannot be restored. Requires authentication and ownership; ids you do not own return an error. Use list_assets to find the id; there is no bulk delete.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "12-character asset id you own (from list_assets).",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "delete"
    },
    {
      "description": "Return Oh My Share service metadata: version, REST and MCP endpoints, feature list, and per-IP rate limits (10 uploads/hour, 500 views/hour). Read-only, no auth, cheap to call. Use it once at startup to discover capabilities; use list_assets or search_gallery for actual content.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_info"
    },
    {
      "description": "List up to 50 assets owned by the authenticated user, newest first, with id, filename, timestamps and share URL. Requires an API key or signed-in session; read-only, and results are capped at 50 with no pagination. Use search_gallery for public works from other users, or view to open one of your assets.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_assets"
    },
    {
      "description": "Search public gallery works by keyword across title, description, tags and id; omit query to browse the newest works. Returns a paginated result set (items, total, page, pages) where each item has id, title, views and URLs. sort is new (newest) or hot (most liked and viewed); limit is capped at 20. No auth required. Use view to open a result, or list_assets for your own uploads.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 10,
            "description": "Results per page, 1 to 20. Default 10.",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "page": {
            "default": 1,
            "description": "1-based page number. Default 1.",
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "Keyword matched against title, description, tags and id; empty returns the newest works.",
            "type": "string"
          },
          "sort": {
            "default": "new",
            "description": "new = newest first; hot = most liked and viewed.",
            "enum": [
              "new",
              "hot"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_gallery"
    },
    {
      "description": "Upload one HTML/code payload and get a public share URL plus an edit token. Each call creates a new asset unless idempotencyKey is reused. Anonymous uploads are rate-limited to 10/hour and 50/day per IP; authenticated uploads are limited per account. Content is public unless password-protected and expires after expiresIn (default 7d). Use upload_site for multi-file sites, view to read back, list_assets for your own files, or delete to remove one.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "HTML or code to publish (required, max 500 KB).",
            "type": "string"
          },
          "description": {
            "description": "Optional description for the asset.",
            "type": "string"
          },
          "expiresIn": {
            "default": "7d",
            "description": "Retention: 1h, 24h, 7d, 30d, 90d, or 0 for permanent. Default 7d.",
            "type": "string"
          },
          "filename": {
            "description": "Optional display filename used in the title and download name (max 200 chars).",
            "type": "string"
          },
          "idempotencyKey": {
            "description": "Optional 1-128 char retry key. Reusing it with the same payload returns the original asset; the edit token is only returned to the original caller.",
            "type": "string"
          },
          "language": {
            "default": "html",
            "description": "Content language hint, e.g. html, css, js, json, markdown. Default html.",
            "type": "string"
          },
          "password": {
            "description": "Optional password; the web view asks for it before showing content.",
            "type": "string"
          },
          "tags": {
            "description": "Optional comma-separated tags.",
            "type": "string"
          },
          "title": {
            "description": "Optional title shown in the viewer and gallery metadata.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "upload"
    },
    {
      "description": "Publish a multi-file static site from an authenticated account. Pass files as an array of {path, content} strings; the root must contain index.html or index.htm. Returns a /s/<id>/ URL that serves HTML/CSS/JS/assets. Limits: 200 files, 20 MB total, 5 MB per file. Requires OAuth or an API key; site links never show the anonymous badge. Use idempotencyKey to make retries safe.",
      "inputSchema": {
        "properties": {
          "description": {
            "description": "Optional description.",
            "type": "string"
          },
          "expiresIn": {
            "default": "7d",
            "description": "Retention: 1h, 24h, 7d, 30d, 90d, or 0 for permanent. Default 7d.",
            "type": "string"
          },
          "files": {
            "description": "Site files. Paths are relative and must not contain .. or absolute paths.",
            "items": {
              "properties": {
                "content": {
                  "description": "UTF-8 file content.",
                  "type": "string"
                },
                "path": {
                  "description": "Relative path, e.g. index.html or assets/app.css.",
                  "type": "string"
                }
              },
              "required": [
                "path",
                "content"
              ],
              "type": "object"
            },
            "maxItems": 200,
            "minItems": 1,
            "type": "array"
          },
          "idempotencyKey": {
            "description": "Optional 1-128 char retry key. Reusing it with the same payload returns the original site; the edit token is only returned to the original caller.",
            "type": "string"
          },
          "tags": {
            "description": "Optional comma-separated tags.",
            "type": "string"
          },
          "title": {
            "description": "Optional site title; defaults to \"site\".",
            "type": "string"
          }
        },
        "required": [
          "files"
        ],
        "type": "object"
      },
      "name": "upload_site"
    },
    {
      "description": "Fetch a single asset by id and return its content, filename, creation time and share URL. Read-only and safe to retry; public assets need no auth, password-protected assets return an error with the share URL, and client-encrypted content is returned as stored. Use search_gallery to find an id, or list_assets for your own uploads.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "12-character asset id returned by upload or search_gallery.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "view"
    }
  ]
}

What the leaf hashes

{"body":"ccfe11dcde1c256528473fc600fb685d192732d7b5245ae075b1b6b0c7d4ef2d","id":1299953,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793403626841364,"prev":290711,"subject":"60ca49c0-56d3-442f-a72b-e10e7f871cda","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (243099 rows).

  1. 0xbc0a7213200f5ee201a6671d754e78444b93ab1ffe4e2637f1aa3c6db0dc2143
  2. 0x9bb1850cf86941db3b9924e0088e10d682dfeb417705be84dbddfd9d9b491a63
  3. 0x64f87b022e667cd5c9eb6d7e73c300150b1c772b8a3c8aea17c9ab5c95d9de47
  4. 0xe38e04b3fd908862aff15733497aec798aad871f20b161ee74d08fc74810a07e
  5. 0x87b5bd4b51367e022264e61c43a45926c0aaed330c5a6b389ebeafc70074afba
  6. 0x5b2dfa7d818941aeefc9e5e30da8bbadbacd20feb932047b87aea80da43b1c92
  7. 0xa9a6bd673b2faf14d37951e630214e38ecb6f8f2ef96af576fc79646974e923e
  8. 0xd3de79d5a6c00deb329ff4a17d471a01fe915855f7b14e17fae5b03be13b5037
  9. 0x84faab81e4297f16d7159821fd45e95ce83ff19ea4bc146f1b46188bcb262f29
  10. 0xd6246df7ced25135646df1d3a00a1426cddb73ce60f7cb909ef5ee7ee816e734
  11. 0xe434e81ed0beb4a561dde76c74e9bde7edc8f28962e0a21313f5339952d64803
  12. 0xb288b591f483370463f2cb819636251f83f80924cd2bf8511441413218f647fb
  13. 0x9284dae9a7e06f703013033011cfbc40fdf815bacecff8ae80861ffbba56d6d6
  14. 0x4ac91605f15503f7d7aa9a25d4e54c100a1a62c26e93a7ed87049569e871a9a4
  15. 0xa0b1f6bc1eecfaf70581673c1a7f638b96d1769a5c578c460337f7db0dbe963e
  16. 0x0c59b8770d2782eb535aefbb9b2f6810bab4757f51b37e00f5147713a1de9481
  17. 0x61ef83255d34604cb052882568ca1d1386ac3cfb8284509715bc1734cff77831
  18. 0x0c43c73b62a5d49ee1444b5dc4195fc5b16b141d3f4458e2e9fbd5fd6ecb367d
Day root
0x0826c7ad6039e06a2360ca0a4a3a4fe7f2626c6dc19f71a37599386f78b39875
Chained
0x36b4c8a1063758f0b8765fa1bdf75fa92fb543cc183add3e261880ee2bd1f822
Published
On Arc Testnet, block 69923247: 0x8704744146c6967c8abc9e9a99de4db7283b29e840922ea83a69b6fe776e6861

How to check it · This row as JSON