{"name":"page.anew/anew","slug":"anew","title":"anew","description":"Encode self-contained HTML pages into shareable URLs.","url":"https://mcp.market/server/anew","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-18T22:19:15.000Z","license":"NOASSERTION"},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-21T00:40:55.152Z","last_ok_at":"2026-09-21T00:40:55.152Z","latency_ms":148},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/round/anew.page","website":"https://anew.page","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://anew.page/mcp"}],"packages":[],"tools":[{"name":"anew_read","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"An anew.page URL, or a bare slug. Subdomain, cosmetic-prefix and #hash forms all resolve."},"format":{"type":"string","enum":["text","resource"],"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."}},"required":["url"],"additionalProperties":false}},{"name":"anew_write","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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)."}},"required":["html"],"additionalProperties":false}}],"scan":{"score":77,"grade":"B","scanned_at":"2026-09-20T16:17:21.713Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T16:17:21.682Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 468ms"]},"poisoning":{"score":13,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool anew_write: …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.…"}],"inputs":{"probes":[{"url":"https://anew.page/mcp","reachable":true,"authRequired":false,"latencyMs":468,"serverInfo":{"name":"anew","version":"1.0.2"}}],"packages":[],"repo":{"found":true,"owner":"round","repo":"anew.page","archived":false,"pushedAt":"2026-09-18T22:19:15Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/2340336?v=4","ownerCreatedAt":"2012-09-13T15:32:05Z","license":"NOASSERTION"},"icon":{"url":"https://anew.page/anew.png","source":"registry","width":512,"height":512},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"NOASSERTION","lastPushAt":"2026-09-18T22:19:15.000Z","score":23}}}},"grade_history":[],"reviews":[]}