Serveur MCP

anew

page.anew/anew
Design et création Outils développeur Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Encodes self-contained HTML, CSS, and JavaScript pages into deterministic shareable URLs and can read them back.

anew_read
Read a page (anew.page URL → its HTML source)
Pass an anew.page URL, get back the HTML document encoded in it, plus its canonical URL and byte size. (Two in-page tools share this name and take no arguments: the editor's reads the document open in the editor, and a rendered page's reads the page being viewed. This one takes a url and reads that page.) 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.
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'minLength': 1, 'description': 'An anew.page URL, or a bare slug. Subdomain, cosmetic-prefix and #hash forms all resolve.'}, 'format': {'enum': ['text', 'resource'], 'type': 'string', 'default': 'text', 'description': 'How the document rides back. "text" (default) is one plain text block. "resource" is one embedded-resource block ({type:"resource"}, mimeType text/html) — the typed MCP form for callers that want the page tagged as HTML rather than loose text. Same bytes both ways.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['url', 'bytes'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Canonical anew.page URL for this document.'}, 'bytes': {'type': 'integer', 'description': 'Encoded URL length in bytes.'}}, 'additionalProperties': False}
anew_write
Write a page (HTML → anew.page URL)
Put markup and inline CSS in html. For calculations, inputs, buttons, or other interactivity, put raw JavaScript in javascript. Never put <script> tags or inline event handlers in html, and never wrap javascript in <script> tags; the server inserts it before </body>. 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 1048576 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 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 it with anew_read first, then call this with the edited HTML.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'minLength': 1, 'description': 'Self-contained HTML markup and inline CSS only; no script elements, inline event handlers, or executable JavaScript. Encoded into the returned URL.'}, 'javascript': {'type': 'string', 'minLength': 1, 'description': 'Optional raw client-side JavaScript. Populate for any interactive behavior. Source only — no script tags. The server inserts it immediately before </body> (or at the end when there is no body).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['url', 'bytes', 'decoded_bytes'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'The anew.page URL — return verbatim.'}, 'bytes': {'type': 'integer', 'description': 'Encoded URL length in bytes.'}, 'warning': {'type': 'string', 'description': 'Present when the page minted past a warning line (URL past 4000 bytes — a chosen margin, past which some apps may truncate or refuse the link): the URL works and serves. 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.'}, 'decoded_bytes': {'type': 'integer', 'description': 'The submitted HTML in UTF-8 bytes.'}}, 'additionalProperties': False}
Ajouté
anew_read
17 September 2026 12:54
Ajouté
anew_write
17 September 2026 12:54