addrbookFor publishers
← The evidence ledger

Evidence row 53027

Observed , by baseline/1.

Kind
listing
About
source_record mcp_registry:io.github.tailscale-mcp/tailscale-mcp
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
c62929db70f1739522f6d2232f302a249df541e0e9122713126b108551f00f93
Leaf
0x32a8cdd9dc06d8bf91a97cbd6409d9b925123efce5753918119b26c90e3b5816

What was observed

{
  "endpoints": [
    [
      "web",
      "https://github.com/tailscale-mcp/tailscale-mcp"
    ]
  ],
  "name": "Tailscale",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-10-26T09:15:56.405652Z",
        "status": "active",
        "statusChangedAt": "2026-10-26T09:15:56.405652Z",
        "updatedAt": "2026-10-26T09:15:56.405652Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "Drive a Tailscale node and its tailnet through the CLI and the control-plane API",
      "name": "io.github.tailscale-mcp/tailscale-mcp",
      "packages": [
        {
          "environmentVariables": [
            {
              "description": "A control-plane API access token. One of this, the OAuth client pair, or the OAuth JWT file is needed for the tailnet tools; without any of them only the local tools are offered.",
              "isSecret": true,
              "name": "TAILSCALE_API_KEY"
            },
            {
              "description": "An OAuth client id, used with TAILSCALE_OAUTH_CLIENT_SECRET when there is no API access token.",
              "name": "TAILSCALE_OAUTH_CLIENT_ID"
            },
            {
              "description": "The OAuth client secret that goes with TAILSCALE_OAUTH_CLIENT_ID.",
              "isSecret": true,
              "name": "TAILSCALE_OAUTH_CLIENT_SECRET"
            },
            {
              "description": "The tailnet the control-plane tools act on. Without it they act on the one the credential belongs to.",
              "name": "TAILSCALE_TAILNET"
            },
            {
              "choices": [
                "minimal",
                "core",
                "full"
              ],
              "default": "core",
              "description": "Which tools are offered: minimal, core or full.",
              "name": "TAILSCALE_MCP_PRESET"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Offer the tools that change something. Read-only without it.",
              "name": "TAILSCALE_MCP_ALLOW_WRITE"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Offer the tools that remove or sever something. Implies the write tier.",
              "name": "TAILSCALE_MCP_ALLOW_DESTRUCTIVE"
            }
          ],
          "identifier": "@tailscale-mcp/tailscale-mcp",
          "registryType": "npm",
          "transport": {
            "type": "stdio"
          },
          "version": "2.0.5"
        },
        {
          "environmentVariables": [
            {
              "description": "A control-plane API access token. One of this, the OAuth client pair, or the OAuth JWT file is needed for the tailnet tools; without any of them only the local tools are offered.",
              "isSecret": true,
              "name": "TAILSCALE_API_KEY"
            },
            {
              "description": "An OAuth client id, used with TAILSCALE_OAUTH_CLIENT_SECRET when there is no API access token.",
              "name": "TAILSCALE_OAUTH_CLIENT_ID"
            },
            {
              "description": "The OAuth client secret that goes with TAILSCALE_OAUTH_CLIENT_ID.",
              "isSecret": true,
              "name": "TAILSCALE_OAUTH_CLIENT_SECRET"
            },
            {
              "description": "The tailnet the control-plane tools act on. Without it they act on the one the credential belongs to.",
              "name": "TAILSCALE_TAILNET"
            },
            {
              "choices": [
                "minimal",
                "core",
                "full"
              ],
              "default": "core",
              "description": "Which tools are offered: minimal, core or full.",
              "name": "TAILSCALE_MCP_PRESET"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Offer the tools that change something. Read-only without it.",
              "name": "TAILSCALE_MCP_ALLOW_WRITE"
            },
            {
              "choices": [
                "true",
                "false"
              ],
              "default": "false",
              "description": "Offer the tools that remove or sever something. Implies the write tier.",
              "name": "TAILSCALE_MCP_ALLOW_DESTRUCTIVE"
            }
          ],
          "identifier": "ghcr.io/tailscale-mcp/tailscale-mcp:2.0.5",
          "registryType": "oci",
          "transport": {
            "type": "stdio"
          }
        }
      ],
      "repository": {
        "source": "github",
        "url": "https://github.com/tailscale-mcp/tailscale-mcp"
      },
      "title": "Tailscale",
      "version": "2.0.5",
      "websiteUrl": "https://github.com/tailscale-mcp/tailscale-mcp"
    }
  },
  "source": "mcp_registry",
  "summary": "Drive a Tailscale node and its tailnet through the CLI and the control-plane API"
}

What the leaf hashes

{"body":"c62929db70f1739522f6d2232f302a249df541e0e9122713126b108551f00f93","id":53027,"kind":"listing","method":"baseline/1","observed_us":1793025422036355,"prev":null,"subject":"mcp_registry:io.github.tailscale-mcp/tailscale-mcp","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. 0x32a93aeadd6b07433ffff379c9b3db08d17c22a249f4444c76327b300eb1f0d3
  2. 0x167cdf8c30a533ddacd596737e416788bd81845d32fffa53a5c6721e752aaeee
  3. 0x723ae1da8ef983ce5626fa5e827c2a3e235f81c0b52aa7d93d72a24ed757d67b
  4. 0xe88516526066aacf2d5692653c09e4cfd8c1a3b8e6ca22451b09eda45ef00cb6
  5. 0x65fd58b132ce6db88f1d9c0bcf6e543e47b17ccd38012d9c5f6a84a8a56378de
  6. 0x1661004fae6df761458cc037cdbebeff1c50ccc144eae2a20e3d2c17a718661c
  7. 0xc433e82379d339ad4172ca1fcb66d1479d2239785e80c55e7fa6d80992746131
  8. 0x705a0353aa1c202ca092d0c69a1b98aac1e72ed092c7163fcdce9560cd8af9a9
  9. 0x0fb78d244a20004e04fbe01ec70f9831d44d86237b0382453ead0323c4df9ae8
  10. 0xa0ebaa287767d7a753bad9278ae53729c65e45e91f8c870e598e2a5eef743e57
  11. 0xc99ea26556ddad6b2fde7887de8c0190d3a7c645402227c5a281ba47e02a67e5
  12. 0x2f4617d7a962f32849050ad5649d9dc4f962fd8618073cfa8519e6f862dfcef8
  13. 0x08de74b7fb265ddb83e4c673da8a94e5f71829b2e6e7464c71c5138e450f2217
  14. 0x4338355a835617a26aa0bfcc971e84eb030d84e2aa840e3c8af958921dd080c7
  15. 0x610738e0c43687aded83c613c73de8b5226c73c375858a167436461c522ea213
  16. 0x06d71bfa7d8b41d62c8836efc2c601e1cc3772d9453596b2ae4950887f3310ca
  17. 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON