{
  "service": "HypeRate Music Matcher",
  "url": "https://musicmatcher.hyperate.io/",
  "type": "WebApplication",
  "category": ["MusicApplication", "FitnessApplication", "StreamingTool"],
  "description": "Connects real-time heart rate data from HypeRate to Apple Music or Spotify, automatically switching playlists by BPM zone. Built for fitness streamers, athletes, and workout content creators.",
  "pricing": {
    "model": "free",
    "price": 0,
    "currency": "USD",
    "note": "Requires Apple Music or Spotify subscription for music playback"
  },
  "capabilities": [
    {
      "id": "zone-switching",
      "name": "Automatic Playlist Switching",
      "description": "Switches Apple Music or Spotify playlists automatically when heart rate crosses a zone boundary"
    },
    {
      "id": "zone-config",
      "name": "Custom Heart Rate Zones",
      "description": "Up to 6 fully configurable BPM zones with custom labels, min/max values, and assigned playlists"
    },
    {
      "id": "crossfade",
      "name": "Crossfade Transitions",
      "description": "Smooth audio crossfade between playlists (400ms–3000ms), with debounce to prevent rapid toggling"
    },
    {
      "id": "obs-overlay",
      "name": "OBS Overlay",
      "description": "Browser-source overlay for OBS showing current track, artist, album art, and live heart rate"
    },
    {
      "id": "stream-deck",
      "name": "Stream Deck Integration",
      "description": "REST API endpoints for Elgato Stream Deck: skip, pause, play, volume control, zone switching"
    },
    {
      "id": "hyperate-ws",
      "name": "HypeRate WebSocket",
      "description": "Real-time BPM feed via HypeRate WebSocket — compatible with Apple Watch, Garmin, Polar, Wahoo, BLE chest straps"
    }
  ],
  "apiEndpoints": [
    { "path": "/overlay-state", "method": "GET/POST", "description": "Now-playing and heart rate overlay state" },
    { "path": "/zones", "method": "GET/POST", "description": "Read or write heart rate zone configuration" },
    { "path": "/sd/skip", "method": "GET", "description": "Stream Deck: skip current track" },
    { "path": "/sd/pause", "method": "GET", "description": "Stream Deck: pause playback" },
    { "path": "/sd/play", "method": "GET", "description": "Stream Deck: resume playback" },
    { "path": "/sd/toggle", "method": "GET", "description": "Stream Deck: toggle play/pause" },
    { "path": "/sd/volumeup", "method": "GET", "description": "Stream Deck: volume up" },
    { "path": "/sd/volumedown", "method": "GET", "description": "Stream Deck: volume down" },
    { "path": "/sd/zone/:id", "method": "GET", "description": "Stream Deck: switch to specific zone" }
  ],
  "relatedServices": [
    { "name": "HypeRate", "url": "https://hyperate.io", "relationship": "heart rate data provider" },
    { "name": "Apple Music", "url": "https://music.apple.com", "relationship": "music service integration" },
    { "name": "Spotify", "url": "https://spotify.com", "relationship": "music service integration" }
  ]
}
