EaseWeb accessibility
Accessibility guides for coding agents: fixes with working code, test steps, contrast checks. EN/JA
Should I use this
Quality & Safety
Findings (3)
- HIGH
- MEDIUMin before_building
- INFOin before_building
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"easeweb": {
"url": "https://easeweb.dev/mcp"
}
}
}Remote endpoints
https://easeweb.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
π’before_building(request, locale, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"request": {
"type": "string",
"maxLength": 1000,
"description": "What the user asked for, in their words, e.g. \"autoplaying hero carousel\", \"custom dropdown with search\", \"γ«γΌγε
¨δ½γγ―γͺγγ―γ§γγδΈθ¦§\""
},
"locale": {
"type": "string",
"enum": [
"en",
"ja"
],
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
},
"limit": {
"type": "integer",
"description": "Guides to return at most (default 6, max 12)"
}
},
"required": [
"request"
]
}π’find_fix(query, locale, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Words, a tag, an ARIA attribute or a WCAG number"
},
"locale": {
"type": "string",
"enum": [
"en",
"ja"
],
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
},
"limit": {
"type": "integer",
"description": "Topics to return at most (default 8, max 20)"
}
},
"required": [
"query"
]
}π’get_guide(slug, locale)
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.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"description": "The guide slug, e.g. \"native-buttons\""
},
"locale": {
"type": "string",
"enum": [
"en",
"ja"
],
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
},
"required": [
"slug"
]
}π’test_steps(slug, query, locale)
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.
Input Schema
{
"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": {
"type": "string",
"enum": [
"en",
"ja"
],
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
}
}π’check_palette(pairs, tokens, level, locale)
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.
Input Schema
{
"type": "object",
"properties": {
"pairs": {
"type": "array",
"maxItems": 50,
"description": "Colour pairs to check",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "What the pair is, e.g. \"body text\", \"primary button border\""
},
"foreground": {
"type": "string",
"description": "Text, icon or border colour: #767676, rgb(118 118 118), hsl(0 0% 46%)"
},
"background": {
"type": "string",
"description": "What it sits on"
},
"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"
},
"use": {
"type": "string",
"enum": [
"text",
"large-text",
"non-text"
],
"description": "text (default), large-text, or non-text for control boundaries, icons and focus indicators (3:1)"
}
},
"required": [
"foreground",
"background"
]
}
},
"tokens": {
"type": "object",
"description": "Or named tokens { \"ink\": \"#1b1b1b\", \"paper\": \"#fff\" }, up to 12; every combination is checked as text",
"additionalProperties": {
"type": "string"
}
},
"level": {
"type": "string",
"enum": [
"AA",
"AAA"
],
"description": "Conformance level to check against (default AA)"
},
"locale": {
"type": "string",
"enum": [
"en",
"ja"
],
"description": "Language of the answer and the guides: en (default) or ja. Japanese answers cite JIS X 8341-3:2016."
}
}
}Community
Evidence