Submit a user's music listens to ListenBrainz as an open, non-proprietary alternative to Last.fm scrobbling
domain: listenbrainz.readthedocs.io · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Have the user retrieve their personal ListenBrainz user token from listenbrainz.org/settings and use it as a bearer credential in the `Authorization` header
Build a JSON payload with `listen_type` set to `single` (one listen), `import` (bulk historical backfill), or `playing_now` (ephemeral now-playing state)
For each listen, include a `track_metadata` object with at minimum `artist_name` and `track_name`, plus a top-level `listened_at` Unix timestamp marking when playback started (required for single/import, omitted for playing_now)
Only submit a listen once the user has played at least half the track or 4 minutes, whichever is shorter — matching the same 'what counts as a listen' convention used by scrobbling services
POST the payload to the submit-listens endpoint, batching multiple listens in one `import`-type request when backfilling history, while staying under the documented max payload size and max listens per request
Remember that `playing_now` listens are only held temporarily by the server and must be separately submitted as `single`/`import` to be permanently recorded
Known gotchas
`playing_now` submissions are ephemeral — if you only ever send playing_now and never follow up with a `single` submission once the track finishes, nothing is permanently recorded in the user's listen history
There are hard limits on both request payload size and the number of listens per request; large backfills need to be chunked rather than sent as one giant import call
Minimal payloads only require artist_name/track_name text fields, but attaching MusicBrainz identifiers (when known) significantly improves ListenBrainz's ability to match listens to canonical recordings — omitting them isn't wrong, just lower quality
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?