Tool tree
anew_writeAction
Encode a self-contained HTML document or fragment into a new anew.page URL — a sibling page, independent of the current one. Returns the URL as text; does not navigate or mutate the current page. 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. The HTML must be ≤ 160000 UTF-8 bytes and the encoded URL must be ≤ 4000 bytes. Brotli slugs (the endpoint, or a local brotli mint) put a typical page in a few hundred URL bytes, and the endpoint returns an actionable over-limit error (code url_over_budget or content_too_large); raw base64 fits only ~2900 HTML bytes — know which budget you are drafting to, and never cut page content to fit before checking the brotli path.
View tool JSON
{
"name": "anew_write",
"kind": "act",
"impl": "imperative",
"description": "Encode a self-contained HTML document or fragment into a new anew.page URL — a sibling page, independent of the current one. Returns the URL as text; does not navigate or mutate the current page. 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. The HTML must be ≤ 160000 UTF-8 bytes and the encoded URL must be ≤ 4000 bytes. Brotli slugs (the endpoint, or a local brotli mint) put a typical page in a few hundred URL bytes, and the endpoint returns an actionable over-limit error (code url_over_budget or content_too_large); raw base64 fits only ~2900 HTML bytes — know which budget you are drafting to, and never cut page content to fit before checking the brotli path.",
"inputSchema": {
"type": "object",
"properties": {
"html": {
"type": "string",
"minLength": 1,
"description": "A self-contained HTML document, fragment, or plain text. Encoded into the returned URL."
}
},
"required": [
"html"
],
"additionalProperties": false
},
"page": "/"
}anew_readAction
Read the document currently open in this editor — takes no arguments. (Two same-named tools read something else: the anew MCP server's takes a url and reads that page, and a rendered page registers one that reads the page being viewed. This one reads only what's open here.) Returns the editor's current HTML, title, favicon, URL parts, the resulting share URL, and its byte size. Read first when you need to preserve or build on what's already on the page; a full rewrite or restyle can call anew_edit directly.
View tool JSON
{
"name": "anew_read",
"kind": "act",
"impl": "imperative",
"description": "Read the document currently open in this editor — takes no arguments. (Two same-named tools read something else: the anew MCP server's takes a url and reads that page, and a rendered page registers one that reads the page being viewed. This one reads only what's open here.) Returns the editor's current HTML, title, favicon, URL parts, the resulting share URL, and its byte size. Read first when you need to preserve or build on what's already on the page; a full rewrite or restyle can call anew_edit directly.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}anew_editAction
Edit the page currently open in the editor — replace its whole document with the given HTML. This is the in-place editor surface the user is looking at, so use it for any request to create, write, change, or restyle THIS page. (A rendered page registers a same-named tool that rewrites it by navigating to the successor URL; this one edits in place, inside the editor, and mints nothing until you ask. For a separate, brand-new page instead, use anew_write.) Put the page's <title> in your HTML, matching the visible heading — anew_edit adopts it, so no separate anew_title call is needed after a full edit; a <link rel=icon> is adopted too, but anew_icon is the easy way to set an emoji. Scripts never execute in the authoring view (the editor inserts parsed nodes), so use the bottombar's run button to exercise an interactive page. 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. The HTML must be ≤ 160000 UTF-8 bytes and the encoded URL must be ≤ 4000 bytes. Brotli slugs (the endpoint, or a local brotli mint) put a typical page in a few hundred URL bytes, and the endpoint returns an actionable over-limit error (code url_over_budget or content_too_large); raw base64 fits only ~2900 HTML bytes — know which budget you are drafting to, and never cut page content to fit before checking the brotli path.
View tool JSON
{
"name": "anew_edit",
"kind": "act",
"impl": "imperative",
"description": "Edit the page currently open in the editor — replace its whole document with the given HTML. This is the in-place editor surface the user is looking at, so use it for any request to create, write, change, or restyle THIS page. (A rendered page registers a same-named tool that rewrites it by navigating to the successor URL; this one edits in place, inside the editor, and mints nothing until you ask. For a separate, brand-new page instead, use anew_write.) Put the page's <title> in your HTML, matching the visible heading — anew_edit adopts it, so no separate anew_title call is needed after a full edit; a <link rel=icon> is adopted too, but anew_icon is the easy way to set an emoji. Scripts never execute in the authoring view (the editor inserts parsed nodes), so use the bottombar's run button to exercise an interactive page. 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. The HTML must be ≤ 160000 UTF-8 bytes and the encoded URL must be ≤ 4000 bytes. Brotli slugs (the endpoint, or a local brotli mint) put a typical page in a few hundred URL bytes, and the endpoint returns an actionable over-limit error (code url_over_budget or content_too_large); raw base64 fits only ~2900 HTML bytes — know which budget you are drafting to, and never cut page content to fit before checking the brotli path.",
"inputSchema": {
"type": "object",
"properties": {
"html": {
"type": "string",
"minLength": 1,
"description": "A self-contained HTML document, fragment, or plain text. Encoded into the returned URL."
}
},
"required": [
"html"
],
"additionalProperties": false
},
"page": "/"
}anew_titleAction
Change the page title on its own (browser-tab + home-strip title field), without a full edit — not needed right after anew_edit, which already adopts a <title> from your HTML. An empty string clears it.
View tool JSON
{
"name": "anew_title",
"kind": "act",
"impl": "imperative",
"description": "Change the page title on its own (browser-tab + home-strip title field), without a full edit — not needed right after anew_edit, which already adopts a <title> from your HTML. An empty string clears it.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
},
"page": "/"
}anew_iconAction
Set the favicon on its own — a single emoji or an image URL — without a full edit (the easy way to set an emoji icon). Pass exactly one of { emoji } or { url }.
View tool JSON
{
"name": "anew_icon",
"kind": "act",
"impl": "imperative",
"description": "Set the favicon on its own — a single emoji or an image URL — without a full edit (the easy way to set an emoji icon). Pass exactly one of { emoji } or { url }.",
"inputSchema": {
"type": "object",
"properties": {
"emoji": {
"type": "string"
},
"url": {
"type": "string"
}
},
"additionalProperties": false
},
"page": "/"
}anew_linkAction
Return the shareable anew.page URL for the current document without leaving the editor. Optional subdomain/slug/privacy shape the returned string only.
View tool JSON
{
"name": "anew_link",
"kind": "act",
"impl": "imperative",
"description": "Return the shareable anew.page URL for the current document without leaving the editor. Optional subdomain/slug/privacy shape the returned string only.",
"inputSchema": {
"type": "object",
"properties": {
"subdomain": {
"type": "string"
},
"slug": {
"type": "string"
},
"privacy": {
"type": "boolean"
}
},
"additionalProperties": false
},
"page": "/"
}