addrbookFor publishers
← The evidence ledger

Evidence row 22796

Observed , by baseline/1.

Kind
listing
About
source_record mcp_registry:dev.filelayer/core
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
de811f92245b91a22b40103df7ee7229b1e4e0c015204c677ff891ccf0575ce5
Leaf
0x7ca961250f5387cfb6ce87e1b22ef466c3526c7ebf5d51cb72a25ce6e986e910

What was observed

{
  "endpoints": [
    [
      "web",
      "https://filelayer.dev/"
    ]
  ],
  "name": "Filelayer",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-10-16T04:59:02.316033Z",
        "status": "active",
        "statusChangedAt": "2026-10-16T04:59:02.316033Z",
        "updatedAt": "2026-10-16T04:59:02.316033Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "User files for a SaaS, under one person's authority: list, share with an expiry, revoke.",
      "name": "dev.filelayer/core",
      "packages": [
        {
          "environmentVariables": [
            {
              "description": "Your own PostgreSQL, where this library keeps file ownership, grants and the audit chain. Apply node_modules/@filelayer/core/schema.sql once before starting.",
              "isRequired": true,
              "isSecret": true,
              "name": "DATABASE_URL"
            },
            {
              "description": "The ONE subject this server speaks for, in your own id space. Fixed for the life of the process: no tool reads it as an argument and no tool can change it, which is the only reason exposing these tools to an agent is safe. Write it yourself or have your provisioning write it, never derive it from a conversation. Serving several people means starting several servers.",
              "isRequired": true,
              "name": "FILELAYER_AS"
            },
            {
              "description": "The organisation this server is scoped to, in your own id space.",
              "isRequired": true,
              "name": "FILELAYER_ORG"
            },
            {
              "description": "A local directory for the bytes. Needs no bucket and no IAM user. Set this OR the S3_* block: with neither, the server refuses to start rather than falling back to memory, which would work in a demo and lose the first real file.",
              "name": "FILELAYER_DATA_DIR"
            },
            {
              "description": "An S3-compatible endpoint, for example https://<account>.r2.cloudflarestorage.com. Setting it makes S3_BUCKET, S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY required.",
              "name": "S3_ENDPOINT"
            },
            {
              "description": "The bucket. It must be private: this library decides who may be GIVEN a URL and has no say in who the object store will answer. `npx -p @filelayer/core filelayer doctor` reports whether yours serves unauthenticated reads.",
              "name": "S3_BUCKET"
            },
            {
              "default": "auto",
              "description": "Region, or `auto` for Cloudflare R2.",
              "name": "S3_REGION"
            },
            {
              "description": "Access key id for the bucket.",
              "isSecret": true,
              "name": "S3_ACCESS_KEY_ID"
            },
            {
              "description": "Secret access key for the bucket.",
              "isSecret": true,
              "name": "S3_SECRET_ACCESS_KEY"
            },
            {
              "default": "filelayer-mcp",
              "description": "How this agent names itself in the audit trail, recorded on every event these tools produce. It is what lets the chain separate \"the partner opened this document\" from \"the partner's assistant opened this document\".",
              "name": "FILELAYER_MCP_AGENT_LABEL"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Set to exactly `true` to register delete_file. Off by default because deleting is not recoverable and an agent that misreads a sentence deletes the wrong thing silently.",
              "name": "FILELAYER_MCP_ALLOW_DESTRUCTIVE"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Set to exactly `true` to register file_audit. Off by default because the trail is an organisation's whole history and a tool that returns it copies every file name, actor and denial into the model's context. Reading it is itself audited since 0.27.0, which was the previous reason; the default did not move.",
              "name": "FILELAYER_MCP_EXPOSE_AUDIT"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Set to exactly `true` to register read_file. Off by default because a document returned by a tool is a document copied into a model's context; file_info plus a share link is usually what was actually needed.",
              "name": "FILELAYER_MCP_RETURN_BYTES"
            },
            {
              "description": "The base of the share URLs this instance mints. Without it, share links come back without a URL.",
              "name": "FILELAYER_BASE_URL"
            }
          ],
          "identifier": "@filelayer/core",
          "packageArguments": [
            {
              "type": "positional",
              "value": "-p"
            },
            {
              "type": "positional",
              "value": "@filelayer/core"
            },
            {
              "type": "positional",
              "value": "filelayer-mcp"
            }
          ],
          "registryBaseUrl": "https://registry.npmjs.org",
          "registryType": "npm",
          "runtimeHint": "npx",
          "transport": {
            "type": "stdio"
          },
          "version": "0.33.0"
        }
      ],
      "repository": {
        "source": "github",
        "subfolder": "packages/core",
        "url": "https://github.com/filelayer/filelayer"
      },
      "title": "Filelayer",
      "version": "0.33.0",
      "websiteUrl": "https://filelayer.dev"
    }
  },
  "source": "mcp_registry",
  "summary": "User files for a SaaS, under one person's authority: list, share with an expiry, revoke."
}

What the leaf hashes

{"body":"de811f92245b91a22b40103df7ee7229b1e4e0c015204c677ff891ccf0575ce5","id":22796,"kind":"listing","method":"baseline/1","observed_us":1793025349720843,"prev":null,"subject":"mcp_registry:dev.filelayer/core","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. 0x7ca9194dac3eb4a4ec8ec114c01254a764d83d4b34d069ecda750aeaaf21673b
  2. 0x3b4f8c4613eb38f4e80a1cd581695a03f1b8015f2224ae3a0685792afbeed068
  3. 0xb42d36355a43b43121f9b3feadde5f051e0fa098e9cb23ea0efd9ca333d570d7
  4. 0x8506b716722fde71e8ccebb28010586c4fd1671f99e7b00b6faff9f0f0a62933
  5. 0x198877387ad036ef719fcea5f9ee0dacbe0fafc5c71f80b775096774d071c00d
  6. 0x75775561484d6c8e7b19b8e9c39026d085b8ad15e3b48d76078a211c06cb9a67
  7. 0x7391131061ac2db4ef18d89a3c94b4c413c9a1c90bac7105e6709795f587f279
  8. 0xedd07e1c226b80f7cf2534904801aa3bcf40843918261ce1a4ae06b747c61d78
  9. 0x4a59d37e87bfd6c1a73e2e46dcb996811787999807c2354410bd4889fc4c24ba
  10. 0xf0ed0e925a8a7da0329fe426ca59f504fc92f30b2f6f61a5828a859ff9cdb816
  11. 0x05b818019343d04f2973b36329a447f88301721891653961b94822610edda553
  12. 0x779c77295186b32da6387dfb36d3a76522e7d713472a7cebed7c93529ccc4be6
  13. 0x0bffb634300aa5609bddaa79e8d31d7cde36c0a5a4465472f809b9f5287e40d2
  14. 0x7721d38652b6444b18e1193824e50490ade04851ce6221771f6e374c4527d80f
  15. 0x15039087bf60ae9b06b756ec3cbc299760e59923a438bbd91e34d105186db0ed
  16. 0x2b6e23e3624a1b66e1d2298cfbce99a93ce6b13d24a58112a71802d79c5f7a76
  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