easeweb
Registry code: 4e43da9e6236d6a4
EaseWeb: accessibility guides for coding agents, by a Section 508 Trusted Tester, free and with no login. The guides are what goes wrong for real people, the fix with working code, and how to test it, in English and Japanese.
When asked to design, build or change any UI (a component, a screen, a wireframe, a mockup, a prototype), call before_building with the request in the user’s words BEFORE writing code or drawing. When choosing or changing colours, a palette or design tokens, call check_palette. After building, call test_steps and hand the "a person must check" items to the user as…
- endpoint
- https://easeweb.dev/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is easeweb live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is easeweb free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does easeweb have?
- 5 tools: find_fix, get_guide, check_palette, before_building, test_steps.
- Is easeweb safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 5 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
test_steps open 1h ago
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.
{ "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." } } }arguments 23 linesfind_fix unknown never probed
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.
{ "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." } } }arguments 25 linesget_guide unknown never probed
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.
{ "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." } } }arguments 21 linescheck_palette unknown 1h ago
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.
{ "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" } } } }arguments 71 linesbefore_building unknown 1h ago
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.
{ "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\", \"カード全体をクリックできる一覧\"" } } }arguments 25 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id4e43da9e6236d6a4.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/4e43da9e6236d6a4/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/4e43da9e6236d6a4?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.