fm.hosaka/ono-sendai · v0.6.0 · ai-and-media
hosaka music data is healthy: it completed an MCP handshake in 696 ms and exposes 17 tools.
Verified music facts for agents: artists, releases, tracks, gigs, similar artists, discovery lists.
Endpoint: https://mcp.hosaka.fm/mcp (streamable-http)
No repository listed · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 17 |
| Latency | 696 ms |
| Last checked (UTC) | 2026-10-30T07:05:23.314Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-30T07:05:23.314Z | Healthy | 696 |
resolve_artist | Map a name, URL or id to hosaka's verified artist identity (`cluster_id`) with an ambiguity verdict. Use: the user names an artist; you hold a Discogs / MusicBrainz / Bandcamp URL or id. Inputs: one of `q`, `url`, `cluster_id`, `discogs_id`, `mbid`. Returns: `cluster_id`, `display`, `slug`, `resolve |
get_artist | Artist card plus any published facet on request. Use: an artist's facts, releases or signals. Inputs: `key`: cluster_id from resolve_artist, or slug; `view`: summary | standard | full; `include`: ["similar", "gigs"] (linked, +1 unit each; 10 rows, 5 each when `view: full` carries both includes); `fa |
find_similar_artists | Artists adjacent to one artist, with the axes hosaka observed (co-appearance, radio co-play, DJ champions, lineage, credits, label mates) and counts — no composite score. Use: artists like X; a listening path from a verified artist. Inputs: `key`: cluster_id from resolve_artist, or slug; `limit` 1–2 |
get_label | Record-label card (identity, allowlisted facets) with hosaka's over-merge signal when one label page may cover several labels. Use: the user asks about a label; an artist card names a label to expand. Inputs: `key`: label cluster_id (64-hex) or crate slug. Returns: label facets; `ambiguity.state: ov |
search_catalog | Search releases (masters) by text and facets, with cursor pagination. Use: releases matching a description; candidate names (rows carry artist_cluster_id). Inputs: `q` and/or `genre`, `style`, `format`, `country`, `label`, `year_from`, `year_to`; `limit` 1–100 (default 10); `cursor`; `include: ["fac |
find_tracks | Find tracks by title, resolve artist + track, or a batch of up to 25 tracks in one call — release facts, durations, cluster_id. Use: the user names a song; a tracklist. Inputs: `title` OR `artist` + `track` OR `tracks: [...]` (≤ 25); `limit` 1–25 (default 10). Returns: `data.results[]` (`clusterId` |
get_upcoming_gigs | Upcoming gigs for one artist, or in one city within a date window. Use: where or when an artist plays; what is on in a city. Inputs: `key`: cluster_id from resolve_artist or slug, OR `city` (exact spelling); `from`, `to` YYYY-MM-DD. Returns: `data.gigs[]` {date, time, name, event_type, venue}; `avai |
get_profile | The linked account's stable, opaque profile id (and display name if set); never ask the user for it. Use: the host needs a stable user handle; after sign-in to confirm the link. Inputs: none. Returns: `data.id`, `data.name`, `data.account_mode`, `data.linked_since`. Auth: linked. |
get_usage | The linked account's current-period usage against its temporary allowance, with the 80 % warning and reset time. Use: the user asks how much is left; after quota_exceeded or a quota warning. Inputs: `period`: only "current" in v1. Returns: `allowance`, `used`, `warning_80`, `reset_at`, `account_mode |
list_breakouts | Artists breaking out or rising per hosaka, with the corroboration observed (press, or bookings ahead of press). Use: who is breaking through now. Inputs: `limit` 1–50 (default 8); `tier`: breakout | rising; `corroboration`: corroborated | booking_ahead. Returns: `data.items[]` {clusterId, name, emer |
list_ones_to_watch | The ones-to-watch slice of hosaka's tastemaker index: rising names with emergence and momentum tiers from early-moving curators and DJs. Use: up-and-coming artists; a discovery playlist. Inputs: `limit` 1–50 (default 8). Returns: `data.items[]` {rank, name, slug, emergenceTier, momentumTier}; `snaps |
get_aura | Aura: signal dimensions converging on an artist within 18 months, with measured 12-month break odds. Use: is an artist about to break. Inputs: `cluster_id` from resolve_artist (omit for the index); `limit` 1–50 (default 20). Returns: `data.items[]` or `data.aura` {cluster_id, artist_name, convergenc |
browse_artists | Browse hosaka's artist grid by Discogs genre and style, emergence tier and sort. Use: artists in a genre or style, by emergence tier. Inputs: `genre`, `style`: exact Discogs vocabulary (`Electronic`); `tier`: breakout | rising | steady; `sort`: discovery | reach; `limit` 1–30; `cursor`. Returns: `da |
list_tastemakers | A section of hosaka's tastemaker index: ones_to_watch is served; leaderboard and early_spinners are withheld until crate classifies them. Use: up-and-coming artists, or who moves a scene. Inputs: `section`: ones_to_watch | leaderboard | early_spinners; `limit` 1–50 (default 12). Returns: `data.rows[ |
get_festival | A festival card: header facts, identity and lineup as crate publishes them, acts linked to artist cards where a cluster_id exists. Use: a festival whose slug you have. Inputs: `key`: the festival slug (crate publishes no festival index — ask for the key). Returns: `display`, `slug`, `id`, `data.iden |
get_release | One release under an artist: a Discogs master (header, sections, artwork links, freshness) or a Bandcamp release (facts, track list). Use: a discography row names the release; one specific release. Inputs: `key`: artist cluster_id from resolve_artist, or slug; one of `master_id` or `bandcamp_item`; |
read_surface | hosaka's cluster-keyed surface registry (signal tables behind the facets) and one surface's rows for one cluster. Use: row-level detail behind a facet; which surfaces exist. Inputs: no arguments → the registry listing; `name` + `cluster` (64-hex) → rows; `limit`; `cursor`. Returns: `data.surfaces[]` |