Thank you for helping measure agent authorization. This page says what a contribution looks like
and what a pull request needs. The rules it applies come from the
constitution; the model it edits is described in
docs/data-model.md.
| Contribution | Where it goes | Guide |
|---|---|---|
| An observation: what a server does for one requirement, with evidence | data/observations/<server>.yaml |
Record an observation |
| A new public MCP server | data/servers/<id>.yaml |
Seed or list a server |
| A specification, draft or EU act on the standards map | data/specs/<id>.yaml |
Add a specification or a relation |
| A relation between two specifications | data/relations.yaml |
same |
| A new revision of the MCP Authorization spec | data/specs/mcp-authorization.yaml, data/features/ |
Add a specification revision |
| A scanner check, a page, a fix | src/, scripts/, tests/ |
Code below |
The site's own contribution page explains the entry
format for observations with examples. No account on the site is needed; everything is a pull
request against main.
Four rules, all enforced by pnpm validate:data and CI:
- Evidence. Every observation carries
evidencea reviewer can open (a URL) or verify (a precise note). A note instead of a URL is acceptable only formanualobservations and must say what was done. - Append-only. An existing observation is never edited or removed. A correction is a new
entry with a newer
observedAt; the newest wins and the history stays visible. - Unknown is a value. Use
unknownto record that you looked and could not tell, andnot-applicablewhen the feature cannot apply. Never writeunsupportedfor "could not tell". - Facts come from the publisher. A spec's title, dates and URLs come from its publisher's
own page. A relation of a judgement type (
competes-with,solves-same-problem-as) carries anoteand, where one exists, asource.
observedBy is your handle. Scanner observations (observedBy: scanner@<version>) come from
pnpm scan and are never edited by hand; prefer pnpm scan <server-id> --write over a
hand-written passive-scan entry, so the evidence is reproducible by anyone.
After editing, run pnpm validate:data and, to see the result, pnpm dev.
The site is Astro with strict TypeScript, Svelte 5 for the few interactive islands, Biome for
lint and format, Vitest for unit tests and Playwright for end-to-end and screenshot tests.
docs/development.md has the setup and every command;
docs/architecture.md has the layout and the data flow.
What every code change keeps true:
- Pages read fully without JavaScript. Islands only where interaction needs them, and the site ships no more than 150 kB of compressed JavaScript per page.
- One token system (
src/styles/tokens.css). Components use tokens, never literal colours; both themes are checked. - Every feature, cell and grade cites a spec revision and section; the build fails on a dangling citation.
src/scanner/is the only code that contacts a server, and only throughpnpm scan. The site build never imports anything that fetches.pnpm checkpasses before a push. It runs data validation, lint, typecheck, unit tests and the build.
Features are specified before they are built: one Spec Kit feature per product under
specs/ (spec.md, plan.md, tasks.md), and every plan checks itself against the
constitution. A change that needs a new field in the model amends the model first, in its own
pull request.
- One topic per pull request. Data and code changes are easiest to review apart.
- Fill in the template: what changes, and the data or code checklist that applies.
- CI must be green: validation, the append-only check, lint, typecheck, unit tests, build, end-to-end tests and the Lighthouse budgets (performance and accessibility at or above 95).
- Screenshot baselines are updated only for intended visual changes, and only from Playwright's
pinned Chromium: either locally or with the
refresh-screenshotslabel on the pull request (see Refresh screenshot baselines).
Reviewing a data pull request means opening every evidence URL; the steps are in Review a data pull request.
- A wrong cell in the atlas: open a pull request with a new observation, or an issue using the observation template.
- A security problem in the site, the workflows or the scanner: follow
SECURITY.mdand do not open a public issue. - Problems in the servers and products listed in the atlas belong to their vendors.
This is a one-person project with agent support, so please allow a few days for a review.