Accessibility check
accessibility-check v1Scores a finished page or asset against the accessibility and technical standards it has been handed, at the versions those standards were named at. It checks alt text, captions, color contrast, heading order, and whether the page can be used from the keyboard. It checks the technical side of the same page too: load time, broken links, images that were never resized, and layouts that fall apart on a phone. Every failure it reports cites the rule it was scored against, so the person reading the report can tell a real problem from somebody's preference.
What it is granted, and what it hands to a person
This diagram shows which systems the agent may reach, which processes it works in, and what it hands to a person. Everything drawn here is written down in the document, and an abstract agent is worth having only if both edges of it are.
The examiner in an assessment: the standard is named and versioned before scoring starts, every item gets a verdict, and every verdict cites the rule it was scored against. The brand-check agent runs the same kind of assessment against the brand guidelines and the claims register, and a sign-off usually reads both reports together. The producing agents fix from this report, and this agent scores the fix.
What is in the package
8 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.
# Where this abstract agent stops This agent is not a signer. It produces the score and named people sign. It does not fix what it finds: the copywriter writes the alt text, the video-editor recuts the captions, the designer changes the color, the web-producer changes the page, and this agent scores the result again. It does not score claims or brand voice, which is the brand-check agent's work. It does not edit the standards it scores against, and it does not decide that a failure is small enough to ship with. ## What always goes to a person - every failure, with the rule attached. This agent does not waive its own findings. - a request to publish something with a known failure. A person decides that, and the decision is recorded with the failure attached. - two standards it was handed that contradict each other, such as a brand color that cannot meet the contrast rule
# The records this abstract agent must leave
This is the contract. An agent implementing `accessibility-check` leaves
the following behind, on every run.
A score per item, each citing the standard, its version and the rule
applied, against the page or asset version it scored. It reports what
passed, what failed, and what it could not test, in a form the signers
read in minutes. A rescore after a fix names what changed and what it
ran again.
An agent that leaves less than this does not implement
`accessibility-check`, whatever else it does well.
# The systems this abstract agent needs
Four systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.
| Role | Access | What the access is for |
|---|---|---|
| the accessibility and technical standards the organization has adopted | read | At their versions. |
| the staging site | read | It scores the page as it will be served. |
| the asset store | read | |
| the review record | write | The scores land where the signers and the producing agents read them. |
Whoever builds an agent from this plugin writes the `mcp.json` that
points these roles at their own systems. Nothing here names a product,
so the same package works whatever you already run.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
"name": "accessibility-check",
"version": "1.0.0",
"description": "The accessibility-check abstract agent. Scores a finished page or asset against the accessibility and technical standards it has been handed, at the versions those standards were named at.",
"author": {
"name": "AgentCatalog",
"url": "https://agentcatalog.com"
},
"homepage": "https://agentcatalog.com/abstract-agents/accessibility-check",
"repository": "https://github.com/jeffrschneider/agentcatalog",
"license": "CC-BY-4.0",
"keywords": [
"abstract-agent",
"reference",
"marketing",
"creative-assets",
"approve-marketing-material",
"brand-guidelines",
"abstract"
],
"extensions": {
"com.agentcatalog.agent": {
"agent": "accessibility-check",
"agentVersion": 1,
"department": "marketing",
"abstract": true,
"works": "The examiner in an assessment: the standard is named and versioned before scoring starts, every item gets a verdict, and every verdict cites the rule it was scored against. The brand-check agent runs the same kind of assessment against the brand guidelines and the claims register, and a sign-off usually reads both reports together. The producing agents fix from this report, and this agent scores the fix.",
"servers": [
{
"name": "the accessibility and technical standards the organization has adopted",
"role": "accessibility-and-technical-standards-the-organization-has-adopted",
"access": "read",
"needs": "At their versions."
},
{
"name": "the staging site",
"role": "staging-site",
"access": "read",
"needs": "It scores the page as it will be served."
},
{
"name": "the asset store",
"role": "asset-store",
"access": "read"
},
{
"name": "the review record",
"role": "review-record",
"access": "write",
"needs": "The scores land where the signers and the producing agents read them."
}
],
"records": [
"A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored.",
"It reports what passed, what failed, and what it could not test, in a form the signers read in minutes.",
"A rescore after a fix names what changed and what it ran again."
],
"escalates": [
"every failure, with the rule attached. This agent does not waive its own findings.",
"a request to publish something with a known failure. A person decides that, and the decision is recorded with the failure attached.",
"two standards it was handed that contradict each other, such as a brand color that cannot meet the contrast rule"
],
"not": [
"This agent is not a signer.",
"It produces the score and named people sign.",
"It does not fix what it finds: the copywriter writes the alt text, the video-editor recuts the captions, the designer changes the color, the web-producer changes the page, and this agent scores the result again.",
"It does not score claims or brand voice, which is the brand-check agent's work.",
"It does not edit the standards it scores against, and it does not decide that a failure is small enough to ship with."
],
"processes": [
{
"process": "ref/mkt/approve-marketing-material",
"activities": [
"Score against the Accessibility Rules"
]
},
{
"process": "ref/mkt/brand-guidelines",
"activities": [
"Check the Colors and the Type"
]
},
{
"process": "ref/mkt/brand-identity",
"activities": [
"Test the System in Use"
]
},
{
"process": "ref/mkt/brand-refresh",
"activities": [
"Check the Remade Material"
]
},
{
"process": "ref/mkt/conversion-experiment",
"activities": [
"Get Sign-Offs"
]
},
{
"process": "ref/mkt/creative-assets",
"activities": [
"Score against the Standards",
"Check the Sized Set"
]
},
{
"process": "ref/mkt/customer-case-study",
"activities": [
"Check the Finished Page"
]
},
{
"process": "ref/mkt/customer-newsletter",
"activities": [
"Proof the Issue"
]
},
{
"process": "ref/mkt/landing-page",
"activities": [
"Score the Page"
]
},
{
"process": "ref/mkt/long-form-content",
"activities": [
"Check the Finished Page"
]
},
{
"process": "ref/mkt/nurture-sequence",
"activities": [
"Score the Messages"
]
},
{
"process": "ref/mkt/onboarding-email-program",
"activities": [
"Check and Sign What Was Made"
]
},
{
"process": "ref/mkt/refresh-content",
"activities": [
"Check the Changed Pages"
]
},
{
"process": "ref/mkt/select-marketing-technology",
"activities": [
"Check It against the Standards"
]
},
{
"process": "ref/mkt/traffic-ad-creative",
"activities": [
"Score the Adapted Set"
]
},
{
"process": "ref/mkt/user-conference",
"activities": [
"Open Registration"
]
},
{
"process": "ref/mkt/video-asset",
"activities": [
"Score against the Standards"
]
},
{
"process": "ref/mkt/webinar",
"activities": [
"Prepare the Recording for Reuse"
]
},
{
"process": "ref/mkt/website-content-update",
"activities": [
"Check the Changed Page"
]
},
{
"process": "ref/mkt/win-back-campaign",
"activities": [
"Score the Messages"
]
}
]
}
}
}
# accessibility-check This is an abstract agent, published as an Agent Plugin. An abstract agent is a job description rather than an implementation. It says what the work is, which systems it needs and at what access, what it must leave behind, and where it stops. Any agent that leaves the records can implement it. The plugin carries eight skills, no `mcp.json`, and everything the abstract agent owes under `com.agentcatalog.agent/`. ## Why there is no mcp.json A conformant server entry in `mcp.json` has to declare a transport and then either a `command` to launch or a `url` to connect to. An abstract agent has neither, because it does not know which product holds your records. Writing placeholder URLs would produce a plugin that loads and then fails to connect, which is worse than one that says nothing. Section 6.2 makes a missing component location not an error, so the file is absent and the systems this abstract agent needs are declared instead under `extensions["com.agentcatalog.agent"].servers`, as a role, an access level and what the access is for. Whoever builds an agent from this plugin writes the `mcp.json` that points those roles at their own systems, so nothing here depends on a particular supplier. ## Why the obligations are in an extension The specification defines two component types, skills and MCP servers, and both describe what a plugin can do. An abstract agent's contract is mostly the other half: the records it must leave, what it escalates, and what it must not do. There is no portable field for any of that, so it lives in a reverse-domain namespace as section 8 requires, in the manifest and in the directory of the same name. ## Where this abstract agent is used `ref/mkt/approve-marketing-material`, `ref/mkt/brand-guidelines`, `ref/mkt/brand-identity`, `ref/mkt/brand-refresh`, `ref/mkt/conversion-experiment`, `ref/mkt/creative-assets`, and 14 more. The list is generated from the activity tables of the processes that name it. https://agentcatalog.com/abstract-agents/accessibility-check
--- name: assess-a-candidate-system description: Reads what a system under consideration produces and says whether that output can meet the standards in force, before anybody commits to it. Use it when running `ref/mkt/select-marketing-technology`. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Assess a candidate system ## What it does Reads what a system under consideration produces and says whether that output can meet the standards in force, before anybody commits to it. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Check It against the Standards** - `ref/mkt/select-marketing-technology`, activity 13 - [Select Marketing Technology](../../../../processes/marketing/select-marketing-technology.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: deliver-the-score-into-a-sign-off description: Puts its score in front of the people who sign, beside the other checks a version has to clear, and says plainly what is still outstanding. Use it when running `ref/mkt/conversion-experiment`. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Deliver the score into a sign off ## What it does Puts its score in front of the people who sign, beside the other checks a version has to clear, and says plainly what is still outstanding. It does not sign anything itself. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Get Sign-Offs** - `ref/mkt/conversion-experiment`, activity 9 - [Run Conversion Experiment](../../../../processes/marketing/conversion-experiment.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-a-design-system description: Scores the parts of a visual system before anything is built from it, which means the palette against the contrast rules and the type against the legibility rules. Use it when running `ref/mkt/brand-guidelines` and `ref/mkt/brand-identity`. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score a design system ## What it does Scores the parts of a visual system before anything is built from it, which means the palette against the contrast rules and the type against the legibility rules. It also scores a page and a deck built from that system, so a rule that only fails in use is caught. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Check the Colors and the Type** - `ref/mkt/brand-guidelines`, activity 9 - [Publish Brand Guidelines](../../../../processes/marketing/brand-guidelines.md) - **Test the System in Use** - `ref/mkt/brand-identity`, activity 12 - [Develop Brand Identity](../../../../processes/marketing/brand-identity.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-a-page description: Reads a page as it will actually be served and scores it against the standards in force, covering alt text, contrast, heading order, keyboard use, load time, broken links, the title and the tracking on it. Use it when running `ref/mkt/customer-case-study` and 5 other reference processes. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score a page ## What it does Reads a page as it will actually be served and scores it against the standards in force, covering alt text, contrast, heading order, keyboard use, load time, broken links, the title and the tracking on it. Every failure cites the rule it was scored against. ## Where it happens The agent does this in five activities across six reference processes. Each one names the activity as that process words it. - **Check the Changed Page** - `ref/mkt/website-content-update`, activity 10 - [Update Website Content](../../../../processes/marketing/website-content-update.md) - **Check the Changed Pages** - `ref/mkt/refresh-content`, activity 18 - [Refresh Published Content](../../../../processes/marketing/refresh-content.md) - **Check the Finished Page** - `ref/mkt/customer-case-study`, activity 17 - [Produce Customer Case Study](../../../../processes/marketing/customer-case-study.md) - `ref/mkt/long-form-content`, activity 13 - [Produce Long-Form Content](../../../../processes/marketing/long-form-content.md) - **Open Registration** - `ref/mkt/user-conference`, activity 7 - [Host User Conference](../../../../processes/marketing/user-conference.md) - **Score the Page** - `ref/mkt/landing-page`, activity 9 - [Publish Landing Page](../../../../processes/marketing/landing-page.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-a-recording description: Scores a recording and the things published with it, which means the captions, the cut, and the page the recording sits on. Use it when running `ref/mkt/webinar`. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score a recording ## What it does Scores a recording and the things published with it, which means the captions, the cut, and the page the recording sits on. ## Where it happens The agent does this in one activity across one reference process. Each one names the activity as that process words it. - **Prepare the Recording for Reuse** - `ref/mkt/webinar`, activity 14 - [Produce Webinar](../../../../processes/marketing/webinar.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-a-sized-set description: Scores every version in a set that was resized or adapted for a different placement, because a version that passes at one size can fail at another. Use it when running `ref/mkt/creative-assets` and `ref/mkt/traffic-ad-creative`. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score a sized set ## What it does Scores every version in a set that was resized or adapted for a different placement, because a version that passes at one size can fail at another. ## Where it happens The agent does this in two activities across two reference processes. Each one names the activity as that process words it. - **Check the Sized Set** - `ref/mkt/creative-assets`, activity 11 - [Produce Creative Assets](../../../../processes/marketing/creative-assets.md) - **Score the Adapted Set** - `ref/mkt/traffic-ad-creative`, activity 7 - [Traffic Ad Creative](../../../../processes/marketing/traffic-ad-creative.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-an-email description: Scores a message the way a subscriber will receive it, checking how it renders, whether its images carry alt text, and whether the contrast and the reading order hold in the clients people actually read it in. Use it when running `ref/mkt/customer-newsletter` and 3 other reference processes. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score an email ## What it does Scores a message the way a subscriber will receive it, checking how it renders, whether its images carry alt text, and whether the contrast and the reading order hold in the clients people actually read it in. ## Where it happens The agent does this in three activities across four reference processes. Each one names the activity as that process words it. - **Check and Sign What Was Made** - `ref/mkt/onboarding-email-program`, activity 7 - [Run Onboarding Email Program](../../../../processes/marketing/onboarding-email-program.md) - **Proof the Issue** - `ref/mkt/customer-newsletter`, activity 11 - [Publish Customer Newsletter](../../../../processes/marketing/customer-newsletter.md) - **Score the Messages** - `ref/mkt/nurture-sequence`, activity 9 - [Build Nurture Sequence](../../../../processes/marketing/nurture-sequence.md) - `ref/mkt/win-back-campaign`, activity 10 - [Run Win-Back Campaign](../../../../processes/marketing/win-back-campaign.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
--- name: score-finished-material description: Scores a finished piece of material against the accessibility and technical standards it was handed, at the versions those standards were named at, and reports what passed, what failed and what could not be tested. Use it when running `ref/mkt/approve-marketing-material` and 3 other reference processes. license: CC-BY-4.0 metadata: agent: accessibility-check agent-version: "1" --- # Score finished material ## What it does Scores a finished piece of material against the accessibility and technical standards it was handed, at the versions those standards were named at, and reports what passed, what failed and what could not be tested. ## Where it happens The agent does this in three activities across four reference processes. Each one names the activity as that process words it. - **Check the Remade Material** - `ref/mkt/brand-refresh`, activity 17 - [Roll Out Brand Refresh](../../../../processes/marketing/brand-refresh.md) - **Score against the Accessibility Rules** - `ref/mkt/approve-marketing-material`, activity 6 - [Approve Marketing Material](../../../../processes/marketing/approve-marketing-material.md) - **Score against the Standards** - `ref/mkt/creative-assets`, activity 8 - [Produce Creative Assets](../../../../processes/marketing/creative-assets.md) - `ref/mkt/video-asset`, activity 11 - [Produce Video Asset](../../../../processes/marketing/video-asset.md) ## What to record A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again. That contract covers every activity this abstract agent takes on, and it is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract agent does not do is in `com.agentcatalog.agent/NOT.md`.
Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.
Point it at your systems
To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 4 roles, and the access level beside each one is the most the work needs.
{
"$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
"mcpServers": {
"accessibility-and-technical-standards-the-organization-has-adopted": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/accessibility-and-technical-standards-the-organization-has-adopted"
},
"staging-site": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/staging-site"
},
"asset-store": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/asset-store"
},
"review-record": {
"type": "streamable-http",
"url": "https://mcp.yourcompany.com/review-record"
}
}
}
The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.
20 processes, 21 activities
The highlighted activities are the ones this abstract agent does. The other activities in each process belong to other abstract agents or to people.
Score against the Accessibility Rules
Check the Colors and the Type
Test the System in Use
Check the Remade Material
Get Sign-Offs
Score against the Standards · Check the Sized Set
Check the Finished Page
Proof the Issue
Score the Page
Check the Finished Page
Score the Messages
Check and Sign What Was Made
Check the Changed Pages
Check It against the Standards
Score the Adapted Set
Open Registration
Score against the Standards
Prepare the Recording for Reuse
Check the Changed Page
Score the Messages
What it writes down
A score per item, each citing the standard, its version and the rule applied, against the page or asset version it scored. It reports what passed, what failed, and what it could not test, in a form the signers read in minutes. A rescore after a fix names what changed and what it ran again.
What it will not do
This agent is not a signer. It produces the score and named people sign. It does not fix what it finds: the copywriter writes the alt text, the video-editor recuts the captions, the designer changes the color, the web-producer changes the page, and this agent scores the result again. It does not score claims or brand voice, which is the brand-check agent's work. It does not edit the standards it scores against, and it does not decide that a failure is small enough to ship with.
These limits are written into the job on purpose, so that everyone adopting the process knows which decisions stay with a person.
Who has built one, and how far each one got
Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.
implements: accessibility-check v1
One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
The closest things in the catalog, by description
Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.
Things that could be the worker: an agent, a packaged product, a plugin.
- The Website Specification — A2A agent Agent · specification.website Read-only A2A agent that answers natural-language questions about The Website Specification and returns matching topics with status, canonical URL,…
Not workers. These are capability that whatever does the job would use, which is a different relationship and kept in its own column for that reason.
- a11y-check MCP server · nexaaly.com · hosted · mirrored from the MCP registry Real-browser WCAG audit that also finds keyboard-inoperable controls axe-core misses, with fixes.
- siteaudit MCP server · thegridwork.github.io · run it yourself · mirrored from the MCP registry Audit websites for accessibility, performance, SEO, design, and mobile. 47 WCAG checks.
- dropcoin-a11y MCP server · freshfos.github.io · hosted · mirrored from the MCP registry Accessibility pre-checks (WCAG/BFSG) in a real browser + statement drafts. Pay per call.