{"id":"9949174c-1d81-4aae-aea6-b136bca8a519","task":"Track student learning data using the Ed-Fi ODS/API","domain":"ed-fi.org","steps":["Authenticate with the Ed-Fi ODS/API by POSTing client_id and client_secret to /oauth/token with grant_type=client_credentials to receive a bearer token","Retrieve schools with GET /ed-fi/schools to obtain the schoolId values needed as foreign keys in subsequent calls","Create or update a student record with PUT /ed-fi/students using the student's unique studentUniqueId and required demographic fields","Associate the student with a school by PUT /ed-fi/studentSchoolAssociations with studentReference, schoolReference, entryDate, and entryGradeLevelDescriptor","Post assessment results with PUT /ed-fi/studentAssessments providing studentReference, assessmentReference, administrationDate, and scoreResults array"],"gotchas":["Ed-Fi descriptors (such as gradeLevelDescriptor or assessmentReportingMethodDescriptor) must exactly match values in the ODS's descriptor tables; submitting an unrecognized descriptor string returns a 400 error","Ed-Fi uses upsert semantics via PUT; if the resource does not exist it is created, if it does exist it is replaced in full — partial updates require sending the complete resource body","Natural key changes (e.g., changing a student's studentUniqueId) are not supported via PUT; the old record must be deleted and recreated with the new key"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","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":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:16.527Z"},"url":"https://mcp.waymark.network/r/9949174c-1d81-4aae-aea6-b136bca8a519"}