Skip to content

anew

by anew.page · remote · no sign-in to list tools · v1.0.0 · published by page.anew

Encode self-contained HTML pages into shareable URLs.

Final · 1Changes · 2

4 tools: 1 do something that can't be undone, 2 change things and 1 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http anew https://anew.page/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "anew_page" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "open": a word for a change.

    What this check looks for
  • The server marks "anew_editor" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "open": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

4 tools

Can't be undone 1Claude Code: ask
  • anew_writePublish a web page: encode one self-contained HTML document (or fragment, or plain text) into an anew.page URL and return that URL.No findings

    Why it is in this group

    • The name "anew_write" says "write": a word for a change.
    • The description's first verb is "publish": a word for a change that another call does not undo.
    • The input takes a statement or command to run (input.javascript), which can change anything it can reach.
    Description, as the server wrote it
    Publish a web page: encode one self-contained HTML document (or fragment, or plain text) into an anew.page URL and return that URL. Use it when the user asks for a page, a site or a link they can open and share. The page is carried in the URL itself — no account, and no copy of the page is kept — so anyone who has the URL can open it; each call also starts a screenshot of the page, cached publicly for link previews. Put markup and inline CSS in html and any JavaScript in javascript as plain source; the server inserts it before </body>. Inline the page's CSS, scripts and images so it renders on its own; a webfont may load from a CDN. 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. Limits: a page whose URL would pass 4000 bytes, or whose HTML passes 1048576 bytes decoded, is refused with an error that states the size and the overage; apps cut longer links short when they are shared. 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.

    Annotations the server declares

    • readOnlyHint: false
    • idempotentHint: false
    • destructiveHint: false
    • openWorldHint: true
Changes things 2Claude Code: ask
  • anew_editorOpen anew from the sidebar: the editor, fullscreen, on a new blank page.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "anew_editor" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open anew from the sidebar: the editor, fullscreen, on a new blank page. Takes no arguments.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: false
    • destructiveHint: false
    • openWorldHint: false
  • anew_pageOpen a page in the anew editor beside the chat, so the user can edit it by hand: pass an anew.page URL to open that page, or nothing for a new blank page.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "anew_page" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open a page in the anew editor beside the chat, so the user can edit it by hand: pass an anew.page URL to open that page, or nothing for a new blank page. The editor reports the page it holds back to the chat after every edit. Call it only when the user asks to open the editor or to edit a page themselves; anew_write and anew_read do everything else.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: false
    • destructiveHint: false
    • openWorldHint: false
Only reads 1Claude Code: allow
  • anew_readPass an anew.page URL, get back the HTML document encoded in it, plus its canonical URL and byte size.No findings

    Why it is in this group

    • The name "anew_read" says "read": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: false
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http anew https://anew.page/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__anew__anew_read"
    ],
    "ask": [
      "mcp__anew__anew_write",
      "mcp__anew__anew_page",
      "mcp__anew__anew_editor"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as anew. Review it before you use it.