canvas-quiz-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited canvas-quiz-review (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Educator skill for analysing quiz performance, investigating per-student answers, and regrading individual question scores — all from your agent session.
canvas-lms-mcp is the only Canvas MCP server with quiz tools. No other Canvas MCP server exposes list_quizzes, get_quiz, or score_quiz_question. This skill is a unique differentiator.
score_quiz_question) requires instructor role. TA role may be restricted depending on institution settings.Ask the user which course to work with. Accept a course name, course code, or Canvas ID.
Call list_quizzes with the course ID. This returns all quizzes with their title, question count, point total, due date, and time limit.
Present a summary and let the user select:
Quizzes — [Course Name]
• "Midterm Quiz" — 25 questions, 50 pts, due Mar 15, time limit: 60 min
• "Week 4 Check-in" — 10 questions, 20 pts, due Apr 5, no time limit
• "Final Exam Quiz" — 50 questions, 100 pts, due May 1, time limit: 120 min| Mode | When to use |
|---|---|
| Quiz overview | See score distribution and flag struggling questions |
| Per-student answers | Review one student's answer sheet |
| Regrade a question | Adjust the score for one question on one submission |
get_quiz with the course ID and quiz ID. Note the question count and total points.list_quiz_submissions with the course ID and quiz ID. This returns all submissions with each student's score, attempt count, and workflow state.list_quiz_questions with the course ID and quiz ID to get each question's title, type, and point value.Compute per-question statistics from submissions where possible (if scores are included in the submission response). Identify questions where the class average is below 60% of possible points.
Present the overview:
Quiz Overview — "Midterm Quiz" — [Course Name]
SCORE DISTRIBUTION
Class average: 38.4 / 50 pts (76.8%)
Highest: 50 pts | Lowest: 21 pts
Submitted: 47/50 students | In progress: 0 | Not started: 3
QUESTIONS TO REVIEW (< 60% class average)
• Q7 "Explain the difference between RAM and ROM" — avg 1.2/4 pts (30%)
• Q12 "Which sorting algorithm is O(n log n)?" — avg 0.6/2 pts (30%)
• Q19 "Describe REST constraints" — avg 2.1/5 pts (42%)
LOW-SCORING STUDENTS (< 70% of total points)
• Student A — 29/50 pts (58%)
• Student B — 31/50 pts (62%)
• Student C — 33/50 pts (66%)Ask if the instructor wants to review per-student answers or regrade a question.
list_quiz_submissions output.get_quiz_submission_answers with the quiz submission ID. This returns the student's answer for each question, the correct answer (for auto-graded types), and whether they received credit.Present the answer sheet:
Answer Sheet — "Midterm Quiz" — Student A (submission #1847)
Score: 29/50 pts (58%)
Q1 "What does CPU stand for?" — Multiple choice
Answered: "Central Processing Unit" ✓ (2/2 pts)
Q7 "Explain the difference between RAM and ROM" — Essay
Answered: "RAM is temporary memory that stores running programs.
ROM is permanent memory on a chip."
Score: 1/4 pts ← needs review
Q12 "Which sorting algorithm is O(n log n)?" — Multiple choice
Answered: "Bubble sort" ✗ (correct: Merge sort) (0/2 pts)Ask if any questions should be regraded.
Requires explicit user confirmation before adjusting any score.
Regrading adjusts the score for a single question on a single student's submission. Use this for:
Workflow:
score_quiz_question with:quiz_submission_id: the submission IDquiz_submission_attempt: the attempt number (from list_quiz_submissions)questions: the array of question score objects with the question ID and new scoreRepeat for additional questions or students if the instructor needs to batch-regrade.
Quiz Review — "Week 4 Check-in" — [Course Name]
SUMMARY
Submitted: 44/46 students | Avg: 17.2/20 pts (86%)
Questions needing review: 1
STRUGGLING QUESTION
• Q3 "Define idempotency" — avg 1.8/4 pts (45%)
Top wrong answers: "when a function returns the same value" (×12),
"when a request can be retried safely" (×8, partially correct)
REGRADING
Q3 on Student B's submission: 1 pt → 3 pts ✓ (updated total: 16/20)score_quiz_question is a write operation that permanently adjusts a student's quiz score. Always confirm the question, student, and new score before calling it.get_quiz_submission_answers requires the quiz submission ID (not the user ID). Retrieve it from the id field in list_quiz_submissions results.list_quiz_submissions and list_quiz_questions may paginate. The MCP server handles pagination automatically.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.