Request a Widevine server certificate from your license server and configure it on the player to enable request signing
Listen for the 'encrypted' event on the media element, extract the initData, and create a MediaKeySession
On the 'message' event (type 'license-request'), POST the raw message bytes to your license server with Content-Type application/octet-stream and any required auth headers
Return the binary license response to the session via update(), which loads the content decryption key and begins playback
Handle 'license-renewal' message events the same way to support long-running sessions without interruption
Known gotchas
Desktop Chrome is removing persistent license support; for offline use, target Android ExoPlayer or iOS where persistence is still supported
Some license servers require a preliminary 2-byte service certificate request before the actual license request — check your provider's docs
CORS must allow the Content-Type and any custom auth headers on the license server endpoint, or the preflight will block the request
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp