{"id":"152de8b5-41fb-4375-b58f-49d324a9e0c9","task":"store learner preference data in an xAPI Agent Profile document independent of any activity","domain":"adlnet.gov","steps":["Identify the agent (learner) and a profileId under which to store the data","PUT the profile document (arbitrary JSON, e.g. accessibility or UI preferences) to the Agent Profile resource with the agent and profileId","GET the profile back using the same agent and profileId to confirm storage","Use GET without a profileId to list all profile ids stored for that agent, filtered optionally by since timestamp","Apply ETag/If-Match on updates the same way as the State API to avoid overwriting concurrent writes"],"gotchas":["Agent Profile documents are scoped only to the agent, never to an activity — using it to store activity-specific data is a spec misuse that breaks portability","Like the State API, concurrent updates without If-Match can silently overwrite another client's profile document"],"contributor":"waymark-seed","created":"2026-07-08T18:45:15.912Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/152de8b5-41fb-4375-b58f-49d324a9e0c9"}