Frontend (GitHub Pages / Jekyll)
assets/tools/a2a-validator.html
assets/tools/assets/a2a-validator/
a2a-validator.css
a2a-validator.js # controller (input, verdict, render)
validator-client.js # talks to the Worker (POST /validate)
checks.js # required-field + lifecycle checklist logic
(shared) assets/tools/assets/shared/tool-shell.css | tool-shell.js | export.js | storage.js
Cloudflare Worker backend
cloudflare-worker-a2a-validator/worker.js
cloudflare-worker-a2a-validator/wrangler.toml
Registered in the tools hub (assets/tools/index.html) as:
{cat:'ai', icon:'a2a', name:'A2A Agent Validator', href:'a2a-validator.html', … }
It reuses the shared tool-shell design system, so it inherits the ruslanmv.com
look (dark-green hero header, warm-white cards, green accent, rounded corners,
mobile responsive) with no extra setup.
make serve # Jekyll, then open the address it prints, e.g.
# http://localhost:4000/assets/tools/a2a-validator.html
or any static server:
python3 -m http.server 8000
# http://localhost:8000/assets/tools/a2a-validator.html
https://a2a-validator.cloud-data.workers.dev
The frontend defaults to that URL. The page header shows “Worker online”
once /health responds.
The full Worker source is vendored in cloudflare-worker-a2a-validator/worker.js.
To ship an update:
cd cloudflare-worker-a2a-validator
wrangler login # first time only
wrangler deploy
Common extension points in worker.js:
REQUIRED_FIELDS — add/remove required agent-card fieldsvalidateAgentCardShape() — stricter type/format checksnormalizeAgentCardUrl() — also accept /.well-known/agent-card.jsonALLOWED_ORIGINS — add hosts that may call the Worker from the browserEdit the constant in assets/tools/assets/a2a-validator/validator-client.js:
const DEFAULT_WORKER_BASE = 'https://a2a-validator.cloud-data.workers.dev';
or override at runtime:
<script>
window.RMV_A2A_API_BASE = "https://a2a-validator.your-subdomain.workers.dev";
</script>
curl https://a2a-validator.cloud-data.workers.dev/health
curl -X POST "https://a2a-validator.cloud-data.workers.dev/validate" \
-H "Content-Type: application/json" \
--data '{"url":"https://your-agent.example.com"}'
GET to the agent card; nothing is stored or logged.