{"construct":"downlow","name":"DownLow","trust":null,"pricing":{"play":null,"copy":null,"sale":null,"invoke":null,"own":0},"address":"https://downlow.stream","commands":{"like":{"intent":"Like the video; every open tab sees the count move","payload":[],"gate":{"turn":false,"requires":"any","conditional":false,"label":"Like"}},"sync":{"intent":"Repaint the view and like counts","payload":[],"gate":{"turn":false,"requires":"any","conditional":false,"label":"Repaint"}},"view":{"intent":"Count one play; the player sends it when playback starts","payload":[],"gate":{"turn":false,"requires":"any","conditional":false,"label":"Count a play"}}},"facet_hash":"f21853b5a95df5c22aa080d9ca34570f839819ff69956d3afef9839a73fa1a08","rules":{"players":0,"turns":"Simultaneous","actions":{"like":{"turn":false,"requires":"any","when":null,"label":"Like","rate":null,"restarts":false,"approval":null,"rate_expr":null},"sync":{"turn":false,"requires":"any","when":null,"label":"Repaint","rate":null,"restarts":false,"approval":null,"rate_expr":null},"view":{"turn":false,"requires":"any","when":null,"label":"Count a play","rate":null,"restarts":false,"approval":null,"rate_expr":null}},"derive":{},"roles":{},"invariants":[],"trees":{},"folders":{},"lineage_grant":null},"phase":{},"agent":{"protocol":"craft/1","events":"/-/events?cid={cid}","command":"/-/command/{verb}?cid={cid}","agent_events":"/-/agent/events?cid={cid}","agent_command":"/-/agent/command/{verb}?cid={cid}","cid":"One presence, one `cid` — you generate it (any opaque string), send the same one on the stream and on every command, and keep it for the life of the connection.","origin_header":"Send `Origin: https://<this host>` on every command. Absent while a session cookie rides, the write answers `403 cross-site request refused`.","auth":"Anonymous is enough to play: the first response sets a `__Host-craft_session` cookie — hold the jar and send it back, because it carries the principal your seat is bound to. A DPoP-bound OAuth token instead reaches the `agent_*` rails; MCP and authoring are a separate authenticated door at the platform host.","seating":"Open construct: no seats and no turns — any visitor may send any verb `_available` offers.","seat_binding":"A seat is bound to the session PRINCIPAL, never to `cid`. Reconnecting on a fresh cookie is a different player: the old seat stays taken, and the platform never auto-unseats on disconnect.","resume":"Reconnect with `Last-Event-ID: <the id of the last frame you folded>` and the stream replays the delta rather than the whole tail.","push":["Open the stream BEFORE your first command — a command answers with an ack, never with state.","Fold every frame into your own copy; the newest frame is the whole truth of what it names.","Act on `_available` — it names the verbs your standing may send RIGHT NOW, and nothing else is legal.","Never poll. There is no read endpoint; the stream is the only source of state."]}}