canvas-accessibility-auditor
Canvas Accessibility Auditor
Full accessibility audit cycle for Learning Designers: scan course content, generate prioritized report, guide remediation of fixable issues, re-scan to verify fixes, produce compliance summary.
Prerequisites
- Canvas MCP server must be running and connected.
- Authenticated user must have instructor, TA, or designer role in the target course.
- For UFIXIT integration: the course must have a UFIXIT report page (generated by your institution's accessibility tool).
Steps
1. Identify Target Course
Ask the user which course to audit. Accept a course code, Canvas ID, or course name.
If not specified, prompt:
Which course would you like to audit for accessibility?
2. Scan Course Content
Run two scans in parallel if possible:
Scan A -- Direct content scan:
scan_course_content_accessibility(course_identifier, "pages,assignments")
This checks all page and assignment HTML for:
- Images missing alt text (WCAG 1.1.1, Level A)
- Empty headings (WCAG 2.4.6, Level AA)
- Tables missing headers (WCAG 1.3.1, Level A)
- Non-descriptive link text like "click here" (WCAG 2.4.4, Level A)
Scan B -- UFIXIT report (if available):
fetch_ufixit_report(course_identifier)
If the UFIXIT page exists, parse it:
parse_ufixit_violations(report_json)
3. Generate Prioritized Report
Combine results from both scans. Call format_accessibility_summary if using UFIXIT data.
Present issues sorted by priority:
## Accessibility Audit: [Course Name]
### Summary
- Content scanned: 20 pages, 15 assignments
- Total issues: 12
- Auto-fixable: 8 | Manual review needed: 4
### Level A Violations (must fix)
1. **Missing alt text** -- 5 images across 3 pages
- Page "Week 1 Overview": 2 images
- Page "Lab Instructions": 2 images
- Assignment "Final Project": 1 image
2. **Tables missing headers** -- 2 tables
- Page "Grade Scale": 1 table
- Page "Schedule": 1 table
3. **Non-descriptive links** -- 3 instances of "click here"
- Page "Resources": 2 links
- Page "Week 3 Overview": 1 link
### Level AA Violations (should fix)
4. **Empty headings** -- 2 empty heading elements
- Page "Week 5 Notes": 1 empty h3
- Page "Midterm Review": 1 empty h2
### Manual Review Required
- Color contrast: Cannot be checked automatically (requires visual inspection)
- Video captions: Cannot be verified via API (check in Canvas media player)
- PDF accessibility: Cannot be parsed via API (use Adobe Acrobat checker)
4. Guided Remediation
For each auto-fixable issue, walk the user through the fix:
For missing alt text:
- Call
get_page_content(course_identifier, page_url)to retrieve the HTML - Identify the
<img>tags without alt attributes - Ask the user for alt text descriptions (or suggest based on surrounding context)
- Call
edit_page_content(course_identifier, page_url, new_content)with corrected HTML
For non-descriptive links:
- Retrieve the page content
- Show the current link:
<a href="...">click here</a> - Suggest descriptive replacement:
<a href="...">Download the syllabus (PDF)</a> - Apply fix after user approval
For empty headings:
- Retrieve the page content
- Show the empty heading
- Ask: "Remove this heading, or add text to it?"
- Apply the chosen fix
For tables missing headers:
- Retrieve the page content
- Show the table structure
- Ask: "Which row/column should be headers?"
- Convert
<td>to<th>elements and apply
Always ask for user confirmation before modifying any page.
5. Re-scan Modified Pages
After remediation, re-run the scan on modified pages only:
scan_course_content_accessibility(course_identifier, "pages")
Report: "Fixed 8/12 issues. 4 remaining require manual review."
6. Generate Compliance Summary
Produce a final summary suitable for stakeholder reporting:
## Accessibility Compliance Summary
**Course:** [Course Name]
**Audit Date:** [date]
**Auditor:** AI-assisted audit via Canvas MCP
### Results
- Total content items scanned: 35
- Automated issues found: 12
- Issues remediated: 8
- Issues requiring manual review: 4
- WCAG Level A compliance: Partial (manual review items remain)
### Remediation Actions Taken
- Added alt text to 5 images
- Fixed 3 non-descriptive links
- Removed 2 empty headings
### Outstanding Items
- Color contrast review needed (pages with colored text)
- Video caption verification (embedded videos)
- PDF accessibility check (uploaded PDFs)
### Recommendation
Course content meets automated WCAG 2.1 Level A criteria after remediation.
Manual review of color contrast and multimedia is recommended before publishing.
MCP Tools Used
| Tool | Purpose |
|---|---|
scan_course_content_accessibility |
Scan pages and assignments for WCAG issues |
fetch_ufixit_report |
Retrieve institutional UFIXIT report |
parse_ufixit_violations |
Extract structured violations from report |
format_accessibility_summary |
Format violations into readable report |
get_page_content |
Retrieve page HTML for remediation |
edit_page_content |
Apply accessibility fixes to pages |
list_courses |
Find available courses |
Example
User: "Run accessibility audit for CS 101"
Agent: Scans all content, generates the prioritized report.
User: "Fix the missing alt text issues"
Agent: Retrieves each affected page, asks for alt text descriptions, applies fixes, re-scans.
Limitations
- Cannot check: Color contrast, video captions, PDF accessibility, audio descriptions, keyboard navigation
- These are flagged as "manual review required" in every report
- Remediation is per-page: Each fix requires a full page content read and write cycle
- No undo: Page edits via the API do not create Canvas revision history -- back up pages before bulk fixes
Notes
- Pairs well with
canvas-course-qcfor comprehensive pre-semester review. - Run after major content updates or course imports.
- UFIXIT integration depends on your institution having UDOIT/UFIXIT installed.