Accessibility guides for coding agents: fixes with working code, test steps, contrast checks. EN/JA
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Call BEFORE designing or building any interactive component or screen: menus, dialogs, carousels, tabs, forms, drag and drop, custom controls, cards, tables, charts, animation. This includes wireframes, mockups and prototypes. Takes the request in the user’s own words and returns the guides that apply with the requirements to build in from the start (keys, roles and names, focus, what is announced), working reference code, and the checks split into what the agent can confirm and what a person must. When the request itself breaks a rule (autoplay with no pause, a placeholder as the only label, a div as a button, hover-only menus, removed focus outlines, disabled zoom), it returns a version that keeps what the user wanted and passes, plus one sentence to say to the user. Do not refuse such a request, and do not build the failing version quietly.
What the user asked for, in their words, e.g. "autoplaying hero carousel", "custom dropdown with search", "カード全体をクリックできる一覧"
Guides to return at most (default 6, max 12)
Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016.
Call BEFORE designing or building any interactive component or screen: menus, dialogs, carousels, tabs, forms, drag and drop, custom controls, cards, tables, charts, animation. This includes wireframes, mockups and prototypes. Takes the request in the user’s own words and returns the guides that apply with the requirements to build in from the start (keys, roles and names, focus, what is announced), working reference code, and the checks split into what the agent can confirm and what a person must. When the request itself breaks a rule (autoplay with no pause, a placeholder as the only label, a div as a button, hover-only menus, removed focus outlines, disabled zoom), it returns a version that keeps what the user wanted and passes, plus one sentence to say to the user. Do not refuse such a request, and do not build the failing version quietly.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Guides to return at most (default 6, max 12) |
| locale | string | Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016. |
| request* | string | What the user asked for, in their words, e.g. "autoplaying hero carousel", "custom dropdown with search", "カード全体をクリックできる一覧" |
{
"type": "object",
"required": [
"request"
],
"properties": {
"limit": {
"type": "integer",
"description": "Guides to return at most (default 6, max 12)"
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
},
"request": {
"type": "string",
"maxLength": 1000,
"description": "What the user asked for, in their words, e.g. \"autoplaying hero carousel\", \"custom dropdown with search\", \"カード全体をクリックできる一覧\""
}
}
}Call when choosing or changing colours, a palette or design tokens, before they are used in a design or in code. Takes colour pairs (foreground and background, with text size in px and weight when the foreground is text, or use: "non-text" for control borders, icons and focus rings) or a set of named tokens, in hex, rgb() or hsl(). Returns each pair’s contrast ratio, pass or fail against WCAG 1.4.3 (text) and 1.4.11 (non-text) at AA or AAA, the nearest passing shade of the same hue, and the guides that apply. It checks values, not rendered pages: text over images, real focus states and forced colors stay with the audit.
| Argument | Type | Description |
|---|---|---|
| level | string | Conformance level to check against (default AA) |
| pairs | array | Colour pairs to check |
| locale | string | Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016. |
| tokens | object | Or named tokens { "ink": "#1b1b1b", "paper": "#fff" }, up to 12; every combination is checked as text |
{
"type": "object",
"properties": {
"level": {
"enum": [
"AA",
"AAA"
],
"type": "string",
"description": "Conformance level to check against (default AA)"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"foreground",
"background"
],
"properties": {
"use": {
"enum": [
"text",
"large-text",
"non-text"
],
"type": "string",
"description": "text (default), large-text, or non-text for control boundaries, icons and focus indicators (3:1)"
},
"name": {
"type": "string",
"description": "What the pair is, e.g. \"body text\", \"primary button border\""
},
"size": {
"type": "number",
"description": "Font size in CSS px, when the foreground is text"
},
"weight": {
"type": "number",
"description": "Font weight (400, 700), when the foreground is text"
},
"background": {
"type": "string",
"description": "What it sits on"
},
"foreground": {
"type": "string",
"description": "Text, icon or border colour: #767676, rgb(118 118 118), hsl(0 0% 46%)"
}
}
},
"maxItems": 50,
"description": "Colour pairs to check"
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
},
"tokens": {
"type": "object",
"description": "Or named tokens { \"ink\": \"#1b1b1b\", \"paper\": \"#fff\" }, up to 12; every combination is checked as text",
"additionalProperties": {
"type": "string"
}
}
}
}Search the Learn guides by words, component name, tag, ARIA attribute or WCAG number (1.4.3, SC 2.1.1, JIS 達成基準, EN 301 549 9.x). Returns for each matching topic: the problem, the fix in one line, how to test it, the guide link, and the criterion in WCAG, EN 301 549, Section 508 and JIS X 8341-3 terms. Topics with no guide yet come back as "in progress". Use it when a finding, a complaint, a failing check or a question names a problem.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Topics to return at most (default 8, max 20) |
| query* | string | Words, a tag, an ARIA attribute or a WCAG number |
| locale | string | Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "Topics to return at most (default 8, max 20)"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words, a tag, an ARIA attribute or a WCAG number"
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
}
}The full guide as Markdown, the same as easeweb.dev/learn/<slug>.md: what happens, why it fails, who it affects, what automation misses, the Before and After code, how to verify, and the limits. Also returns the After code as plain text with its marks (recommended, not enough on its own, the rule of thumb behind it). Get the slug from find_fix or before_building.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The guide slug, e.g. "native-buttons" |
| locale | string | Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"description": "The guide slug, e.g. \"native-buttons\""
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
}
}Call AFTER building or fixing something, and before telling the user it is done. For a guide (by slug) or a component (by query) returns the pass criteria, the checks the agent can run itself, the checks only a person can do (which keys to press and what should happen, as a two-minute script), the guide’s limits, and a Playwright regression test skeleton. Hand the person’s checks to the user as written; never report them as done.
| Argument | Type | Description |
|---|---|---|
| slug | string | A guide slug from find_fix or before_building |
| query | string | Or a component or problem in words, when the slug is unknown |
| locale | string | Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016. |
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"description": "A guide slug from find_fix or before_building"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Or a component or problem in words, when the slug is unknown"
},
"locale": {
"enum": [
"en",
"ja"
],
"type": "string",
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
}
}