Pull Canvas assignments, courses, and details correctly.
Accurate Canvas data starts with following the MCP workflow and validating every step. These reminders keep pulls trustworthy:
Canvas’s list_assignments endpoint can be misleading when includeSubmission=true because it returns "submitted": true regardless of the actual status. Instead, always inspect the nested submission object; its status field shows the real state. Example:
{
"status": "unsubmitted",
"submittedAt": "Not submitted",
"score": null,
"grade": null,
"late": false,
"missing": false,
"excused": null,
"attempt": null
}
Use this object as the source of truth for submission state, timestamps, and grades.
When reporting course grades, rely on currentGrade and currentScore rather than final fields—finalGrade may default to F or 0% until anything is graded. For example:
{
"course": "2026S CS 496-A",
"currentGrade": "N/A",
"currentScore": "N/A",
"finalGrade": "F",
"finalScore": "0%"
}
In this case the course shows F/0% because nothing is graded yet; rely on current* values to convey the student’s latest standing.
Canvas sessions occasionally time out even after a successful init/finish cycle. When the agent detects a timeout, always run a quick connection test (e.g., fetch current user or list a lightweight endpoint) before reporting data. This confirms the session is active and prevents outdated responses.
If a session expires or Canvas rejects requests, run the MCP Re-Auth tool immediately. Follow these steps:
Consistently testing the connection post-reauth ensures the agent only uses fresh credentials and minimizes downstream errors.