Authenticate with an instructor or admin Canvas API token scoped to the target course
GET /api/v1/courses/:course_id/assignments to list all assignments; note the has_overrides flag on each
For each assignment with has_overrides true, GET /api/v1/courses/:course_id/assignments/:assignment_id/overrides
Each override object contains a student_ids array or a group_id or course_section_id identifying the override audience, plus due_at, lock_at, and unlock_at timestamps
Merge the base assignment due dates with the overrides to produce an effective due date map keyed by user or section
Handle pagination on both the assignments list and overrides list using the Link header rel=next pattern
Known gotchas
A student may be covered by both a section override and an individual override; Canvas applies the most specific override, so your merge logic must replicate that precedence
The base assignment due_at is null when all students are covered by overrides; do not treat null due_at as meaning 'no due date' without checking overrides
Overrides are only visible to users with manage_assignments permission; student-scoped tokens will not return override objects
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