putty
API ReferenceArtifacts

The "Molded with putty" badge

The entry's "Molded with putty" badge, as an SVG. **No bearer token is required.** The badge is a link, not a picture: the SVG wraps its contents in an `<a>` pointing at the entry's public page, which is what makes §6.1 loop 1's "each links back" true rather than aspirational. There is no way to obtain a badge for something that is not published, because the badge and the page resolve through the same published-only read. The title is drawn beside the mark when it is short enough to read and is dropped when it is not, so a long title is a clean badge rather than a clipped smear. The title is XML-escaped, and the link's scheme is restricted to `https` (or loopback in dev), so a title or a stored URL cannot inject markup or a `javascript:` href into a badge that other people's pages will embed. A draft, a withdrawn entry, and a missing slug are the same 404.

GET
/showcase/{slug}/badge.svg

The entry's "Molded with putty" badge, as an SVG. No bearer token is required. The badge is a link, not a picture: the SVG wraps its contents in an <a> pointing at the entry's public page, which is what makes §6.1 loop 1's "each links back" true rather than aspirational. There is no way to obtain a badge for something that is not published, because the badge and the page resolve through the same published-only read. The title is drawn beside the mark when it is short enough to read and is dropped when it is not, so a long title is a clean badge rather than a clipped smear. The title is XML-escaped, and the link's scheme is restricted to https (or loopback in dev), so a title or a stored URL cannot inject markup or a javascript: href into a badge that other people's pages will embed. A draft, a withdrawn entry, and a missing slug are the same 404.

Path Parameters

slug*string
Match^[a-z0-9][a-z0-9-]*[a-z0-9]$
Length1 <= length <= 64

Response Body

image/svg+xml

application/json

application/json

application/json

curl -X GET "https://example.com/showcase/string/badge.svg"
"string"

The public showcase page GET

The entry's public page, as HTML. **No bearer token is required** — this is the link a creator pastes into a README, a bio, or a DM, and a page that asked a reader to log in would not be a page anyone shares. The page carries the "Molded with putty" badge (linked back to itself), the entry's own facts, and — when the entry names a chain and a token — links to the two proof surfaces putty already serves: the Receipts page and the Scan page carrying the Verify label. The page renders neither of them, because both are already served by the modules that own them and a second copy would be a second thing to keep true. The page is static HTML with no script and a `Content-Security-Policy` that forbids scripts outright. Every creator-supplied string on it — the title, the summary, the project URL, the token symbol — is HTML escaped, and every link is restricted to `https` (or loopback in dev), so neither a title nor a stored URL can smuggle a `javascript:` scheme or a tag into a page its creator will paste elsewhere. A draft, a withdrawn entry, and a missing slug are the same 404.

The Receipts leaderboard GET

The Receipts leaderboard (§6.2): the most transparent projects, ranked by verified modules, labelled wallets, and verified burns. **No bearer token is required.** Every number is read from the same projection that serves `GET /trust/receipts/{chain}/{token}` — the same module classification, the same change logs, the same honest warnings — so a token cannot claim one count on its Receipts page and a different one here. "Verified modules" means modules the projector **classified** onchain, not modules a creator claims. "Verified burns" means burns in a module's own public change log, so the board never credits a burn it cannot show a receipt for. The `score` is the plain sum of the three counts, unweighted. The plan names the three inputs and no weights, so inventing weights would be inventing economics; an unweighted sum is a **transparency** score, not a value or quality score. The components travel with the row so a reader — or a later decision about the weights — never has to guess how the rank was reached. Candidates are the tokens named on a **published showcase entry**, so the board ranks projects that shipped through putty and chose to be listed. putty has no indexer and does not enumerate the chain: a token that never passed through putty still has its own Receipts page, but it is not ranked here, and the board does not pretend otherwise. `symbol` is attacker-controlled — a token's symbol is arbitrary bytes its deployer chose — so a client that renders it must escape it. A candidate whose chain read fails is counted in `skipped` and omitted from `rows`, rather than ranked zero: a zero would be indistinguishable from "read it, found nothing", which is the same lie a trust page must not tell.