FreqBlog Music Metadata
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.
| Endpoint | https://mcp.freqblog.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.1.0 |
| Now | 12 tools · grade C (65) · pin ts_a0a3db2c283732ba2e4e34d67455520c · protocol 2025-06-18 |
| First / last listed | 2026-10-24 20:37 UTC / 2026-10-24 20:37 UTC |
| Grade over time | 2026-10-24: C (65), 12 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: get_audio_features get_audio_features_batch search_catalog find_tracks_by_bpm find_tracks_by_key find_compatible_keys score_transition suggest_next_track build_setlist get_recommendations get_related_artists tag_track
get_audio_features | Get audio features for ONE track — BPM, musical key (name + Camelot + Open Key),
energy, danceability, valence, acousticness, loudness, mood, mood_vector, genre, time signature, duration and more.
This is the drop-in replacement for Spotify's deprecated /audio-features endpoint.
Provide AT LEAST ONE identifier — if you know several, send them all rather than
choosing; they resolve params: track, artist, isrc, mbid, spotify_id |
get_audio_features_batch | Get audio features for MANY tracks in one call (up to 50 processed) — ideal for
analysing a whole playlist at once. Identify each item by name (`track`/`artist`), by
`isrc` (matched exactly first — best for CJK / K-pop / niche tracks whose fuzzy
name-match misses), or both (ISRC first, name as the fallback).
One bad entry never fails the batch. Items beyond the 50-per-call cap com params: tracks* |
search_catalog | Full-text search the catalog by any mix of track / artist / album tokens. Use this to
resolve a fuzzy, partial, or misspelled name into concrete tracks BEFORE calling
get_audio_features.
Each hit carries `chart_peak`: the best chart position we hold, 1-100 with 100 = a
number-one. `null` means no placement we hold — treat that as UNKNOWN, not unpopular,
and note it is NOT an a params: q*, limit |
find_tracks_by_bpm | Find catalog tracks near a target tempo. Returns tracks whose BPM is within
+/-`tolerance` of `bpm`, ordered by closeness then by an internal catalogue ordering key (not an audience metric) — useful for DJ set
planning, workout playlists, or tempo-matching. Each returned track carries full audio
features. To also constrain by musical key, combine with find_tracks_by_key.
params: bpm*, tolerance, limit |
find_tracks_by_key | Find catalog tracks in a given musical key — for harmonic mixing and key-locked
playlists. `key` accepts Camelot ("8A"), Open Key ("1m"), or a key name ("A-Minor",
"F#-Major"). Returns tracks ordered by an internal catalogue ordering key (not an audience metric), each with full audio features. To
discover which keys mix well with a given key first, use find_compatible_keys.
params: key*, limit |
find_compatible_keys | Given a Camelot key (e.g. "8A", "12B"), return the harmonically compatible keys for DJ
mixing — the same key, the relative major/minor, and the adjacent +/-1 keys on the
Camelot wheel. With `extended=true` also returns the +7/-7 energy-boost / energy-drop
keys. Pure music theory — no catalog lookup and no quota cost. Pair with find_tracks_by_key
to then pull actual tracks in each c params: camelot*, extended |
score_transition | Score how well one catalog track mixes into another (0-100) — the pairwise DJ transition
score no raw key/BPM API gives you. Combines Camelot-wheel key compatibility, octave-aware
BPM proximity (half/double-time counts as a match), and energy smoothness.
Returns the overall `score`, per-component scores (`harmonic`/`tempo`/`energy`), a `detail`
block (key_relation, both Camelot ke params: from_track_id*, to_track_id* |
suggest_next_track | Given a seed track, return the top-N catalog tracks to play NEXT, ranked by transition
score. Each suggestion carries the same `score`, per-component scores and human `reason` as
score_transition (e.g. "11B->11B same key, 118->117 BPM (-0.29), energy +0.12"), plus its
`genre` and `genre_relation` to the seed. GENRE-AWARE by default (cross_genre=auto): off-genre
picks that only coin params: seed_track_id*, n, min_score, exclude_same_artist, bpm_drift, max_key_distance, cross_genre |
build_setlist | Order a crate of 2-100 catalog tracks into a beat-matched DJ set that follows an energy
arc, keeping each consecutive transition harmonically and tempo-smooth. `arc` is one of
peak_time (default — builds to a peak then eases), warmup, cooldown, or flat.
Returns the `arc`, `count`, an overall `flow_score` (0-100), the `tracks` in play order, the
per-step `transitions` ({from_index, params: track_ids*, arc, start_track_id |
get_recommendations | Recommended tracks for one or more seed tracks — the drop-in for Spotify's removed
GET /v1/recommendations. Blends up to 5 catalog seed tracks into a single point in
audio-feature space and returns the nearest catalogue tracks, RE-RANKED by genre affinity
(so a feature-close cross-genre track doesn't outrank same-genre picks).
Returns `seeds` (each {id, found}), `count`, and `trac params: seed_tracks, track, artist, limit, exclude_seed_artists, cross_genre, min, max, target |
get_related_artists | Artists related to a seed artist — the drop-in for Spotify's removed
GET /v1/artists/{id}/related-artists. No artist graph exists, so we derive one: build the
seed artist's track-vector centroid, take its nearest catalogue tracks, aggregate by artist
(each scored on its top-3 track similarities so a prolific artist can't dominate) plus a
same-genre lift and a cross-genre penalty.
params: artist*, limit |
tag_track | Get a compact, HONESTLY-LABELLED tag list for a track — energy / danceability / valence /
acousticness / instrumentalness (instrumental vs vocal, judged on the 30-second
preview), plus a mood tag and a broad genre tag. It is a tag-shaped
projection of the same open-data analysis get_audio_features returns (no audio upload, no extra
compute), so it costs the same 1 quota unit, charg params: track, artist, isrc, mbid, spotify_id, track_id |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.