FreqBlog Music Metadata
(unclaimed - source: registry-official · publisher: com.freqblog) · languages: en · regions: global · more from com.freqblog →
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_1e8f25dbb4/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_1e8f25dbb4/ask -d '{"tool":"get_audio_features","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_1e8f25dbb4 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://mcp.freqblog.com/mcp- Pricing
- not listed
Live capabilities — 15 tool(s) it actually exposes · freqblog-music v1.27.2 (measured from a real MCP handshake, not self-reported)
get_audio_features — Get audio features for ONE track — BPM, musical key (name + Camelot + Open Key),
energy, danceability, valence, acousticness, loudness, mood, mood_vector, gget_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`/`artsearch_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 BEFOfind_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 ordefind_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-discover_tracks — Find catalog tracks by criteria, with no seed track: tempo, key, genre, release year,
chart placement and audio-feature ranges in one call — e.g. house at 1find_similar_tracks — Tracks that SOUND like one seed track or a set of up to 10, optionally restricted by
tempo, key, genre, year, chart or audio-feature ranges — e.g. "like thesearch_by_description — Find catalog tracks from a plain-language description of how they sound — e.g.
"melancholic piano, slow", "dark ambient strings", "upbeat acoustic guitar, ffind_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 +/-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 compsuggest_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 scoresbuild_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-smooget_recommendations — Recommended tracks for one or more seed tracks, in the shape of Spotify's retired
GET /v1/recommendations. Takes up to 5 catalog seed tracks and returns catget_related_artists — Artists related to a seed artist, in the shape of Spotify's retired
GET /v1/artists/{id}/related-artists. No artist graph exists, so we derive one: build thtag_track — Get a compact, clearly labelled tag list for a track — energy / danceability / valence /
acousticness / instrumentalness (instrumental vs vocal, judged on tCall the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_1e8f25dbb4 # full record + verification history · 402 → 0.005 USDCRun it here — free preview loads instantly; the full record is 0.005 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-11-09
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-11-09
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_1e8f25dbb4)<a href="https://jishie.com/agent.html?id=aix_1e8f25dbb4"><img src="https://jishie.com/v1/agents/aix_1e8f25dbb4/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — streaming-tools
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 74 | — |
| Clueso T2 | relevance 65 | — |
| purrplan T2 | relevance 59 | — |
| YouTube MCP T2 | relevance 57 | — |
| fetcher T2 | relevance 55 | — |
Raw machine record (what agents receive)
{
"id": "aix_1e8f25dbb4",
"name": "FreqBlog Music Metadata",
"operator": "(unclaimed - source: registry-official · publisher: com.freqblog)",
"description": "Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-11-09",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"streaming-tools"
],
"protocols": {
"mcp": "https://mcp.freqblog.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 1857,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 49,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-11-09T12:00:33.942Z"
},
"pricing_model": "unknown",
"profile": {
"mcp_server": "freqblog-music",
"mcp_version": "1.27.2",
"tool_count": 15,
"tools": [
{
"name": "get_audio_features",
"description": "Get audio features for ONE track — BPM, musical key (name + Camelot + Open Key),\n energy, danceability, valence, acousticness, loudness, mood, mood_vector, genre, time signature, duration and more.\n `preview_loudness.integrated_lufs` is the BS.1770 integrated loudness (LUFS) of the 30-second\n preview — often the chorus, so typically a little louder than the full track.\n\n Fields follow the layout of Spotify's retired /audio-features endpoint.\n Provide AT LEAST ONE identifier — if you know several, send them all rather than\n choosing; they resolve by precedence (`track` > `isrc"
},
{
"name": "get_audio_features_batch",
"description": "Get audio features for MANY tracks in one call (up to 50 processed) — ideal for\n analysing a whole playlist at once. Identify each item by name (`track`/`artist`), by\n `isrc` (matched exactly first — best for CJK / K-pop / niche tracks whose fuzzy\n name-match misses), or both (ISRC first, name as the fallback).\n\n One bad entry never fails the batch. Items beyond the 50-per-call cap come back with\n `found: false` and `backfill_status: \"over_limit\"`; an item missing BOTH `track` and\n `isrc` comes back `\"invalid_no_query\"`. Neither is processed or charged — the response's\n `s"
},
{
"name": "search_catalog",
"description": "Full-text search the catalog by any mix of track / artist / album tokens. Use this to\n resolve a fuzzy, partial, or misspelled name into concrete tracks BEFORE calling\n get_audio_features.\n\n Each hit carries `chart_peak`: the best chart position we hold, 1-100 with 100 = a\n number-one. `null` means no placement we hold — treat that as UNKNOWN, not unpopular,\n and note it is NOT an audience-size figure. Placements come from the Apple Music and\n Deezer charts we track (since Aug 2026) and Billboard year-end charts (1960-2025).\n\n Returns lightweight stubs (itunes_track_id, tr"
},
{
"name": "find_tracks_by_bpm",
"description": "Find catalog tracks near a target tempo. Returns tracks whose BPM is within\n +/-`tolerance` of `bpm`, ordered by closeness then by an internal catalogue ordering key (not an audience metric) — useful for DJ set\n planning, workout playlists, or tempo-matching. Each returned track carries full audio\n features. To also constrain by musical key, combine with find_tracks_by_key.\n "
},
{
"name": "find_tracks_by_key",
"description": "Find catalog tracks in a given musical key — for harmonic mixing and key-locked\n playlists. `key` accepts Camelot (\"8A\"), Open Key (\"1m\"), or a key name (\"A-Minor\",\n \"F#-Major\"). Returns tracks ordered by an internal catalogue ordering key (not an audience metric), each with full audio features. To\n discover which keys mix well with a given key first, use find_compatible_keys.\n "
},
{
"name": "discover_tracks",
"description": "Find catalog tracks by criteria, with no seed track: tempo, key, genre, release year,\n chart placement and audio-feature ranges in one call — e.g. house at 122-126 BPM in 8A or\n its neighbours with energy above 0.7: min={\"tempo\": 122, \"energy\": 0.7},\n max={\"tempo\": 126}, key=\"8A\", harmonic=true, genre=\"house\".\n\n At least one narrowing filter is required (a tempo/feature bound, key, mode, genre, year\n or chart). Returns `results` (one per recording, each with its bpm, camelot, energy,\n danceability, valence, acousticness and loudness_db plus catalog metadata),\n `total_match"
},
{
"name": "find_similar_tracks",
"description": "Tracks that SOUND like one seed track or a set of up to 10, optionally restricted by\n tempo, key, genre, year, chart or audio-feature ranges — e.g. \"like these three, but\n 120-128 BPM in 8A or its neighbours\": seed_tracks=[...], min={\"tempo\": 120},\n max={\"tempo\": 128}, key=\"8A\", harmonic=true.\n\n Ranked mainly on a PANNs audio embedding (how the recording sounds) blended with an\n audio-feature similarity. Results are one per recording, with `score`, `genre_relation`\n to the seed and, with several seeds, `matched_seed`. With filters, results are the\n closest-sounding tracks "
},
{
"name": "search_by_description",
"description": "Find catalog tracks from a plain-language description of how they sound — e.g.\n \"melancholic piano, slow\", \"dark ambient strings\", \"upbeat acoustic guitar, fast\".\n\n Understands instruments and voice (piano, guitar, acoustic guitar, violin, cello, strings,\n harp, flute, sax, brass, organ, choir, a cappella, rap, 808/drum machine, orchestral),\n mood (sad/melancholic, dark/eerie, angry, ambient, happy/upbeat, chill/relaxed),\n character (acoustic, instrumental, with vocals, energetic, soft, danceable), tempo\n (slow <= 95 BPM, mid-tempo, fast >= 125 BPM, applied as filters) and an"
},
{
"name": "find_compatible_keys",
"description": "Given a Camelot key (e.g. \"8A\", \"12B\"), return the harmonically compatible keys for DJ\n mixing — the same key, the relative major/minor, and the adjacent +/-1 keys on the\n Camelot wheel. With `extended=true` also returns the +7/-7 energy-boost / energy-drop\n keys. Pure music theory — no catalog lookup and no quota cost. Pair with find_tracks_by_key\n to then pull actual tracks in each compatible key.\n "
},
{
"name": "score_transition",
"description": "Score how well one catalog track mixes into another (0-100) — the pairwise DJ transition\n score no raw key/BPM API gives you. Combines Camelot-wheel key compatibility, octave-aware\n BPM proximity (half/double-time counts as a match), and energy smoothness.\n\n Returns the overall `score`, per-component scores (`harmonic`/`tempo`/`energy`), a `detail`\n block (key_relation, both Camelot keys, both BPMs, bpm_delta, bpm_octave_matched, both\n energies, energy_delta), and a one-line human `reason` (e.g. \"8A->9A adjacent (+1), 126->128\n BPM (+2), energy +0.04 — clean uplifting mix\"). "
},
{
"name": "suggest_next_track",
"description": "Given a seed track, return the top-N catalog tracks to play NEXT, ranked by transition\n score. Each suggestion carries the same `score`, per-component scores and human `reason` as\n score_transition (e.g. \"11B->11B same key, 118->117 BPM (-0.29), energy +0.12\"), plus its\n `genre` and `genre_relation` to the seed. GENRE-AWARE by default (cross_genre=auto): off-genre\n picks that only coincidentally share the seed's key/BPM sink to the bottom — use\n cross_genre=strict for same-genre-family only, or allow for the old harmonic-only ranking. It\n is the seed's sonic neighbours re-ran"
},
{
"name": "build_setlist",
"description": "Order a crate of 2-100 catalog tracks into a beat-matched DJ set that follows an energy\n arc, keeping each consecutive transition harmonically and tempo-smooth. `arc` is one of\n peak_time (default — builds to a peak then eases), warmup, cooldown, or flat.\n\n Returns the `arc`, `count`, an overall `flow_score` (0-100), the `tracks` in play order, the\n per-step `transitions` ({from_index, to_index, score, reason}), and `omitted` (ids not found\n in the catalog, or with no audio features on file yet). Feed tracks[].itunes_track_id into a Rekordbox/Serato export to drop the set\n st"
},
{
"name": "get_recommendations",
"description": "Recommended tracks for one or more seed tracks, in the shape of Spotify's retired\n GET /v1/recommendations. Takes up to 5 catalog seed tracks and returns catalogue tracks that\n sound like the set as a whole — ranked on the same similarity as find_similar_tracks (mainly a\n PANNs audio embedding, blended with audio features), RE-RANKED by genre affinity (so a\n close-sounding cross-genre track doesn't outrank same-genre picks).\n\n Returns `seeds` (each {id, found}), `count`, and `tracks` (each {track, score,\n genre_relation}; each track carries its `genre`). `genre_relation` is \""
},
{
"name": "get_related_artists",
"description": "Artists related to a seed artist, in the shape of Spotify's retired\n GET /v1/artists/{id}/related-artists. No artist graph exists, so we derive one: build the\n seed artist's track-vector centroid, take its nearest catalogue tracks, aggregate by artist\n (each scored on its top-3 track similarities so a prolific artist can't dominate) plus a\n same-genre lift and a cross-genre penalty.\n\n Returns `artist`, `count`, and `related` (each {artist_name, score, match_count,\n sample_track_id}). Pass a sample_track_id straight to get_audio_features or\n suggest_next_track. Costs 2 quot"
},
{
"name": "tag_track",
"description": "Get a compact, clearly labelled tag list for a track — energy / danceability / valence /\n acousticness / instrumentalness (instrumental vs vocal, judged on the 30-second\n preview), plus a mood tag and a broad genre tag. It is a tag-shaped\n projection of the same open-data analysis get_audio_features returns (no audio upload, no extra\n compute), so it costs the same 1 quota unit, charged only on a served result.\n\n EVERY tag carries its own `confidence` and `provenance`:\n - confidence: measured (a numeric audio feature, source in provenance) | derived (MIREX mood from valence"
}
],
"profiled_at": "2026-11-09T12:00:33.942Z"
},
"unreachable": false
}