---
name: canvas-accessibility-auditor
description: Accessibility audit and remediation for Canvas LMS courses. Scans content for WCAG-oriented issues, generates prioritized reports, guides fixes, and verifies remediation. Use when asked to "audit accessibility", "check WCAG", "fix accessibility issues", or "run accessibility review".
---
# Canvas Accessibility Auditor
Full accessibility audit cycle for Learning Designers: scan course content, generate a prioritized report, guide remediation of fixable issues, re-scan to verify fixes, and produce an accessibility review 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:**
1. Call `get_page_content(course_identifier, page_url)` to retrieve the HTML
2. Identify the `` tags without alt attributes
3. Ask the user for alt text descriptions (or suggest based on surrounding context)
4. Call `edit_page_content(course_identifier, page_url, new_content)` with corrected HTML
**For non-descriptive links:**
1. Retrieve the page content
2. Show the current link: `click here`
3. Suggest descriptive replacement: `Download the syllabus (PDF)`
4. Apply fix after user approval
**For empty headings:**
1. Retrieve the page content
2. Show the empty heading
3. Ask: "Remove this heading, or add text to it?"
4. Apply the chosen fix
**For tables missing headers:**
1. Retrieve the page content
2. Show the table structure
3. Ask: "Which row/column should be headers?"
4. Convert `