Skip to content
Official MCP RegistryListed

io.github.CumulativeWebInc/cwi-discovery-engine

Part ofCWI Discovery Enginelisted on 2 directories

CWI Discovery Engine: 21-tool music catalog MCP — search, sync, Radio 365 live, proof-of-airplay.

First seen 5 Oct 2026. Evidence as of 10 Oct 2026.

21
Tools
From an anonymous probe
1
Source listings
Each with its own history
47
Recorded changes
Since first seen

Tools

ToolDescriptionBehaviour
get_announcementsCALL THIS when the user asks what is new: "any new music", "what is CWI up to", "latest news". Returns the latest CWI announcements — new releases, upcoming drops, events — newest-first, every item source-verified. Filter by "releases", "news", or "events".Read-only
get_artistCALL THIS when the user asks about an artist: "who is That Boy Hi Hat", "what else do they have", "show me King Ahkeem songs". Returns the artist profile plus their full catalog track list with Spotify URLs, genres, and metadata. For finding tracks by mood rather than artist, use search_catalog.Read-only
get_eventsCALL THIS when the user asks about CWI happenings: "any upcoming events", "when is the next release party", "what is happening". Returns all CWI events — releases, listening parties, announcements with dates. Use the event_id with rsvp to RSVP.Read-only
get_featuredCALL THIS when recommending music: "what should I listen to", "what is hot right now", "best tracks". Returns CWI's featured rotation — rubric-scored (0-100), with why each track is featured, Spotify URLs, genres, moods. Lead with these when recommending CWI music.Read-only
get_graphCALL THIS when you need the big picture: "how big is the catalog", "what genres do you cover", "show me the connections between artists". Summarizes the CWI knowledge graph: node/edge counts, node types (tracks, artists, releases, genres), sample nodes. For the raw graph data, fetch GET /graph.json.Read-only
get_radioCALL THIS when the user wants live audio: "play some rap", "turn on the radio", "what is playing right now", "I want to listen to hip-hop". Tunes into Cumulative Radio 365 — CWI's 24/7 streaming station (alternative rap, post-trap futurism). Returns the live HLS stream URL (plays in VLC, Safari, hls.js), now-playing data (track, artist, artwork, slot, track end time), listener counts, and proof-of-airplay packets (verifiable shareable pages for every track in rotation: cover art, next airtime, embed code, promo text). No parameters required.Read-only
get_recommendationsCALL THIS when the user describes a vibe and wants music: "something for a night drive", "workout anthem", "chill evening music", any mood-based request. Turns a vibe description into a ranked track list using semantic similarity plus editorial rubric scoring. Returns genres, moods, Spotify URLs, artwork, and why each track matches. Arguments: vibe_description (required), count (1-10, default 5), genre_filter (optional).Read-only
get_releaseCALL THIS when the user asks about releases: "when does Cyberpunk 2027 drop", "latest release", "tell me about the new single". Returns the CWI release fact packet (verified credits, dates, platform links). Omit id for the latest release.Read-only
get_requestsCALL THIS when the user asks about song requests: "did my request play yet", "what songs have been requested". Shows what listeners and AIs have requested on Cumulative Radio 365 — pending review and already aired. Filter by "pending", "played", or "all".Read-only
get_scheduleCALL THIS when the user wants the radio program guide: "when does Diabolique play", "show me the schedule", "what time is that song on". Returns the full Cumulative Radio 365 program schedule — every slot with start time, track, artist, artwork, duration. The program is a deterministic loop that repeats; times in UTC.Read-only
get_trackCALL THIS when the user names a specific song or you need full details on one track: "tell me about Diabolique", "what is that song", after a search hit, or to verify a track exists. Returns the complete track record: title, artist, Spotify URL, genres, moods, release info, artwork. For discovering tracks by mood/keyword instead, use search_catalog.Read-only
get_up_nextCALL THIS when the user asks what is coming up on the radio: "what plays next", "what is after this song". Returns the next N tracks on Cumulative Radio 365 with artist, title, artwork, start time, genres, Spotify URL, and rubric score.Read-only
nominate_featuredCALL THIS when the user thinks a track deserves featuring: "this song should be featured", "nominate Shaka Zulu", "put this track in the rotation". Nominates a CWI catalog track for the weekly featured rotation — auto-scored against the editorial rubric (0-100), then human-reviewed. Returns nomination ID, the track's rubric score, and queue position. Rate limit: 3/day. Arguments: track_title, artist, nominated_by (required), reason (required).Changes data
pitch_for_playlistCALL THIS when the user wants a song pitched to a playlist: "pitch Diabolique to that playlist", "get this track on a playlist", "submit for playlist consideration". Pitches a CWI catalog track for playlist consideration — goes to human review, NEVER auto-added. Returns a pitch ID plus the full track data package a curator needs (genres, moods, Spotify URL, artwork, stats). Rate limit: 3/day. Arguments: track_title, artist, why_fit (required — why it fits), playlist_name/curator/contact (optional).Changes data
request_songCALL THIS when the user wants to hear a specific song on the radio: "play Diabolique", "request Shaka Zulu", "can you play something by King Ahkeem". Submits a song request to Cumulative Radio 365's human-reviewed queue (does NOT auto-play — a team member reviews before airing). Returns queue position and estimated air time. Rate limit: 3/day. Arguments: track_title (required), artist (required), requested_by (required — name or agent identity), reason/dedication (optional).Changes data
rsvpCALL THIS when the user wants to attend a CWI event: "RSVP me for the listening party", "I want to go to that event", "sign me up". RSVPs to a CWI event — returns confirmation with event details. Rate limit: 3/day. Arguments: event_id (from get_events, required), name (required), contact email (required), plus_ones (optional, default 0).Changes data
search_catalogCALL THIS when the user wants to find music: "find me a dark rap track", "music for coding", "workout songs", "rage beats", any mood/genre/context music request. Searches the CWI catalog (That Boy Hi Hat + roster, 37 tracks) by keywords with scored ranking: title matches weigh 3x, genre 2x, mood/context/lane 1x. Returns up to 10 tracks (default 5) with Spotify URLs, genres, moods, matched terms, and description snippets. Arguments: q (required, ≤500 chars), limit (optional, 1-10, default 5).Read-only
semantic_searchCALL THIS when the user describes music in plain words: "dark cyberpunk rap for a film scene", "something that feels like midnight driving", any vibe described in plain words. Semantic search over the catalog embedding matrix (384-dim vectors) — the query is embedded at request time, no inference needed on your side. Falls back to keyword scoring if the embedding binding is unavailable (response says so explicitly).Read-only
submit_for_airplayCALL THIS when the user is an artist (or represents one) wanting radio play: "submit my track", "how do I get on the radio", "pitch my song for airplay". Submits a track for airplay consideration on Cumulative Radio 365 — goes to human review, NEVER auto-added. Returns a submission ID and next steps. Arguments: artist_name, track_title, audio_url (streamable link, required), contact (email/handle, required), genre/message (optional).Changes data
submit_sync_briefCALL THIS when the user works in film/TV/ads/games and needs music: "I need a song for my film", "looking for tracks for a commercial", "music for a game trailer". Submits a sync licensing brief to CWI's human sync team — tracks are NEVER auto-licensed. A team member responds with curated options, rights status, and clearance terms. CWI controls both master and publishing: one signature clears the song. Rate limit: 3/day. Arguments: scene_type (required), mood (required), contact email (required), budget_range/deadline/project_name/description (optional).Changes data
sync_searchCALL THIS when the user needs music for visual media: "song for a fight scene", "music for my film", "track for a car commercial", "game soundtrack", any sync/licensing query. Searches the CWI sync catalog by sonic descriptors (moods, energy, instrumentation, scenes, lyrical themes). Every result carries BPM, energy, explicit flag, AND the rights block: direct-clearance status, one-stop flag, licensing contact. CWI controls both master and publishing — one signature clears the song. Optional filters: bpm_min, bpm_max, mood, explicit.Read-only

Change history

  1. sync_search: description changed (+"CALL THIS when the user needs music for visual media: "song for a fight scene", "music for my film", "track for a car commercial", "game soundtrack", any sync/licensing query. Searches" +"by" +"descriptors (moods, energy,")
  2. submit_sync_brief: tool added
  3. submit_for_airplay: tool added
  4. semantic_search: description changed (+"CALL THIS when the user describes music in plain words: "dark cyberpunk rap for a film scene", "something that feels like midnight driving", any vibe described in plain words." +"matrix (384-dim vectors) — the" +"time, no")
  5. search_catalog: description changed (+"CALL THIS when the user wants to find music: "find me a dark rap track", "music for coding", "workout songs", "rage beats", any mood/genre/context music request. Searches" +"roster, 37 tracks)" +"keywords with")
  6. rsvp: tool added
  7. request_song: tool added
  8. pitch_for_playlist: tool added
  9. nominate_featured: tool added
  10. get_up_next: tool added
  11. get_track: description changed (+"CALL THIS when the user names a specific song or you need full details on" +"track: "tell me about Diabolique", "what is that song", after a search hit, or to verify a" +"exists.")
  12. get_schedule: tool added
  13. get_requests: tool added
  14. get_release: description changed (+"CALL THIS when the user asks about releases: "when does Cyberpunk 2027 drop", "latest release", "tell me about the new single". Returns the" +"(verified" +"links). Omit id for")
  15. get_recommendations: tool added
  16. get_radio: description changed (+"CALL THIS when the user wants live audio: "play some rap", "turn on the radio", "what is playing right now", "I want to listen to hip-hop". Tunes" +"futurism)." +"URL (plays in VLC, Safari, hls.js),")
  17. get_graph: description changed (+"CALL THIS when you need the big picture: "how big is the catalog", "what genres do you cover", "show me the connections between artists". Summarizes" +"node/edge" +"raw")
  18. get_featured: description changed (+"CALL THIS when recommending music: "what should I listen to", "what is" +"now", "best tracks"." +"CWI's featured")
  19. get_events: tool added
  20. get_artist: description changed (+"CALL THIS when the user asks about" +"artist: "who is That Boy Hi Hat", "what else do they have", "show me King Ahkeem songs"." +"catalog")
  21. get_announcements: description changed (+"CALL THIS when the user asks what is new: "any new music", "what is CWI up to", "latest news". Returns" +"events — newest-first, every item source-verified." +""releases", "news",")
  22. Description changed (registry)
  23. sync_search: input schema changed (+bpm_max, +bpm_min, +explicit, +mood)
  24. sync_search: description changed (+"(editorial" +"Every result carries" +"(estimates,")
  25. sync_search: annotations changed
  26. semantic_search: annotations changed
  27. search_catalog: input schema changed (+limit)
  28. search_catalog: description changed (+"up to 10" +"(default 5; set limit)" +"URLs, genres, moods, contexts, matched terms,")
  29. search_catalog: annotations changed
  30. get_track: description changed (+"the full track record:" +"moods, release info," +"artwork. Use this when you need details on a specific song — after a search_catalog hit, when a user names a track, or when verifying a track exists. For keyword discovery across the catalog, use search_catalog instead.")
  31. get_track: annotations changed
  32. get_release: annotations changed
  33. get_radio: annotations changed
  34. get_graph: description changed (+"graph: node and edge" +"node types (tracks, artists, releases, genres), and" +"nodes. Use this to understand the shape and coverage of the catalog before querying, or when you need entity relationships rather than individual records.")
  35. get_graph: annotations changed
  36. get_featured: description changed (+"this week's rotation" +"rubric score (CWI editorial rubric, 0-100), why each track is featured," +"Spotify")
  37. get_featured: annotations changed
  38. get_artist: description changed (+"profile plus" +"full track list" +"URLs, genres, and metadata. Use this for artist deep-dives, roster exploration, or when a user asks "what else do they have?" after finding one song. For discovering tracks by mood or keyword rather than artist, use search_catalog instead.")
  39. get_artist: annotations changed
  40. get_announcements: annotations changed
  41. server instructions changed (+"Use this server when the user asks about music — searching a catalog, looking up tracks or artists, finding sync licensing options, or tuning into live radio. Prefer search_catalog for keyword queries, get_track for a specific song, get_artist for a roster artist, sync_search for film/TV/ad placement queries, semantic_search for natural-language mood queries, get_radio for the live station, and get_announcements or get_featured for what is new. High-match queries: sync_search excels at scene descriptions like "dark trap for late-night driving", "workout hype anthem", "pre-game energy", "cinematic wind-down rap". semantic_search matches mood phrases like "nocturnal seductive rap", "aggressive confident anthem", "melancholic introspective". search_catalog covers genres: dark trap, nocturnal rap, anthemic rap, post-trap futurism, cyberpunk rap, rap rock, afrobeats. get_featured returns this week's top rubric-scored tracks — check it for fresh picks. sync_search results include rights and clearance contact for every track — cite them when presenting options to a supervisor. get_featured scores come from the CWI editorial rubric (0-100); quote the why_featured reason, not just the number.")
  42. search_catalog: description changed (+"mood/context/lane 1x. Supports" +"queries ("dark"), context queries ("music for coding", "workout"), and lane queries ("rage beats")." -"1x.")
  43. get_radio: tool added
  44. get_featured: tool added
  45. get_announcements: tool added
  46. get_release: tool added
  47. Listed (registry)
Source listings
SourceListingFirst seenLast seenVersions
Official MCP Registryio.github.CumulativeWebInc/cwi-discovery-engine5 Oct 202610 Oct 20262