MarloBLOCK
Fixes accessibility violations and proves it. Multi-engine WCAG detection routed by measured accuracy, verified minimal-diff repairs, and a published error rate.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Our false positive rate is 5.6%. Here is how we measured it, and why we are printing it.
[](https://github.com/KarthikSubramanian07/Marlo/actions/workflows/ci.yml) [](calibration/README.md) [](calibration/README.md) [](LICENSE)
Every accessibility tool claims to be accurate. Not one of them will tell you how often it is wrong.
Marlo will. It checks pages against the official W3C ACT rule corpus, then measures itself against that same corpus and commits the result to this repository. The numbers are regenerated in CI on every push. When one gets worse, the build fails.
[trymarlo.pages.dev](https://trymarlo.pages.dev) · the numbers · where Marlo was wrong
The table nobody else publishes
Four engines, 513 official test case outcomes, one code path, no exemptions.
Marlo is third of four. Alfa and axe-core are both more precise and more sensitive, and the router sends 18 rules to axe-core against 20 to Marlo's own engine.
Nobody edited that. Marlo's engine goes through the same harness, on the same corpus, with no special case, because a table where the author's own engine
80e6f9b2c940OBSERVED · 2026-10-13Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add schema -- npx -y @marlo/[email protected]
{
"mcpServers": {
"schema": {
"command": "npx",
"args": [
"-y",
"@marlo/[email protected]"
]
}
}
}Exposed tools (4)
4 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
marlo_coverage | read | Read measured Marlo coverage and engine accuracy. Report the limits alongside findings; this does not scan a page. |
marlo_explain_rule | read | Read one ACT rule and its measured engine accuracy before interpreting a finding. This does not evaluate HTML. |
marlo_list_rules | read | List ACT rule metadata, implementation status, measurements and routing. This is calibration evidence, not a page scan. |
marlo_scan_html | read | Check HTML source against the ACT rules Marlo implements. Returns findings with the |
Trust audit
BLOCKgrade D · trust 66/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (4 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (24)
eval(source: string): unknown;
<style media="all" data-marlo-inlined-from="https://design-system.service.gov.uk/stylesheets/main-41435c0ffee0fe1f01c0fea807b2115a.css">:root{--govuk-breakpoint-mobile: 20rem;--govuk-breakpoint-tablet<style media="all" data-marlo-inlined-from="https://design-system.service.gov.uk/stylesheets/main-41435c0ffee0fe1f01c0fea807b2115a.css">:root{--govuk-breakpoint-mobile: 20rem;--govuk-breakpoint-tabletorigin: `http://127.0.0.1:${String(typeof address === 'object' && address !== null ? address.port : 0)}`,streamable-http
.dependency-cruiser.cjs
.mailmap
.prettierignore
.prettierrc.json
console.log(`marlo: checking token scopes for the ${mode} mode.`);<style media="all" data-marlo-inlined-from="https://www.nasa.gov/_static/??-eJyNjssKwjAQRX/IGFIQcSHu3PoNk+nYhk4eZJKW/r2lKohd6Gq4wzmXq6ekMIZCoWhktxzlq0pcOxdEV5laUfcMnqaYh2fWtjputZSZSfYostMfJW8VEEnEWceu
<input type="hidden" class="gform_hidden" name="state_117" value="WyJ7XCIxXCI6W1wiNDJiNzUwMjNkZDk1ZTk4YjNmYTAzNGE5YmM5ZDgwNjhcIixcIjUwNGE0MTZkNDdmOGNlNGM2NDlkYTdjMDhmYzBiNDBhXCJdLFwiZ2Zvcm1fc3VibWlzc2
@media print{#centralNotice{display:none}}.cn-closeButton{display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUBAMAAAB/pwA+AAAAElBMVEUAAAAQEBDPz88AAABAQEDv7+9oe1vv.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0@media print{#centralNotice{display:none}}.cn-closeButton{display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUBAMAAAB/pwA+AAAAElBMVEUAAAAQEBDPz88AAABAQEDv7+9oe1vv*/@font-face{font-family:"Ionicons";src:url("https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.eot?v=2.0.1");src:url("https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.eot?v=2.*/@font-face{font-family:"Ionicons";src:url("https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.eot?v=2.0.1");src:url("https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.eot?v=2.corpus/real/pages/application-03/index.html
corpus/real/pages/settings-01/index.html
corpus/real/pages/table-01/index.html
docs/screenshots/accuracy-desktop.png
docs/screenshots/home-desktop.png
<p>The CORS request is sent with any credentials included (that is, cookies, X.509 certificates, and the <code>Authorization</code> request header). If the server does not opt into sharing credentials
<pre><div class="buttons"><button class="clip-button" title="Copy to clipboard" aria-label="Copy to clipboard"><i class="tooltiptext"></i></button></div><code class="language-console hljs shell"><span
Gates applied: no_behavioural_pass.
80e6f9b2c940full audit observations/trust-audit/mcp-server/karthiksubramanian07__marlo.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-13 | 80e6f9b2c940 | BLOCK | D | 66 | first audit |
Questions
What is the Marlo MCP server?
Fixes accessibility violations and proves it. Multi-engine WCAG detection routed by measured accuracy, verified minimal-diff repairs, and a published error rate.
What tools does Marlo expose?
4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Marlo safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (66/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does Marlo need?
No credential environment variables were found in its source, so it appears to need none.
How does Marlo run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @marlo/schema at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (80e6f9b2c940), read on 2026-10-13. The repository is watched and re-audited when it changes.