← WebMCP Directory

Tool tree

accesscanary.onrender.com

Developer ToolsTools verified
Website
AccessCanary — an AI agent that catches accessibility bugs static scanners can't see, using WebMCP to observe live focus order, ARIA-live timing, and keyboard traps.
Explore capabilities
    get_focus_orderAnswer

    Returns the real browser tab order starting from a given element, honoring positive tabIndex ordering rules. Use this to check whether the visual/DOM order matches the actual keyboard tab order.

    View tool JSON
    {
      "name": "get_focus_order",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the real browser tab order starting from a given element, honoring positive tabIndex ordering rules. Use this to check whether the visual/DOM order matches the actual keyboard tab order.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "startSelector": {
            "type": "string",
            "description": "CSS selector of the element to start the tab sequence from"
          },
          "limit": {
            "type": "number",
            "description": "Max number of steps to return, default 20"
          }
        },
        "required": [
          "startSelector"
        ]
      }
    }
    simulate_tab_sequenceAction

    Simulates pressing Tab a number of times starting from an element, dispatching real keydown events so custom focus-trap handlers get a genuine chance to run. Returns the resulting focus path.

    View tool JSON
    {
      "name": "simulate_tab_sequence",
      "kind": "act",
      "impl": "imperative",
      "description": "Simulates pressing Tab a number of times starting from an element, dispatching real keydown events so custom focus-trap handlers get a genuine chance to run. Returns the resulting focus path.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "startSelector": {
            "type": "string",
            "description": "CSS selector of the element to start tabbing from"
          },
          "steps": {
            "type": "number",
            "description": "Number of Tab presses to simulate, max 10"
          }
        },
        "required": [
          "startSelector",
          "steps"
        ]
      }
    }
    get_aria_live_stateAnswer

    Reports whether an element has aria-live set, its politeness level, and whether it actually fired an announcement the last time its content changed — catching silent live regions.

    View tool JSON
    {
      "name": "get_aria_live_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Reports whether an element has aria-live set, its politeness level, and whether it actually fired an announcement the last time its content changed — catching silent live regions.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "selector": {
            "type": "string",
            "description": "CSS selector of the live region to inspect"
          }
        },
        "required": [
          "selector"
        ]
      }
    }
    get_element_roleAnswer

    Returns the accessible role, accessible name, and relevant ARIA state of an element, so an agent can confirm it is announced correctly to assistive technology.

    View tool JSON
    {
      "name": "get_element_role",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the accessible role, accessible name, and relevant ARIA state of an element, so an agent can confirm it is announced correctly to assistive technology.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "selector": {
            "type": "string",
            "description": "CSS selector of the element to inspect"
          }
        },
        "required": [
          "selector"
        ]
      }
    }
    report_violationAction

    Proposes an accessibility violation finding for human review. This does NOT log the violation directly — it stages it for confirmation in the narration panel, where a human approves or dismisses it.

    View tool JSON
    {
      "name": "report_violation",
      "kind": "act",
      "impl": "imperative",
      "description": "Proposes an accessibility violation finding for human review. This does NOT log the violation directly — it stages it for confirmation in the narration panel, where a human approves or dismisses it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "focus-order",
              "silent-live-region",
              "keyboard-trap"
            ]
          },
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "serious",
              "moderate"
            ]
          },
          "description": {
            "type": "string",
            "description": "Plain-language description of what was observed"
          },
          "selector": {
            "type": "string",
            "description": "Where in the page the issue was found"
          }
        },
        "required": [
          "category",
          "severity",
          "description",
          "selector"
        ]
      }
    }
    get_violation_logAnswer

    Returns the total count of confirmed violations plus the 3 most recent, in full detail. Summarized rather than exhaustive to stay within tool output size limits.

    View tool JSON
    {
      "name": "get_violation_log",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the total count of confirmed violations plus the 3 most recent, in full detail. Summarized rather than exhaustive to stay within tool output size limits.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }