Authenticate to the Ed-Fi ODS API using OAuth 2.0 client credentials to obtain a Bearer token; all subsequent requests include this token in the Authorization header
Identify the composite category and resource you need (e.g., the Enrollment composite); composite endpoints follow the pattern /composites/v1/{organizationCode}/{category}/{resource}
Issue a GET to the composite endpoint with optional filter parameters (schoolId, schoolYear, etc.) to retrieve the pre-joined data structure; the response aggregates related entities (student, enrollment, school) into a single JSON document
Handle pagination using the offset and limit query parameters; the default and maximum page sizes are deployment-defined, so check the API metadata or Swagger docs for the specific ODS instance
Define a custom composite in the ODS deployment's XML definition files if the built-in composites do not match your data shape; deploy and restart the ODS to make the new composite available
Known gotchas
Composite resources are read-only and do not support POST, PUT, or DELETE; all writes must go through the standard resource endpoints, not the composite layer
The organizationCode segment in the composite URL must match the value defined in the composite XML configuration on the server; a mismatch returns a 404 that looks identical to a missing resource error
Computed or flattened fields in composites may reflect data as of the last ODS cache refresh rather than real-time; high-frequency polling against composites can return stale data compared to individual resource endpoints
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