anew

Encode self-contained HTML pages into shareable URLs.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
80%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~1,239Token(工具定義)
~1.6 KB典型回應大小
中等的注意力影響(128k 上下文的 0.97%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "anew": {
      "url": "https://anew.page/mcp"
    }
  }
}

遠端端點

https://anew.page/mcpstreamable-http

它能做什麼

工具清單

工具(4)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟡anew_write(html, javascript)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "minLength": 1,
      "description": "The page: HTML markup with inline CSS — a full document, a fragment, or plain text. Its JavaScript goes in javascript. Encoded into the returned URL."
    },
    "javascript": {
      "type": "string",
      "minLength": 1,
      "description": "Optional client-side JavaScript for the page, as plain source without script tags. The server inserts it immediately before </body> (or at the end when there is no body)."
    }
  },
  "required": [
    "html"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The anew.page URL of the page."
    },
    "bytes": {
      "type": "integer",
      "description": "Encoded URL length in bytes."
    },
    "decoded_bytes": {
      "type": "integer",
      "description": "The submitted HTML in UTF-8 bytes."
    },
    "warning": {
      "type": "string",
      "description": "Not returned: a page past a size limit is refused with an error instead."
    }
  },
  "required": [
    "url",
    "bytes",
    "decoded_bytes"
  ],
  "additionalProperties": false
}
🟢anew_read(url, format)

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.

輸入結構描述

{
  "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
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Canonical anew.page URL for this document."
    },
    "bytes": {
      "type": "integer",
      "description": "Encoded URL length in bytes."
    }
  },
  "required": [
    "url",
    "bytes"
  ],
  "additionalProperties": false
}
🟢anew_page(url)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "An anew.page URL or bare slug to open in the editor. Omit it, or leave it empty, for a new blank page."
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢anew_editor

Open anew from the sidebar: the editor, fullscreen, on a new blank page. Takes no arguments.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本4 個工具
已驗證未記錄版本2 個工具
已驗證未記錄版本2 個工具