Axe MCP Server Version 1.6.0 Release Notes

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Release Date

September 23, 2026

Overview

This v1.6.0 release adds two new Intelligent Guided Tests (IGTs) to the analyze tool: Interactive Elements and Modal Dialog. Along with the existing Keyboard IGT, one analyze call can now run the Axe scan, Advanced Rules, and all three IGTs against the same page.

The Interactive Elements IGT also gives you control over what it spends AI credits on. You can scope it to part of the page, or have the agent show you the elements it found and pick which ones to test before any AI analysis runs.

important

To get this release:

  • Docker — re-pull the image: docker pull dequesystems/axe-mcp-server:latest
  • npm — no separate install step is required; npx runs the latest published version. See Choosing a Distribution.

New Features

Interactive Elements IGT

igtTools now accepts "interactive-elements". This runs the Automated Interactive Elements IGT, which finds the buttons, links, and custom controls on the page and uses AI to check each one's accessible name, role, and state:

{
  "url": "http://localhost:3000",
  "igtTools": ["interactive-elements"]
}

The test runs AI analysis on every element it tests, so a large page can use a lot of credits. Two options let you test fewer elements:

  • Scope it with includeSelectors. Pass CSS selectors, and only matching elements are analyzed. Everything else on the page is skipped. Use this when you already know which region matters.
  • Choose elements yourself with phased selection. Pass interactive: true. The first call runs the Axe scan and lists the interactive elements it found, but runs no AI analysis. Your agent shows you the list, you pick the elements you care about, and a second call analyzes only those. The second call reuses the same browser session, so the page isn't loaded or scanned again.

Fewer elements analyzed means fewer AI credits used. See Interactive Elements IGT for the full two-call flow.

igtTools now accepts "modal". This runs the Automated Modal Dialog IGT, which checks that focus stays inside the modal while it is open and that the modal has the correct dialog semantics. When you give it the element that opens the modal, it also checks that the modal can be closed and that focus returns to a sensible place afterward.

You can tell the test which modal to check in three ways:

  • modalTriggerSelector — the element that opens the modal, such as #open-dialog. The test clicks it, then runs the full assessment. Use this whenever the modal has a trigger.
  • modalSelector — the modal element itself. Use this when there's no trigger to click, such as a modal that is already open when the page loads. This checks structure only.
  • before steps only — no selector. Your before actions open the modal, for example with a sequence of clicks. This also checks structure only.

Pass modalSelector together with modalTriggerSelector to give the test a fallback: if it can't identify the modal after clicking the trigger, it uses the modal selector instead.

{
  "url": "http://localhost:3000",
  "igtTools": ["modal"],
  "modalTriggerSelector": "#open-dialog"
}

See Modal Dialog IGT for each targeting mode and what it assesses.

One Prompt, Every Test

Each IGT keeps its own options, so a single analyze call can now run the Axe scan, Advanced Rules, and every IGT together:

Analyze http://localhost:3000 for accessibility issues with thorough
advanced rules. Also run the keyboard, interactive elements, and modal
guided tests (test the modal triggered by button#open-dialog).

The IGTs run one after another after the scan, in the order you list them. Each IGT reports its results separately. See Running Everything in One Call.

Changes

wait Step in before Actions

before actions now support a wait step, a fixed pause for pages where nothing on the page signals it's ready, such as a CSS transition finishing or a debounce timer firing:

{ "action": "wait", "ms": 2000 }

Each step can pause for up to 5000 ms, and all wait steps in one before array can add up to 10000 ms. When an element appears or changes, use waitFor instead. It's faster and doesn't guess.

This has been available since early September to servers running v1.5.0 or later, so no upgrade is required.

Bug Fixes

  • A keyboard trap no longer stops later IGTs. When the Keyboard IGT ended early on a focus trap, a Modal IGT in the same call could time out and return nothing. Each IGT now returns its own result regardless of how the others ended.
  • Tools load in clients that reject extra schema keys. Some clients, including Gemini-backed ones, rejected every tool on the server because the tool listings contained a JSON Schema key they don't accept. The listings no longer include it.