Confirm the ODS/API deployment has the Enrollment composite profile enabled; composite resources are available under the /composites/v1/{year}/ed-fi/enrollments path.
Authenticate with a read-only API client scoped to the relevant education organization using the standard OAuth 2.0 client credentials flow.
GET /composites/v1/{schoolYear}/ed-fi/enrollments?schoolId=<id> to retrieve a denormalized view combining StudentSchoolAssociation, Student, and StudentEducationOrganizationAssociation in a single response.
Use the totalCount=true query parameter to retrieve total record counts for pagination planning; iterate using offset and limit parameters.
Filter by gradeLevel or entryType using OData-style filter predicates supported by the composite endpoint; check the SEA's composite profile definition for supported filter fields.
Compare composite response totals against raw StudentSchoolAssociation counts periodically to detect profile definition gaps — composites may omit records that fail inner-join conditions.
Known gotchas
Composite resources are read-only; you cannot POST or PUT through the composite endpoints — all writes must go through the underlying resource endpoints.
The composite profile definition is deployment-specific; the structure of the response at one SEA's ODS/API may differ from another even if both use the same Ed-Fi version.
Large composite responses for whole-district pulls can be slow; implement a timeout of at least 120 seconds and consider chunking requests by school rather than querying all schools at once.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp