Every grade, report, and history file on this site is a static JSON document you can fetch directly — no key, no signup. The only condition is attribution: “Ratings by Assay — assayratings.com”, visible wherever the data is shown.
| URL | Contents |
|---|---|
/data/index.json | All tokens: letter, trust-model badge, coverage, provisional flag, liquidity, scan timestamp |
/data/tokens/{chain}-{address}.json | Full report: dimensions with findings and evidence, triggered caps, claim verdicts, raw facts (address lowercase) |
/data/history/{chain}-{address}.jsonl | Append-only grade time series, one JSON line per scan |
/data/alerts.json | The changes feed: grade moves, cap triggers, controller changes, claim flips (rolling 300) |
/badge/{chain}-{address}.svg | Live grade badge for embedding — always shows the current grade |
Data refreshes with each scheduled scan (daily). Everything is also in the git repository, where each value is timestamped by commit — the API cannot say anything the history doesn't back.
Embed a live grade badge:
<a href="https://assayratings.com/token.html?t={chain}-{address}">
<img src="https://assayratings.com/badge/{chain}-{address}.svg" alt="Assay grade">
</a>
Badge license: the badge must load live from this domain (never a cached/stale copy), must link to the token's report page, and may not be presented as an endorsement. Selective or stale display is a trademark violation — see terms.
Agents can consume grades natively via the Model Context Protocol. From a checkout of the repository:
{
"mcpServers": {
"assay": { "command": "node", "args": ["apps/mcp/src/server.js"], "cwd": "/path/to/assay-ratings" }
}
}
Read-only tools: list_ratings, get_rating, get_claims, get_changes, about_assay. The server holds no keys and answers only from the published data — the same bytes this site serves.