addrbookFor publishers
← The evidence ledger

Evidence row 52109

Observed , by baseline/1.

Kind
listing
About
source_record mcp_registry:io.github.shibbirweb/mcp-db-read-only
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
0a82dbd9a2828b88aa2b05f40481bddd045194ba9bad9265a694c883cc1c2906
Leaf
0xa225bd6b566e9c1bd1d62eb72ba7ccc53a7bd3a58065e590c363fed469274ec5

What was observed

{
  "endpoints": [
    [
      "web",
      "https://github.com/shibbirweb/mcp-db-read-only"
    ]
  ],
  "name": "Databases (read-only, switchable)",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-09-24T20:40:20.107595Z",
        "status": "active",
        "statusChangedAt": "2026-09-24T20:40:20.107595Z",
        "updatedAt": "2026-09-24T20:40:20.107595Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "Read-only SQL, MongoDB, Redis and Elasticsearch access, switchable mid-conversation.",
      "name": "io.github.shibbirweb/mcp-db-read-only",
      "packages": [
        {
          "environmentVariables": [
            {
              "description": "Connection URL to open at startup, e.g. postgres://user@host:5432/db, mongodb://user@host/db, redis://host:6379/0 or sqlite:///data/app.db",
              "format": "string",
              "name": "DB_URL"
            },
            {
              "description": "Password for DB_URL, so it need not be percent-encoded inside the URL",
              "format": "string",
              "isSecret": true,
              "name": "DB_PASSWORD"
            },
            {
              "description": "JSON object of named connections to switch between, each a URL or {\"url\", \"password\"}",
              "format": "string",
              "isSecret": true,
              "name": "DB_PROFILES"
            },
            {
              "description": "Which DB_PROFILES entry to start on",
              "format": "string",
              "name": "DB_DEFAULT_PROFILE"
            },
            {
              "description": "Connection timeout in milliseconds. Defaults to 10000",
              "format": "number",
              "name": "DB_CONNECT_TIMEOUT_MS"
            },
            {
              "description": "Server-side query timeout in milliseconds. Defaults to 30000",
              "format": "number",
              "name": "DB_QUERY_TIMEOUT_MS"
            },
            {
              "description": "true logs every tool call, its statements and full output to stderr. Off by default",
              "format": "boolean",
              "name": "DB_LOG"
            },
            {
              "description": "Log every tool call to this file instead. Implies DB_LOG",
              "format": "filepath",
              "name": "DB_LOG_FILE"
            },
            {
              "description": "Save every tool call as its own JSON file in this folder, permanently. Implies logging",
              "format": "filepath",
              "name": "DB_LOG_DIR"
            },
            {
              "description": "pretty (default) or json, one object per line",
              "format": "string",
              "name": "DB_LOG_FORMAT"
            },
            {
              "description": "Serve a live log viewer in the browser on this port. Needs DB_LOG_DIR, DB_LOG or DB_LOG_FILE. No access control",
              "format": "number",
              "name": "DB_LOG_PORT"
            },
            {
              "description": "Entries the viewer keeps in memory when DB_LOG_DIR is not set. Defaults to 500",
              "format": "number",
              "name": "DB_LOG_HISTORY"
            },
            {
              "description": "Legacy MySQL-only form, kept for drop-in compatibility. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_HOST"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_USER"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL with DB_PASSWORD",
              "format": "string",
              "isSecret": true,
              "name": "MYSQL_PASSWORD"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_DATABASE"
            }
          ],
          "identifier": "@shibbirweb/mcp-db-read-only",
          "registryType": "npm",
          "transport": {
            "type": "stdio"
          },
          "version": "1.1.0"
        },
        {
          "environmentVariables": [
            {
              "description": "Connection URL to open at startup, e.g. postgres://user@host:5432/db, mongodb://user@host/db, redis://host:6379/0 or sqlite:///data/app.db. Use host.docker.internal to reach the host",
              "format": "string",
              "name": "DB_URL"
            },
            {
              "description": "Password for DB_URL, so it need not be percent-encoded inside the URL",
              "format": "string",
              "isSecret": true,
              "name": "DB_PASSWORD"
            },
            {
              "description": "JSON object of named connections to switch between, each a URL or {\"url\", \"password\"}",
              "format": "string",
              "isSecret": true,
              "name": "DB_PROFILES"
            },
            {
              "description": "Which DB_PROFILES entry to start on",
              "format": "string",
              "name": "DB_DEFAULT_PROFILE"
            },
            {
              "description": "Connection timeout in milliseconds. Defaults to 10000",
              "format": "number",
              "name": "DB_CONNECT_TIMEOUT_MS"
            },
            {
              "description": "Server-side query timeout in milliseconds. Defaults to 30000",
              "format": "number",
              "name": "DB_QUERY_TIMEOUT_MS"
            },
            {
              "description": "true logs every tool call, its statements and full output to stderr. Off by default",
              "format": "boolean",
              "name": "DB_LOG"
            },
            {
              "description": "Log every tool call to this file instead, on a mounted volume. Implies DB_LOG",
              "format": "filepath",
              "name": "DB_LOG_FILE"
            },
            {
              "description": "Save every tool call as its own JSON file in this folder, on a mounted volume. Implies logging",
              "format": "filepath",
              "name": "DB_LOG_DIR"
            },
            {
              "description": "pretty (default) or json, one object per line",
              "format": "string",
              "name": "DB_LOG_FORMAT"
            },
            {
              "description": "Serve a live log viewer on this port (publish it with -p). Needs DB_LOG_DIR, DB_LOG or DB_LOG_FILE. No access control",
              "format": "number",
              "name": "DB_LOG_PORT"
            },
            {
              "description": "Entries the viewer keeps in memory when DB_LOG_DIR is not set. Defaults to 500",
              "format": "number",
              "name": "DB_LOG_HISTORY"
            },
            {
              "description": "Legacy MySQL-only form, kept for drop-in compatibility. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_HOST"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_USER"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL with DB_PASSWORD",
              "format": "string",
              "isSecret": true,
              "name": "MYSQL_PASSWORD"
            },
            {
              "description": "Legacy MySQL-only form. Prefer DB_URL",
              "format": "string",
              "name": "MYSQL_DATABASE"
            }
          ],
          "identifier": "docker.io/shibbirweb/mcp-db-read-only:1.1.0",
          "registryType": "oci",
          "transport": {
            "type": "stdio"
          }
        }
      ],
      "repository": {
        "source": "github",
        "url": "https://github.com/shibbirweb/mcp-db-read-only"
      },
      "title": "Databases (read-only, switchable)",
      "version": "1.1.0",
      "websiteUrl": "https://github.com/shibbirweb/mcp-db-read-only#readme"
    }
  },
  "source": "mcp_registry",
  "summary": "Read-only SQL, MongoDB, Redis and Elasticsearch access, switchable mid-conversation."
}

What the leaf hashes

{"body":"0a82dbd9a2828b88aa2b05f40481bddd045194ba9bad9265a694c883cc1c2906","id":52109,"kind":"listing","method":"baseline/1","observed_us":1793025419020748,"prev":null,"subject":"mcp_registry:io.github.shibbirweb/mcp-db-read-only","subject_kind":"source_record"}

Proof

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

  1. 0xa2256f8c0cf2a68e7581ed7a812092271b37dc10b05acc1c33b8bea69f465fe8
  2. 0x5f4719b945d63980064adb8622adc62c8a0efbd49a02d62ea6e2d4c8398390ad
  3. 0x339abfe9183c03cb620753a92645534d2f64335143762dcb603dddcad06cc0af
  4. 0x1e325f39ea33ad92cb24357d5c919b3ef76d4579c18cb60b7b493b428881d72f
  5. 0x110d2af123edd345aba778ffcbcb2c81bf6cfdda181677aa25414f2c14fed367
  6. 0xec28e720ecdc94cc0d0bc378db8efe5436e158450d49ad2a49ca624b71bdc71c
  7. 0x307fe327dc2d7613c6824a4c60956fcd28098a06fb399a60996d0c1e73ef852a
  8. 0x5f43d57237770f96f15e160f29752ef8cf4064f1696413d19f52d81f3cbebff0
  9. 0xe67eecaf696e494561ce621c14fc42e62336d45f7309ad0195e652382fb489a9
  10. 0x9f737f37530f83ae6928a14e73e114762b12b3c82ceb7028bdaf78f27b288ea9
  11. 0x9ca444fcd24e94bee95de2e8d69f385e59ecdaff6c1b017632bff037809c381b
  12. 0x95576cc3dd18642c859f679cefa1cf80bfc6c690b065916c3585b14e8ef4b1b3
  13. 0xf8d3e004d9a208d2c5e82ab676956d80f8a3c78387c61dad15a3a8269efee0d8
  14. 0x6713795704ddd9c528d421fadd9cc96b0200a4ddbba84f88e718d4968dde888b
  15. 0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON