addrbookFor publishers
← The evidence ledger

Evidence row 506100

Observed , by sync.mcp_registry/1.

Kind
listing
About
source_record mcp_registry:io.github.mguttmann/the-real-hetzner-mcp
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
f181be5a3e4f72f5df62c4d50651b785d1de877c4d33eba950ca9b290c6d990e
Leaf
0x5e8933c6ebc392e28e6c7148fbfcafeb1d73b43eb9028dc9a602d690654cfbc6

What was observed

{
  "endpoints": [
    [
      "web",
      "https://github.com/mguttmann/the-real-hetzner-mcp"
    ]
  ],
  "name": "Hetzner Cloud (unofficial)",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-10-27T15:02:25.587197Z",
        "status": "active",
        "statusChangedAt": "2026-10-27T15:02:25.587197Z",
        "updatedAt": "2026-10-27T15:02:25.587197Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "Unofficial MCP server for the Hetzner Cloud API: one typed tool per operation, read and write.",
      "name": "io.github.mguttmann/the-real-hetzner-mcp",
      "packages": [
        {
          "environmentVariables": [
            {
              "description": "Hetzner Cloud API token from the Cloud Console (project > Security > API tokens). The server can do exactly what this token allows; use a Read token if the client only needs to read.",
              "format": "string",
              "isRequired": true,
              "isSecret": true,
              "name": "HETZNER_API_TOKEN"
            },
            {
              "default": "false",
              "description": "true: every tool that is not read-only, and hcloud_raw_request with a method other than GET, returns an error without sending a request. Any value other than true, 1, yes, false, 0, no or empty stops the server at startup.",
              "format": "boolean",
              "name": "HETZNER_READ_ONLY"
            },
            {
              "default": "false",
              "description": "true: every tool that is not read-only returns a preview unless the call carries confirm \"YES\". Friction against mistakes, not a security boundary.",
              "format": "boolean",
              "name": "HETZNER_CONFIRM_WRITES"
            },
            {
              "description": "Comma-separated tool name globs (for example hcloud_delete_*,hcloud_raw_request) that always return an error. Deny hcloud_raw_request as well, otherwise denied endpoints stay reachable through it. A pattern that matches no tool stops the server at startup.",
              "format": "string",
              "name": "HETZNER_DENY_TOOLS"
            },
            {
              "choices": [
                "debug",
                "info",
                "warn",
                "error"
              ],
              "default": "warn",
              "description": "Log level of the JSON logs on stderr.",
              "format": "string",
              "name": "LOG_LEVEL"
            }
          ],
          "identifier": "@mguttmann/hetzner-cloud-mcp",
          "registryType": "npm",
          "runtimeHint": "npx",
          "transport": {
            "type": "stdio"
          },
          "version": "0.2.0"
        }
      ],
      "repository": {
        "source": "github",
        "url": "https://github.com/mguttmann/the-real-hetzner-mcp"
      },
      "title": "Hetzner Cloud (unofficial)",
      "version": "0.2.0",
      "websiteUrl": "https://github.com/mguttmann/the-real-hetzner-mcp#readme"
    }
  },
  "source": "mcp_registry",
  "summary": "Unofficial MCP server for the Hetzner Cloud API: one typed tool per operation, read and write."
}

What the leaf hashes

{"body":"f181be5a3e4f72f5df62c4d50651b785d1de877c4d33eba950ca9b290c6d990e","id":506100,"kind":"listing","method":"sync.mcp_registry/1","observed_us":1793114943073795,"prev":null,"subject":"mcp_registry:io.github.mguttmann/the-real-hetzner-mcp","subject_kind":"source_record"}

Proof

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

  1. 0x5e896b46c0136910392e07c537438d2b61518a8edab6e8be992353fc1ef01504
  2. 0xc58d932d32848e39a9f8e7ede820ffa52cc6118ae3dfa39c1feaa7cdbc1c2f35
  3. 0x86de76cff830a1a557122f63aae9540f445bef28d241a5f764355e0133eef9c1
  4. 0x4b26b15ba760ff979dfbb9930379abcbe76b9dd4cd5c713b8697b2fcc5af72d4
  5. 0xf5525f8c53bac1b37d68d8cb69734147e58a5dfbc9566b48bf1d255a2843ae90
  6. 0x9c403f4bfc7fee1fdcfa1b8b4920d64b2ac812de56b877a937090a33d32c8975
  7. 0xda606ef67038d660adea0186588040f1d47c0dbc596625a44c40314333cf8721
  8. 0x694d8a43f9a01d3f5f82147d8e20d6d67a2c590c7dc0e1c6d21c18d20c916f71
  9. 0xdc03d2890e54cdb4d713ad3643413f34a073ebee3091d9b179b5242c1dde9bd6
  10. 0x4e79d33c25ca758a2e65bce3276e1b993b98712703de050f26dfdeb009d2099b
  11. 0x915047fd83f4ac923bed7c49fdd93482d256c066901f5966acf8a481ff6bd0b8
  12. 0x4c8fa606175c9cb1c3e3bd96088308174f83b262a092ba5ff94c58839714ede9
  13. 0xeaf6b21867367f85a965f982b6593c42eafe4fdf74e94b675523a6478de49a54
  14. 0x4277e02be0b5d91d78bc2247e37d402572474ba896c2e8f45765c8dc4e244d36
  15. 0x6f00f0da417f4126951ba8ba9b7962c847e91f5c61364ad9ad47e5f979698a60
  16. 0x23cf9bb4337ee8be7fcae368fd69d24c62c11fb45882127b4cd919bb96a19996
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON