Skip to main content
Glama

format_accessibility_summary

Converts accessibility violation data into a readable summary for Canvas LMS users to identify and address content accessibility issues.

Instructions

Format parsed violations into a human-readable summary.

    Args:
        violations_json: JSON string from parse_ufixit_violations

    Returns:
        Formatted text summary of accessibility violations
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
violations_jsonYes

Implementation Reference

  • The handler function for the 'format_accessibility_summary' tool. It is decorated with @mcp.tool() for registration and @validate_params. Parses JSON input containing accessibility violations and generates a formatted Markdown summary including metadata, overview statistics, breakdowns by severity and WCAG criteria, and detailed listings of up to 20 violations.
    @mcp.tool()
    @validate_params
    async def format_accessibility_summary(violations_json: str) -> str:
        """Format parsed violations into a human-readable summary.
    
        Args:
            violations_json: JSON string from parse_ufixit_violations
    
        Returns:
            Formatted text summary of accessibility violations
        """
        try:
            data = json.loads(violations_json)
        except json.JSONDecodeError:
            return "Error: Invalid JSON input"
    
        if "error" in data:
            return f"Error: {data['error']}"
    
        summary = data.get("summary", {})
        violations = data.get("violations", [])
        metadata = data.get("report_metadata", {})
    
        # Build formatted output
        lines = ["# Accessibility Report Summary", ""]
    
        # Metadata
        if metadata.get("page_title"):
            lines.append(f"**Report**: {metadata['page_title']}")
        if metadata.get("updated_at"):
            lines.append(f"**Last Updated**: {metadata['updated_at']}")
        lines.append("")
    
        # Summary statistics
        lines.append("## Overview")
        lines.append(f"- **Total Violations**: {summary.get('total_violations', 0)}")
        lines.append("")
    
        if summary.get("by_severity"):
            lines.append("### By Severity")
            for severity, count in summary["by_severity"].items():
                lines.append(f"- {severity.title()}: {count}")
            lines.append("")
    
        if summary.get("by_wcag_criterion"):
            lines.append("### By WCAG Criterion")
            for criterion, count in sorted(summary["by_wcag_criterion"].items()):
                lines.append(f"- WCAG {criterion}: {count}")
            lines.append("")
    
        # Detailed violations
        if violations:
            lines.append("## Detailed Violations")
            lines.append("")
    
            for i, violation in enumerate(violations[:20], 1):  # Limit to first 20
                lines.append(f"### {i}. {violation.get('type', 'Unknown Issue')}")
                if violation.get("wcag_criterion"):
                    lines.append(f"**WCAG**: {violation['wcag_criterion']}")
                if violation.get("severity"):
                    lines.append(f"**Severity**: {violation['severity']}")
                if violation.get("description"):
                    lines.append(f"**Description**: {violation['description']}")
                if violation.get("location"):
                    lines.append(f"**Location**: {violation['location']}")
                if violation.get("remediation"):
                    lines.append(f"**How to Fix**: {violation['remediation']}")
                lines.append("")
    
            if len(violations) > 20:
                lines.append(f"*...and {len(violations) - 20} more violations*")
    
        return "\n".join(lines)
  • Call to register_accessibility_tools(mcp) in the register_all_tools function, which triggers the registration of all accessibility tools including format_accessibility_summary via decorators in accessibility.py.
    register_accessibility_tools(mcp)
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vishalsachdev/canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server