{
  "ok": true,
  "service": "hs-ledger",
  "ledger": "JIDEC",
  "anchor": "Bitcoin via OpenTimestamps",
  "claim_schema": "jidec-claim-v1",
  "path_schema": "jidec-path-v1",
  "spec": "SPEC_HASH_INDEPENDENCE_v1.md (entry #2); JIDEC_PATH_SPEC_v1.md (entry #5)",
  "routes": [
    "/ledger",
    "/ledger/{n}",
    "/ledger/{n}/ots",
    "/verify/{n}",
    "/reference/{sha}",
    "/paths",
    "/paths/{sha}",
    "/paths/{sha}/replay",
    "/paths/query"
  ],
  "discovery": {
    "api_catalog": "/.well-known/api-catalog",
    "agent_card": "/.well-known/agent-card.json",
    "security_txt": "/.well-known/security.txt",
    "llms_txt": "/llms.txt",
    "a2a": "/a2a",
    "cite": "/cite/{citation}",
    "mcp": "https://hs-jidec-mcp.oga-surf-project.workers.dev/mcp"
  },
  "transparency": {
    "model": "SCITT-shaped transparency service (RFC 9943 vocabulary, not RFC 9943 encoding)",
    "anchor_ledger": "bitcoin",
    "anchor_method": "opentimestamps",
    "mapping": {
      "signed statement": "jidec-claim-v1 canonical bytes (plain UTF-8 JSON, NOT COSE_Sign1)",
      "transparent statement": "an appended ledger entry addressed by claim_sha256",
      "receipt": "an OpenTimestamps proof (NOT an RFC 9942 COSE receipt, no RFC9162_SHA256 VDS)",
      "anchor proof": "Bitcoin block inclusion, per draft-fassbender-scitt-time-anchor-01"
    },
    "conformance": "NOT a conformant SCITT Transparency Service. Statements are canonical JSON rather than COSE_Sign1 and receipts are OpenTimestamps proofs rather than COSE receipts. The vocabulary is used because the shape is the same, not because conformance is claimed.",
    "caveats": [
      "draft-fassbender-scitt-time-anchor-01 is an individual Independent Submission, not IETF consensus.",
      "OpenTimestamps has no RFC, no ISO, no ETSI status and no standing under eIDAS. Auditors who require an institutionally recognised timestamp should ask for an RFC 3161 or eIDAS qualified timestamp in addition to this anchor."
    ]
  },
  "privacy": {
    "access_measurement": "enabled",
    "purpose": "to measure whether the discovery layer is reached at all, and by what kind of client",
    "recorded": [
      "normalised route label (no entry numbers, no hashes)",
      "client class derived from the User-Agent (not the string itself)",
      "HTTP method",
      "Referer hostname only",
      "HTTP status code"
    ],
    "not_recorded": [
      "IP address",
      "geolocation",
      "query strings",
      "full User-Agent string",
      "Referer path",
      "request bodies",
      "credentials",
      "ledger entry numbers",
      "SHA-256 values"
    ],
    "admin_routes": "POST /ledger/append, POST /reference/pin and GET /ledger/pending are not measured at all",
    "storage": "Cloudflare Analytics Engine only; this Worker keeps no copy in KV and exposes no read route for it"
  }
}