EuroA11y

Documentation

EuroA11y is a remote MCP server with two read-only tools: an automated accessibility scan of one public web page, and a check of the European Accessibility Act (EAA) scope for a business. Free, no account, no authentication.

Connect

Connector URL, a remote MCP server (Streamable HTTP) with no authentication:

https://euroa11y.com/mcp

In Claude

On claude.ai or the Claude desktop app. The Free plan allows one custom connector.

  1. Open Customize, then Connectors. Select + Add, then Add custom connector.
  2. Name it EuroA11y, paste the connector URL and select Continue. Choose No sign in, select Continue, then Add.
  3. In a conversation, open the + menu at the bottom left, then Connectors, and turn EuroA11y on.

Team or Enterprise plan: an owner first adds EuroA11y in Organization settings, then Connectors. Each member then finds it in Customize, then Connectors, and selects Connect.

In ChatGPT

On the web, with a Plus, Pro, Business, Enterprise or Education account. Availability can depend on your account and workspace policy.

  1. Open Settings, then Security and login, and turn on Developer mode.
  2. Open Plugins and select the + button. Enter EuroA11y as the name, a short description and the connector URL, with no authentication, then create it.
  3. On the EuroA11y plugin page, select Connect and add it to ChatGPT. Without this step, ChatGPT answers without EuroA11y.
  4. In a conversation, open the + menu, choose Developer mode and select EuroA11y.

Steps checked on 5 October 2026 against the Claude and OpenAI help pages.

Example prompts

  • “With EuroA11y, check the accessibility of https://www.gov.uk on mobile.”
  • “With EuroA11y, which RGAA criteria does my home page fail? https://example.fr”
  • “I run an online shop with 6 employees and €1.2 million turnover. With EuroA11y: does the European Accessibility Act apply to me?”

Ask in plain language: the assistant decides when to call a tool. If the assistant answers without EuroA11y, name it in your request.

scan_page

Loads one public page in a headless Chromium browser, runs axe-core against WCAG 2.2 level AA, and returns the failures grouped by WCAG success criterion, most severe first. A scan usually takes 5 to 30 seconds.

Parameters

  • url (required): the page address. A bare domain such as example.com is read as https://.
  • viewport: desktop (1280×800, default) or mobile (390×844).
  • include_rgaa: add the related criteria of RGAA 4.1.2, the French accessibility framework, to each WCAG criterion. RGAA 4.1.2 follows WCAG 2.1, so criteria new in WCAG 2.2 have no RGAA match.
  • include_best_practices: also run axe best-practice rules, which are not WCAG requirements.
  • max_examples: failing elements shown per rule, 1 to 5 (2 by default).
  • fresh: scan the page again instead of reusing a recent result, for example after fixing it. Accepted once the earlier scan is 5 minutes old.

Result

  • Summary: failed rules, failing elements by impact (critical, serious, moderate, minor), passed rules, rules to review.
  • For each failed WCAG criterion: its level, the axe rules that failed, their impact, the number of elements, examples (CSS selector and HTML excerpt) and how to fix them.
  • Checks that need manual review: axe could not decide, a person must look.
  • The EAA rule in short, and the limits of the scan.
  • When the result comes from a recent scan of the same page, a first line says so, with the time of that scan.

Of the 55 success criteria of WCAG 2.2 at levels A and AA, axe-core 4.13.0 has at least one rule for 23. The other 32 need a person.

When there is no report

The tool returns an error message instead of a misleading report when the page cannot be scanned: private, local or reserved address; port other than 80 or 443; unknown domain; HTTP status 400 or above; a bot-protection page (for example Cloudflare, DataDome or Akamai); a page that does not load in time; or one of the limits reached, in which case the message says when to try again.

check_eaa_scope

Applies the scope rules of Directive (EU) 2019/882, applicable since 28 June 2025, to the figures given. No network access, nothing stored.

Parameters

  • sector (required): the consumer service to check. For a business offering several of them, the assistant calls the tool once per service.
    • e_commerce: consumers can conclude a contract through the website or app (order, book, subscribe), whatever the trade.
    • consumer_banking, e_books, audiovisual_media_access.
    • electronic_communications, except transmission services for machine-to-machine services.
    • passenger_transport: air, bus and coach, rail and waterborne transport, other than urban, suburban and regional services.
    • urban_regional_transport: urban, suburban and regional transport.
    • other: none of these.
  • sells_to_eu_consumers (required): true if the service is offered to consumers in the EU, not only to businesses.
  • public_body: true for a ministry, local authority or public institution.
  • employees, annual_turnover_eur, balance_sheet_eur: used for the microenterprise exemption, which needs fewer than 10 persons and an annual turnover or balance sheet total not above EUR 2 million. Figures from the latest approved accounts, turnover excluding VAT, partner and linked enterprises included (Recommendation 2003/361/EC).

Verdicts

  • in_scope: the accessibility requirements for services apply.
  • terminals_only: for urban, suburban and regional transport, the EAA covers only the interactive self-service terminals, not the website or the app. A website or app selling tickets to consumers is checked again as e_commerce.
  • exempt_microenterprise: microenterprise providing services, exempt from the requirements for services.
  • out_of_scope: the service is not one the directive lists, or it is not offered to EU consumers. The EAA also covers answering emergency calls to 112, and products (computers, smartphones, self-service terminals, e-readers…), which have their own requirements: neither is assessed here.
  • public_sector_other_law: a public body whose service the EAA does not list falls under Directive (EU) 2016/2102 (in France, the RGAA). A public body providing a listed service gets in_scope: both directives apply, and the microenterprise exemption does not.
  • need_more_info: a figure is missing; the assistant should ask for it.

Each verdict comes with its reasons, key dates and legal sources, such as EUR-Lex and Légifrance. It is information, not legal advice.

Limits

  • Automated tools detect only part of accessibility issues. A scan with no failure does not mean the page is accessible or compliant; a conformance claim or an accessibility statement needs a manual audit.
  • One page per call, main document only (no iframe), no login, no form submission.
  • Private, local and reserved addresses are refused for the page and its redirects; the resources it loads are checked by host name.
  • Fair-use limits keep the service free:
    • for each ChatGPT account, or each network address for a client on your own computer: one scan at a time, 40 scans a day (a reused result does not count) and 10 calls a minute in each Cloudflare location;
    • for each scanned site: 2 scans at a time and 30 an hour, so that the service never weighs on a site;
    • for all users together: 8 scans at a time and a daily scanning time, with a share kept for ChatGPT, for Claude on the web and for the other clients. Claude on the web sends no user identifier: its users share the platform's share, and each of its server addresses can send 30 calls a minute in each Cloudflare location. The same applies to ChatGPT calls that carry no account identifier.
    Daily counts start again at midnight UTC. When a limit is reached, the error message says which one and when to try again.
  • A page scanned again with the same options within 24 hours may get the earlier result. The report says so first and gives the time of that scan; fresh scans the page again once that result is 5 minutes old.

When a site blocks the scanner

Many shops put their pages behind a bot protection service such as DataDome, Cloudflare or Akamai. EuroA11y opens pages in a cloud browser, which these services treat as a bot: the scan then stops with a message naming the service, and gives no report rather than a report on the challenge page.

  • If you run the site: in your bot protection settings, add a rule that lets through requests whose user agent contains euroa11y/. Anyone can send that user agent, so limit the rule to the pages you want to check, and remove it afterwards.
  • Otherwise: test the page in your own browser with a tool such as axe DevTools.

Data

Tool arguments are processed in memory. The raw result of a scan, which includes the page address, is kept up to 24 hours, encrypted, to answer the same request again. Logs hold no page address and no argument. The usage limits count the scans of each client and site under hashes whose key changes every day. Details in the privacy policy.

Support

Questions, a wrong result or a page that should scan: contact@euroa11y.com