greffe 0.3.1 — a transparent, append-only registry for a federation of associations. One TCP port serves both peers (JSON lines) and this HTTP API. No money, no mining: validators (the association's servers) seal blocks in round-robin; members sign entries. GET /status node, chain tip, validators, members, peers GET /peers known peers with height/weight/last seen GET /blocks?from=N&limit=M blocks (default from tip-10) GET /blocks/N one block GET /entries?kind=K&author=PUB&from=H&limit=M entries in chain order (kind=gov -> governance only) GET /ui read-only public explorer (when enabled with ui:true) GET /entries/ one entry (height -1 = still pending) GET /pending entries waiting to be sealed POST /entries {id,author,ts,kind,payload,sig} submit a signed entry (201 -> pending) POST /put {kind,payload} + Authorization: Bearer sign with this node's key (server-side apps; off unless put_token is set) GET /verify re-verify every block and signature from genesis GET /health ok Rate limit: 300 requests per client IP per 10 s (HTTP 429 / peer message 'rate limited'). entry.id = sha256(author|ts|kind|payload); sig = ed25519(seed, id). Governance kinds (validator author only): validator.add / validator.remove / member.add / member.remove with payload = public key hex. CLI: greffe status | put --kind K --payload P | entries | verify | grant validator|member | guide