Skip to main content
Glama

Fix Accessibility Issues

fix_accessibility_issues
DestructiveIdempotent

Automatically fix flagged accessibility issues in Canvas course pages and assignments, with a preview-only dry run by default and an option to apply changes.

Instructions

Auto-fix accessibility issues in Canvas course content.

Applies automated fixes for issues flagged as auto_fixable by the scanner. Run scan_course_content_accessibility first to see what will be fixed. Default is dry_run=True (preview only). Set dry_run=False to apply changes.

Input Schema

NameRequiredDescriptionDefault
dry_runNoIf True, preview changes without applying. Set False to apply.
fix_typesNoComma-separated fix types to apply: th_scope - Add scope="col" to <th> without scope low_contrast - Fix white text on #ff5f05 orange backgrounds legacy_designplus - Migrate kl_ classes to dp- equivalents redundant_alt_prefix - Remove "image of" prefix from alt textth_scope,low_contrast,legacy_designplus,redundant_alt_prefix
content_typesNoComma-separated types to fix: pages, assignmentspages
course_identifierYesCourse code or Canvas ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.10.0
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object",
      -  "x-fastmcp-wrap-result": true
      -}New value: +null
  2. Changed13 schema fields changedv1.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / content_types / description
      Added value: +"Comma-separated types to fix: pages, assignments"
    • removedInput schema / properties / content_types / title
      Removed value: -"Content Types"
    • addedInput schema / properties / course_identifier / description
      Added value: +"Course code or Canvas ID"
    • removedInput schema / properties / course_identifier / title
      Removed value: -"Course Identifier"
    • addedInput schema / properties / dry_run / description
      Added value: +"If True, preview changes without applying. Set False to apply."
    • removedInput schema / properties / dry_run / title
      Removed value: -"Dry Run"
    • addedInput schema / properties / fix_types / description
      Added value: +"Comma-separated fix types to apply:\nth_scope - Add scope=\"col\" to <th> without scope\nlow_contrast - Fix white text on #ff5f05 orange backgrounds\nlegacy_designplus - Migrate kl_ classes to dp- equivalents\nredundant_alt_prefix - Remove \"image of\" prefix from alt text"
    • removedInput schema / properties / fix_types / title
      Removed value: -"Fix Types"
    • removedInput schema / title
      Removed value: -"fix_accessibility_issuesArguments"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"fix_accessibility_issuesOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  3. Addedv1.3.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and destructiveHint=true; the description is consistent with this by emphasizing preview-by-default and restricting fixes to scanner-flagged auto_fixable items. It adds useful context beyond annotations, though it doesn't disclose partial-failure behavior or whether fixes are reversible once applied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the core action and scope, then the prerequisite, then the safety default. Every sentence earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the essential workflow (scan first, preview by default, scope limited to auto_fixable). It is nearly complete, missing only a note on what the response reports or handling of failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters including the fix_types and content_types enumerations are already documented in the schema. The description only restates the dry_run default, adding little beyond the structured fields, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (auto-fix) plus resource (accessibility issues in Canvas course content), and it explicitly differentiates itself from scan_course_content_accessibility by describing itself as the apply step that acts on issues 'flagged as auto_fixable by the scanner.' An agent can clearly tell which of the sibling tools performs the mutation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States an explicit prerequisite and alternative: 'Run scan_course_content_accessibility first to see what will be fixed.' It also documents the default-safe invocation (dry_run=True preview) versus dry_run=False to apply, so the agent knows the intended workflow without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools