MusicBrainz
The identity registry that turns a music scrobble into a payable artist — recording MBID → artist MBID → wallet.
What gets metered
not a payable event itself — MusicBrainz is the registry that makes music events payable. A scrobble's recording_mbid is resolved via the WS/2 API (GET /ws/2/recording/<mbid>?inc=artists&fmt=json) to the credited artist_mbid, which the wallet registry maps to a payout address.
- Who pays: n/a (registry — the paying event comes from Navidrome / Subsonic)
- Who gets paid: the resolved artist —
recording_mbid → artist_mbid → wallet
Attach surface — no fork
Read-only use of the public MusicBrainz WS/2 API (or a locally-run musicbrainz-server). Nothing is installed on MusicBrainz — the resolver composes into any music sidecar as its resolveCreator.
Quickstart
Enable MBID resolution in the Navidrome/Subsonic sidecar (CREATOR_WALLETS keyed on artist MBID):
PLATFORM=navidrome RATE=100 \
MUSICBRAINZ_USER_AGENT="universal-paywall/0.1 (ops@example.com)" \
CREATOR_WALLETS='{"<artist-mbid>":"0xArtistWallet"}' \
FACILITATOR_URL=https://facilitator.example FACILITATOR_API_KEY=… \
npx up-integration
# MUSICBRAINZ_BASE_URL overrides WS/2 (point at a local
# musicbrainz-server in CI to avoid the public ~1 req/s limiter)
All values above are placeholders — supply your own facilitator, wallets, and rate.
The shared prerequisites (a deployed StakeVaultFactory, a running
facilitator, a wallet registry) are covered in the admin overview.
Verify
npm test -w @universal-paywall/integrations 8 resolver unit tests, plus live validation against the public WS/2: a known recording resolved to its credited artist's wallet, a repeat lookup was served from cache (1 network call), and unknown MBIDs returned null.
Notes & caveats
Links
- Recipe:
packages/integrations/deploy/musicbrainz/README.md— the authoritative attach instructions in the repo. - Navidrome recipe (the sidecar this resolver plugs into)
- Integration Playbook — how integrations like this one are built.
- Testing plan — this platform's row in the L1→L4 matrix.