{"name":"capability-storage","title":"Storage","kind":"capability","status":"available","summary":"Per-prototype key-value persistence. Opaque-origin iframes have no reliable localStorage; the shell stores device-local values per prototype and isolates signed-in players on shared browsers.","spec":"capability-storage","version":"sdk","versions":[],"license":"-","source":"Prototir.storage via Player Shell","sizeKB":null,"requires":[],"permissions":[],"flags":{"wasm":false,"streamed":false},"compatibility":"Inside the Prototir player. Outside it, get returns null.","install":{"manifest":null,"importFrom":null},"example":"await Prototir.storage.set('difficulty', 'hard');\nconst difficulty = await Prototir.storage.get('difficulty');","api":[{"heading":"Prototir.storage","entries":[{"signature":"get(key)","description":"The stored string, or null."},{"signature":"set(key, value)","description":"Stores a string for this prototype and the signed-in player."},{"signature":"remove(key)","description":"Removes a value."}]}],"notes":["Keys up to 128 characters, values up to 64 KiB of UTF-8. Store JSON as a string for structured data.","Prototypes run in an isolated frame with no reliable localStorage, so this goes through the player."],"upstreamDocs":null,"labs":[]}