Share a page or site as a review link, then read, reply to and resolve the comments people leave.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Read every comment on an HTMLAnnotate page: what each reviewer said, which element it is pinned to (with a CSS selector), the screen size, suggested text changes and replies. Use it when the user asks what their client said, or wants you to make the requested changes. Needs the page's private manage link (returned by share_html or share_url, or pasted by the user).
The private manage link, like https://htmlannotate.com/manage/<page>#k=<key>
Also list comments already marked resolved. Default false.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http htmlannotate https://mcp.htmlannotate.com
Read every comment on an HTMLAnnotate page: what each reviewer said, which element it is pinned to (with a CSS selector), the screen size, suggested text changes and replies. Use it when the user asks what their client said, or wants you to make the requested changes. Needs the page's private manage link (returned by share_html or share_url, or pasted by the user).
| Argument | Type | Description |
|---|---|---|
| manage_link* | string | The private manage link, like https://htmlannotate.com/manage/<page>#k=<key> |
| include_resolved | boolean | Also list comments already marked resolved. Default false. |
{
"type": "object",
"required": [
"manage_link"
],
"properties": {
"manage_link": {
"type": "string",
"description": "The private manage link, like https://htmlannotate.com/manage/<page>#k=<key>"
},
"include_resolved": {
"type": "boolean",
"description": "Also list comments already marked resolved. Default false."
}
}
}Post a reply under one comment on an HTMLAnnotate page, as the page owner. Everyone in that thread gets an email. Confirm the wording with the user first.
| Argument | Type | Description |
|---|---|---|
| text* | string | The reply. |
| number* | integer | The comment number, as shown by get_comments (for example 3 for #3). |
| manage_link* | string | The private manage link for the page. |
{
"type": "object",
"required": [
"manage_link",
"number",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The reply."
},
"number": {
"type": "integer",
"description": "The comment number, as shown by get_comments (for example 3 for #3)."
},
"manage_link": {
"type": "string",
"description": "The private manage link for the page."
}
}
}Mark a comment on an HTMLAnnotate page as resolved (done), or reopen it. Use after the requested change has been made. Everyone in the thread gets an email when it is resolved.
| Argument | Type | Description |
|---|---|---|
| number* | integer | The comment number, as shown by get_comments. |
| resolved | boolean | true to resolve (default), false to reopen. |
| manage_link* | string | The private manage link for the page. |
{
"type": "object",
"required": [
"manage_link",
"number"
],
"properties": {
"number": {
"type": "integer",
"description": "The comment number, as shown by get_comments."
},
"resolved": {
"type": "boolean",
"description": "true to resolve (default), false to reopen."
},
"manage_link": {
"type": "string",
"description": "The private manage link for the page."
}
}
}Publish a complete HTML page (for example a landing page, prototype or one-pager you just wrote) to HTMLAnnotate and get a review link. Anyone with the link can open the page and click any heading, button or image to leave a comment pinned to it, with no account. Pass the whole page as one self-contained HTML document (inline the CSS; images as URLs or data URIs). Returns the review link to send to the client and a private manage link for the owner.
| Argument | Type | Description |
|---|---|---|
| html* | string | The full HTML document, starting with <!doctype html> or <html>. |
| title | string | Optional short name for the page, used in the file name. |
| notify_email | string | Optional. The user's email, so HTMLAnnotate emails them when someone comments. Ask the user before sharing whether they want this. |
{
"type": "object",
"required": [
"html"
],
"properties": {
"html": {
"type": "string",
"description": "The full HTML document, starting with <!doctype html> or <html>."
},
"title": {
"type": "string",
"description": "Optional short name for the page, used in the file name."
},
"notify_email": {
"type": "string",
"description": "Optional. The user's email, so HTMLAnnotate emails them when someone comments. Ask the user before sharing whether they want this."
}
}
}Turn a public web address (a published site, staging link or deploy preview) into an HTMLAnnotate review link where people click any element and comment on it. The page must open in a browser without signing in.
| Argument | Type | Description |
|---|---|---|
| url* | string | The page address, for example https://example.com |
| notify_email | string | Optional. The user's email, so HTMLAnnotate emails them when someone comments. Ask the user before sharing whether they want this. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The page address, for example https://example.com"
},
"notify_email": {
"type": "string",
"description": "Optional. The user's email, so HTMLAnnotate emails them when someone comments. Ask the user before sharing whether they want this."
}
}
}Replace an HTML page on HTMLAnnotate with a new version, on the same review link, so the client sees the update without a new link. The new version starts with no comments; earlier versions keep theirs. Use after making the changes from get_comments. Needs the manage link. Only for pages shared as HTML, not live websites.
| Argument | Type | Description |
|---|---|---|
| html* | string | The full new HTML document. |
| note | string | Optional short note for that email, like what changed. |
| manage_link* | string | The private manage link for the page. |
| notify_reviewers | boolean | Email everyone who commented that a new version is ready. Ask the user first. |
{
"type": "object",
"required": [
"manage_link",
"html"
],
"properties": {
"html": {
"type": "string",
"description": "The full new HTML document."
},
"note": {
"type": "string",
"description": "Optional short note for that email, like what changed."
},
"manage_link": {
"type": "string",
"description": "The private manage link for the page."
},
"notify_reviewers": {
"type": "boolean",
"description": "Email everyone who commented that a new version is ready. Ask the user first."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.