Public log

htmlradar-mcp

Send web pages to the right people. See how they're read.

npm · fingerprint 8615dffd8467aa1d0ae0ee7c · repository · RSS

16tools
4recorded versions
24dtracked
changed 7d ago

What changed

Changed 2026-10-23 11:51 UTC

7 descriptions rewritten.

--- pinned/create_share
+++ observed/create_share
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Creates an additional tracked link for a document already on HTMLRadar, with its own recipient label, gate, password, expiry and address. One link per recipient is what separates their reading reports. It uploads nothing and creates no second copy of the document, and it cannot publish new markup: it takes a document id, which list_shares returns and share_html returned when the document was first published. The link is live the moment it is returned.",
+   "description": "Creates an additional tracked link for a document already on HTMLRadar, with its own recipient label, gate, password, expiry and address. One link per recipient is what separates their reading reports. It uploads nothing and creates no second copy of the document, and it cannot publish new markup: it takes a document id, which list_shares returns and share_html returned when the document was first published. The link is live the moment it is returned. The answer includes the saved rules and comments state.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
+       "comments": {
+         "description": "Whether readers can comment. Off by default. Turning comments on needs the email gate and a one-time code; who sees comments follows the link.",
+         "enum": [
+           "on",
+           "off"
+         ],
+         "type": "string"
+       },
        "document_id": {
          "description": "The document to make another link for — the document id from list_shares, or the one share_html returned when the document was first published.",
          "type": "string"
--- pinned/get_share
+++ observed/get_share
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "Returns a tracked link's current settings, in the form update_share changes them: who can open it (the full allowed-domain and allowed-address lists), the email gate and its one-time code, whether a password is set (never the password), the end date, the copy lock, the label, who the gate names, whether the sender is emailed on the first open, and the settings version. It reads one of this account's links and changes nothing. Pass the settings version to update_share as expected_settings_version when it replaces a whole list.",
+   "description": "Returns a tracked link's current settings, in the form update_share changes them: who can open it (the full allowed-domain and allowed-address lists), the email gate and its one-time code, whether a password is set (never the password), the end date, the copy lock, comments, the label, who the gate names, whether the sender is emailed on the first open, and the settings version. It reads one of this account's links and changes nothing. The answer includes the saved Rules line and the version used by expected_settings_version.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/list_shares
+++ observed/list_shares
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Lists the account's tracked links, newest first: the slug, the recipient label, the document title, whether it has been opened and when, and the share and document ids the other tools take. This is where the identifiers for a link made in an earlier conversation come from. The `opened` and `last_open` fields answer \"which of my links has nobody opened\" on their own, without a get_share_activity report for each one. Returns at most 50 per call; the `before` cursor pages back through older links.",
+   "description": "Lists the account's tracked links, newest first: the slug, the recipient label, the document title, whether it has been opened and when, and the share and document ids the other tools take. This is where the identifiers for a link made in an earlier conversation come from. The `opened` and `last_open` fields answer \"which of my links has nobody opened\" on their own, without a get_share_activity report for each one. Returns at most 50 per call; the `before` cursor pages back through older links.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/replace_document
+++ observed/replace_document
  {
    "annotations": {
      "destructiveHint": true,
-   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version stays listed in the document's version history on the website. Restoring an earlier version is not available, from Claude or on the website; to go back, replace the contents again with the earlier page. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
+   "description": "Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version stays listed in the document's version history on the website. Restoring an earlier version is not available, from Claude or on the website; to go back, replace the contents again with the earlier page. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/share_html
+++ observed/share_html
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Publishes an HTML document — a deck, report, dashboard, proposal or one-pager — as a tracked HTMLRadar link, and returns two addresses: the link for the recipient, and a dashboard address for the sender. The recipient sees the document as written and never the tracking. The markup goes in `html`; there is no file-path argument, so a document on disk reaches this tool only as markup the caller has already read, which leaves the user's permissions on their own file tools in charge of what is published. By default the recipient is asked for their email address before the document opens, which is a step the person receiving the link has to take. The link is live the moment it is returned. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
+   "description": "Publishes an HTML document — a deck, report, dashboard, proposal or one-pager — as a tracked HTMLRadar link, and returns two addresses: the link for the recipient, and a dashboard address for the sender. The recipient sees the document as written and never the tracking. The markup goes in `html`; there is no file-path argument, so a document on disk reaches this tool only as markup the caller has already read, which leaves the user's permissions on their own file tools in charge of what is published. By default the recipient is asked for their email address before the document opens, which is a step the person receiving the link has to take. The link is live the moment it is returned. The answer includes the saved rules and comments state. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
+       "comments": {
+         "description": "Whether readers can comment. Off by default. Turning comments on needs the email gate and a one-time code; who sees comments follows the link.",
+         "enum": [
+           "on",
+           "off"
+         ],
+         "type": "string"
+       },
        "expires_in_hours": {
          "description": "Link stops working after this many hours.",
          "exclusiveMinimum": 0,
--- pinned/update_share
+++ observed/update_share
  {
    "annotations": {
      "destructiveHint": true,
-   "description": "Changes the settings of a tracked link that has already been sent, on the same link: who can open it (allowed domains and addresses), the email gate and its one-time code, the password, the end date, the copy lock, the label, who the gate names and whether the sender is emailed on the first open. Use this instead of making a new link and switching the old one off. The link, its address and its whole reading history stay the same. Only the settings you name change; every other setting is left as it is, and a setting is removed only when it is named in `clear`. To add or remove addresses or domains, use add_allowed_emails, remove_allowed_emails, add_allowed_email_domains and remove_allowed_email_domains: the server merges them over the stored list and says what was added, removed and not found. Sending allowed_emails or allowed_email_domains replaces the whole list and needs expected_settings_version from get_share, so a change made since is never overwritten. If the answer says the link was changed, call get_share again and re-apply the change from what it shows. A change applies from the next time the page is loaded: someone reading it right now keeps the page they have until they reload. If the sender is on a company team, the team's rules apply to this change exactly as on the website (for example a required one-time code or company domains), and a change that breaks one is refused with the rule named. Narrowing who can open a link, or removing a list, changes what recipients can see.",
+   "description": "Changes the settings of a tracked link that has already been sent, on the same link: who can open it (allowed domains and addresses), the email gate and its one-time code, the password, the end date, the copy lock, the label, who the gate names and whether the sender is emailed on the first open. Comments can be on or off; enabling needs a code-confirmed email gate. The answer includes the saved Rules line. The link, its address and its whole reading history stay the same. Only the settings you name change; every other setting is left as it is, and a setting is removed only when it is named in `clear`. The list arguments add_allowed_emails, remove_allowed_emails, add_allowed_email_domains and remove_allowed_email_domains: the server merges them over the stored list and says what was added, removed and not found. Sending allowed_emails or allowed_email_domains replaces the whole list and needs expected_settings_version from get_share, so a change made since is never overwritten. A stale version is refused without saving. A change applies from the next time the page is loaded: someone reading it right now keeps the page they have until they reload. If the sender is on a company team, the team's rules apply to this change exactly as on the website (for example a required one-time code or company domains), and a change that breaks one is refused with the rule named. Narrowing who can open a link, or removing a list, changes what recipients can see.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
+       "comments": {
+         "description": "Whether readers can comment. Omitted keeps the current choice. Turning comments on needs the email gate and a one-time code; who sees comments follows the link.",
+         "enum": [
+           "on",
+           "off"
+         ],
+         "type": "string"
+       },
        "expected_settings_version": {
          "description": "The settings version get_share showed. The change is made only if the link is still at that version; otherwise nothing is changed and you are told to call get_share again. Required when you replace or clear a whole list (allowed_emails, allowed_email_domains).",
          "maximum": 9007199254740991,
--- pinned/whoami
+++ observed/whoami
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Reports which HTMLRadar account the API key belongs to (its email address), the plan it is on and how many of its free tracked links remain.",
+   "description": "Reports which HTMLRadar account the API key belongs to (its email address), the plan it is on and how many of its free tracked links remain.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},

Changed 2026-10-20 11:43 UTC

5 descriptions rewritten.

--- pinned/create_share
+++ observed/create_share
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "Creates an additional tracked link for a document already on HTMLRadar, with its own recipient label, gate, password, expiry and address. One link per recipient is what separates their reading reports. It uploads nothing and creates no second copy of the document, and it cannot publish new markup: it takes a document id, which list_shares returns and share_html returned when the document was first published. The link is live the moment it is returned.",
+   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Creates an additional tracked link for a document already on HTMLRadar, with its own recipient label, gate, password, expiry and address. One link per recipient is what separates their reading reports. It uploads nothing and creates no second copy of the document, and it cannot publish new markup: it takes a document id, which list_shares returns and share_html returned when the document was first published. The link is live the moment it is returned.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/list_shares
+++ observed/list_shares
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "Lists the account's tracked links, newest first: the slug, the recipient label, the document title, whether it has been opened and when, and the share and document ids the other tools take. This is where the identifiers for a link made in an earlier conversation come from. The `opened` and `last_open` fields answer \"which of my links has nobody opened\" on their own, without a get_share_activity report for each one. Returns at most 50 per call; the `before` cursor pages back through older links.",
+   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Lists the account's tracked links, newest first: the slug, the recipient label, the document title, whether it has been opened and when, and the share and document ids the other tools take. This is where the identifiers for a link made in an earlier conversation come from. The `opened` and `last_open` fields answer \"which of my links has nobody opened\" on their own, without a get_share_activity report for each one. Returns at most 50 per call; the `before` cursor pages back through older links.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/replace_document
+++ observed/replace_document
  {
    "annotations": {
      "destructiveHint": true,
-   "description": "Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version stays listed in the document's version history on the website. Restoring an earlier version is not available, from Claude or on the website; to go back, replace the contents again with the earlier page. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
+   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version stays listed in the document's version history on the website. Restoring an earlier version is not available, from Claude or on the website; to go back, replace the contents again with the earlier page. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/share_html
+++ observed/share_html
  {
    "annotations": {
      "destructiveHint": false,
-   "description": "Publishes an HTML document — a deck, report, dashboard, proposal or one-pager — as a tracked HTMLRadar link, and returns two addresses: the link for the recipient, and a dashboard address for the sender. The recipient sees the document as written and never the tracking. The markup goes in `html`; there is no file-path argument, so a document on disk reaches this tool only as markup the caller has already read, which leaves the user's permissions on their own file tools in charge of what is published. By default the recipient is asked for their email address before the document opens, which is a step the person receiving the link has to take. The link is live the moment it is returned. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
+   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Publishes an HTML document — a deck, report, dashboard, proposal or one-pager — as a tracked HTMLRadar link, and returns two addresses: the link for the recipient, and a dashboard address for the sender. The recipient sees the document as written and never the tracking. The markup goes in `html`; there is no file-path argument, so a document on disk reaches this tool only as markup the caller has already read, which leaves the user's permissions on their own file tools in charge of what is published. By default the recipient is asked for their email address before the document opens, which is a step the person receiving the link has to take. The link is live the moment it is returned. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
--- pinned/whoami
+++ observed/whoami
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "Reports which HTMLRadar account the API key belongs to (its email address), the plan it is on and how many of its free tracked links remain.",
+   "description": "If a result has a line starting 'For the user:', tell the user once, in your own words, and say nothing more about it. Reports which HTMLRadar account the API key belongs to (its email address), the plan it is on and how many of its free tracked links remain.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},

Changed 2026-10-19 13:09 UTC

4 descriptions rewritten, 7 tools added.

+ tool added: add_attachment

--- pinned/get_document
+++ observed/get_document
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "Returns the current contents of a document on HTMLRadar so they can be changed and put back with replace_document. Each image embedded as a data URI appears as a short htmlradar-image reference instead of its data; keep references exactly as they are. It reads only this account's documents and changes nothing.",
+   "description": "Returns the current contents of a document on HTMLRadar so they can be changed and put back with replace_document. Each image embedded as a data URI appears as a short htmlradar-image reference instead of its data; keep references exactly as they are. A page over 5 MB of text even with its images as references is too large to read whole; with `query`, a word or phrase from the part to change, any page returns only the passages where that text appears, which replace_document `edits` can then change. It reads only this account's documents and changes nothing.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
+       },
+       "query": {
+         "description": "Text to find, 1 to 200 characters, matched literally with letter case ignored, such as a product name or a price. Returns up to 20 passages around the matches, and how many there are, instead of the whole page: the way to edit a page too large to read whole.",
+         "maxLength": 200,
+         "minLength": 1,
+         "type": "string"
        }
      },
      "required": [

+ tool added: get_page_guidelines

+ tool added: get_reading_records

+ tool added: get_share

--- pinned/get_share_activity
+++ observed/get_share_activity
  {
    "annotations": {
      "openWorldHint": true,
-   "description": "Reports whether a tracked HTMLRadar link has been opened, by whom, for how long, how far they scrolled, and which sections held their attention. Per viewer it names the five sections with the most reading time, and every figure is rounded down, so no number it prints is above the recorded one. It accepts a share id, a slug or a link; list_shares returns all three.",
+   "description": "Reports whether a tracked HTMLRadar link has been opened, by whom, for how long, how far they scrolled, and which sections held their attention. Per viewer it names the all recorded sections, ordered by reading time. Reading times are rounded down; scroll percentages are rounded to the nearest whole percent. It accepts a share id, a slug or a link; list_shares returns all three.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {

+ tool added: list_attachments

+ tool added: remove_attachment

--- pinned/replace_document
+++ observed/replace_document
  {
    "annotations": {
      "destructiveHint": true,
-   "description": "Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version is kept in the document's history. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
+   "description": "Replaces the contents of a document already on HTMLRadar. Every existing link stays exactly as it is — same address, same settings, same reading history — and serves the new contents from the next time it is opened, so nobody is sent a second link. The new HTML is screened for phishing signals as every upload is, and the previous version stays listed in the document's version history on the website. Restoring an earlier version is not available, from Claude or on the website; to go back, replace the contents again with the earlier page. Recipients may already have read the old contents. Pass either the whole new page in `html`, or `edits`: pieces of text to find in the page get_document returned, each with its replacement and each appearing exactly once. Edits suit small changes to a large page, because only the changes travel. Images that need a login, expiring image addresses and local file paths do not load for readers of the link. Images embedded in the HTML as data URIs always do. On an update, get_document shows each embedded image as a short htmlradar-image reference; keep each one exactly as it is and HTMLRadar puts the image back, so only new images count towards the 5 MB limit.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
+       "announce": {
+         "description": "Tell readers what changed and alert subscribers. Omit to announce only when every live link is company-only; otherwise the replacement is quiet.",
+         "type": "boolean"
+       },
        "document_id": {
          "description": "The document whose contents are being replaced. Every link to it keeps working.",
          "type": "string"
-               "description": "Text in the page get_document returned, copied exactly.",
+               "description": "Text in the page or passages get_document returned, copied exactly; it must appear exactly once in the whole page.",
                "type": "string"
              },
              "replace": {
+       "note": {
+         "description": "Optional note for an announced update, at most 140 characters.",
+         "type": "string"
+       },
        "request_id": {
          "description": "Leave unset on a first attempt. When a previous call failed saying it may still have been applied, pass the request_id that error named: the retry then returns the first result instead of doing it twice.",
          "type": "string"
--- pinned/revoke_share
+++ observed/revoke_share
  {
    "annotations": {
      "destructiveHint": true,
-     "title": "Switch a tracked link off"
+     "title": "Switch a tracked link off, or back on"
    },
-   "description": "Switches off a tracked link that has already been sent. Anyone who opens it afterwards sees that it is no longer available, and the sender is emailed that somebody tried. This changes what a recipient can see. It is reversible — `revoked: false` switches the link back on — and it deletes nothing: the link, its settings and its whole reading history survive. Deleting a link is possible only on the website. A link’s settings cannot be changed after it is made, and switching one off to create a replacement carrying different settings leaves the recipient holding a dead address, so that is a swap the user agrees to explicitly rather than a way to edit a setting.",
+   "description": "Switches off a tracked link that has already been sent. Anyone who opens it afterwards sees that it is no longer available, and the sender is emailed that somebody tried. This changes what a recipient can see. It is reversible — `revoked: false` switches the link back on, so use this tool to turn a switched-off link on again — and it deletes nothing: the link, its settings and its whole reading history survive. Deleting a link is possible only on the website, because it deletes its reading records for good. To change a link's settings, use update_share on the same link: switching one off to make a replacement leaves the recipient holding a dead address.",
    "inputSchema": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
-   "title": "Switch a tracked link off"
+   "title": "Switch a tracked link off, or back on"
  }

+ tool added: update_share

Current tools

Show all 16 tool fingerprints
add_attachment
7f40d6ddb42e539f
create_share
0e88ec5a3736686f
get_document
351fafe3d8ed0891
get_page_guidelines
41f11e789866e3b3
get_reading_records
aca5ed48cb8306b6
get_share
e5185f15ab81dff8
get_share_activity
fd63aabc1b3db758
list_attachments
b31afe9acc310a91
list_documents
8cdc7922f7136634
list_shares
554e426ed40d3709
remove_attachment
47ec66f596ec23f8
replace_document
6b8645747de5938c
revoke_share
9a8a7d58f7c10ac2
share_html
2e503a0466eb9deb
update_share
365db730af6151f7
whoami
1fee040a63667471

Watch this server yourself

If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.

npx -y mcp-pin@0.2.3 -- <your htmlradar-mcp command>

Or subscribe to this page's RSS feed to be told when it changes.

Badge

mcp-pin status badge for htmlradar-mcp

The badge states one fact about time and nothing else. It never claims a server is safe.

[![mcp-pin](https://mcp-pin.gautamkhosla.com/badge/0c7dc1893c0e82f5.svg)](https://mcp-pin.gautamkhosla.com/servers/0c7dc1893c0e82f5.html)