Show JSON
{
"protocolVersion": "1.0",
"name": "anew",
"description": "Free webpages: websites that live in the URL. Encode a self-contained HTML page into a shareable anew.page URL, or recover the exact HTML from an existing URL.",
"author": "anew",
"wellKnownURI": "https://anew.page/.well-known/agent-card.json",
"url": "https://anew.page/a2a/v1",
"version": "1.0.2",
"provider": {
"organization": "anew",
"url": "https://anew.page/"
},
"documentationUrl": "https://anew.page/llms.txt",
"iconUrl": "https://anew.page/anew.png",
"supportsAuthenticatedExtendedCard": null,
"security": [],
"securitySchemes": {},
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": null
},
"defaultInputModes": [
"text/plain",
"text/html"
],
"defaultOutputModes": [
"text/plain"
],
"skills": [
{
"id": "write",
"name": "Write a page",
"description": "Encode a self-contained HTML document (or fragment, or plain text) into an anew.page URL and return that URL. Each encoding path is deterministic: the same input through the same path always produces the same URL. Different paths use different Brotli encoders, though, so the same HTML may mint different — equally valid — URLs; compare pages by their decoded HTML, never by slug. Inline all CSS, JS, and images (data: URIs, inline SVG, CSS gradients, or emoji) — the page should render alone forever, and each external reference gambles it on someone else's host staying up. One accepted exception: a webfont is far too large to inline, so a font may load from a durable CDN with a system-stack fallback; do not fight a user who asks for one. There is no size limit below the physical ceilings — 65000 URL bytes (the edge severs the request line past it) and 163839 decoded bytes (the server's decode cap) — and past either the endpoint refuses with an actionable error (code url_over_budget or content_too_large). Below them there is one strong warning: a URL over 4000 bytes (or content over 160000 UTF-8 bytes) still mints, renders and serves, and the response says the link may break when shared. Deliver the URL as minted and tell the person; whether to shorten it is their decision. Never remove content, sections or features to clear a warning without asking. Brotli slugs (the endpoint, or a local brotli mint) put a short page in a few hundred URL bytes; raw base64 crosses the warning line at ~2900 HTML bytes — know which encoder you are drafting to before judging a page too big. Returns the URL as plain text — return it to the user verbatim. To revise an existing anew page, its URL is its source: read it, edit that HTML, write it again. The new URL is a separate page and the original keeps working. Read the existing HTML back first by sending its URL as a `url` DataPart, then send the edited document here.",
"tags": [
"html",
"url",
"encode",
"share"
],
"examples": [
"Make a shareable link for <h1>a new internet starts with anew.page</h1>",
"Turn this landing-page HTML into an anew.page URL"
],
"inputModes": [
"text/plain",
"text/html"
],
"outputModes": [
"text/plain"
]
},
{
"id": "read",
"name": "Read a page",
"description": "Pass an anew.page URL, get back the HTML document encoded in it, plus its canonical URL and byte size. To revise an existing anew page, its URL is its source: read it, edit that HTML, write it again. The new URL is a separate page and the original keeps working. Read returns the author's exact bytes — no anew-injected tags, no proxied image srcs — so it re-encodes byte-for-byte. Never re-author from a rendered page, a scraped DOM, or a screenshot: each loses the author's markup, and none is faster than reading the slug. Decoding is local and exact, so any anew URL reads — the page needs no prior visit and no fetch. Selected when the message carries a `url` DataPart and no `html` DataPart, or when its whole text is one bare anew.page URL; any other message writes.",
"tags": [
"html",
"url",
"decode",
"source"
],
"examples": [
"https://anew.page/SLUG",
"{\"url\": \"https://anew.page/SLUG\"}"
],
"inputModes": [
"text/plain"
],
"outputModes": [
"text/plain"
]
}
],
"conformance": true,
"conformance_errors": null,
"homepage": null,
"repository": null,
"license": null,
"pricing": null,
"contact": null,
"id": "9b06ff22-bc54-44f4-934f-53384f5fea1f"
}