Cassette

Platform concepts (for agents)

Cassette is a discovery platform for web games: it lists games, shows them in a sandboxed frame, and offers players usernames, a library and a wallet front end. It doesn't host third-party builds and doesn't sell games. Each developer hosts their own build and sells through their own storefront contract. Publishing is free.

TermMeaningYou do
GameA listed web game with a unique slug (/g/<slug>) and a manifest (cassette.json). Cassette stores a pointer: the play URL on the developer's host (or ar://<id> for an Arweave build), mirrors, and the build hashregister it: listGame / publishBuild relayed (https://cassette.gg/agents/publish-game.md)
Studio (profile)The developer account. One per human, owned by the human's walletthe human approves your link once
OperatorA key your agent makes and holds (protocol.md §2). Publishes the studio's games; operates the storefront's listings and seller record. Can't move money, refund, or change ownership, payout or refund policypairing: POST /v1/agent-links (protocol.md §3)
StorefrontThe developer's own contract (ERC-1155 on Polygon) that sells licences and items, created from Cassette's admin-less factory and owned by the human's wallet. An immutable clone: Cassette has no role in it and can't change, pause or refund ita sign link the human signs (https://cassette.gg/agents/publish-game.md, step 7)
Seller record/.well-known/cassette.json on the developer's origin: who sells (name, business or private, contact), the storefronts, and the adopted documents with their sha256; its hash is on chainhttps://cassette.gg/agents/set-up-seller.md; on chain with setSellerRecord
DocumentsThe developer's terms of sale, refund policy, privacy notice, imprint (business) and cancellation form, generated from templates and adopted by the humanhttps://cassette.gg/agents/set-up-seller.md (the human adopts by signing)
LicenceA paid game's token (at most 1 per player) in the developer's storefrontpricing.type: "paid"
ItemA purchasable thing in a game (skin, coins), a listing in the developer's storefrontitems in the manifest
PaywallThe game's own sales page (paywall.js), on the developer's origin: it reads the storefront and asks for paymentcopy paywall.js (https://cassette.gg/agents/add-paywall.md)
Username@name (3-20 chars a-z 0-9 _) owned by the player, passed into every game as cassette.user.usernamefrom the play-frame bridge (paywall.md)
Session tokenShort-lived Cassette-signed proof of who the player is, for your backend. Identity only, never accessfrom the bridge; verify against GET /v1/jwks (https://cassette.gg/agents/verify-ownership.md)
  • Pricing types: free, free-with-items, paid. Prices are USD with at most 2 decimals and are paid as the same amount of USDC on Polygon; players add USDC to their wallet themselves (a card top-up inside Cassette is coming). Players pay the developer's storefront from the game's paywall: inside Cassette with the Cassette wallet, elsewhere with their own wallet. Buying needs no Cassette account.
  • Refunds: each sale stays in the storefront (escrow) for the developer's self-refund window (template 6 hours, 0–14 days); the buyer can refund themselves inside it. After it, anyone releases the payment to the developer. The developer can refund any sale at any time. Cassette's opt-in abuse registry can only switch off self-refund (https://cassette.gg/agents/handle-refunds.md).
  • Fees: no fee to publish. A referral fee, set in the developer's own storefront: 0% during launch, and only on sales Cassette referred.
  • Hosting: in the developer's own account: Cloudflare Pages, Netlify, Vercel, GitHub Pages, their own domain, or IPFS through their own pinning account (a mirror for a game that sells: its seller record needs a stable origin), or Arweave, coming soon (permanent, no account; the developer pays the storage; Cassette never pays for or sponsors it). Prefer a host the human is already logged into (https://cassette.gg/agents/host-game.md, "Detect first"). hosting.type: "hosted" (Cassette serves the build) is legacy, for Cassette's own games only.
  • Access: the game's paywall and the developer's backend read the storefront on the chain. Cassette doesn't gate a storefront game. Removing a game from Cassette removes it from discovery only.
  • Devices: games declare capabilities (phone, tablet, desktop, input types, multiplayer-*, offline, audio). Explore pages filter by the visitor's device.
  • Community listings: games found on the public web are listed by the platform's crawler; authors can claim them (https://cassette.gg/agents/claim-listing.md).
  • Legacy: Cassette's own games may still use the legacy Checkout, Licenses and Items contracts and hosted builds. Don't use that path for a developer's game.

Read API: https://cassette.gg/v1/* (no key). Contract addresses: GET https://cassette.gg/v1/config → deployment (storefrontFactory, storefrontRouter, …). Writes: signed by your key and relayed gas-free, or signed by the human through a sign link (https://cassette.gg/agents/protocol.md).