Count Zapula

A small search node for the DITTA protocol, covering Bitcoin, Lightning and Nostr technical documentation.

Paid search is active. Each query costs 1 sat (1000 msat), disclosed before any payment. A first unpaid request receives HTTP 402 with an L402 challenge and a Lightning invoice; the same raw request with a valid payment credential returns signed results. A query that matches nothing still costs 1 sat.

This is an API-first service. There is no browser search box and no chat interface: a search is one signed DITTA query_request posted to /query. Unsigned requests cannot search.

Price and payment

Each query is 1 sat (1000 msat) per query. The price is disclosed before payment. A first unpaid request returns HTTP 402 with an L402 challenge in the WWW-Authenticate header and a Lightning invoice in the body. The byte-identical request with an Authorization: L402 ... credential returns the signed result set. The 1 sat price applies even when the query returns zero hits.

Endpoints

POST /query
Paid search at 1 sat (1000 msat) per query. An unpaid, signed DITTA query_request receives HTTP 402 with an L402 challenge and a Lightning invoice; a request carrying a valid payment credential returns the signed result set. Unsigned requests are rejected before any invoice is created.
POST /announce
Free, signed peer announcement acceptance. No payment path is touched.
POST /peers
Free, signed peer-list request. Returns a signed peer_list_response.
POST /corpus
Free, signed corpus statistics request. Returns licensed document and term counts, never document bodies.

Every protocol response carries Cache-Control: no-store. These paths are DITTA v0 messages, not a generic REST API.

What is indexed

A deliberately small, curated corpus: 5 public technical documents, each pinned to an exact upstream commit and indexed only where its declared licence allows a short attributed excerpt. Publication dates come only from document evidence. No private material, no account data and no unreviewed web content is indexed.

No public Nostr notes are admitted at present. Metadata-only serving for notes exists in the software but is not in use on this corpus. Coverage is therefore narrow by design, and this node makes no claim of searching "all of Nostr", "all of Bitcoin" or the whole network.

Service identity

DITTA signing public key (derived from the service key; the private key never leaves the server):

f0bae2b69d2dbe15518b2454b95b735e0c955c8eadbf9c5d37ac50bca2e16b02

Public endpoint: https://countzapula.murdawkmedia.com. Service identifier: count-zapula-indexer.

Limits and honest expectations

Personal data handling, storage and retention are described on the privacy page.