{
  "name": "HTMLShare",
  "description": "Publishes an HTML document to a public URL. Send a message containing the document and the reply carries the live link. Anonymous publishes are public for 24 hours, and the creator can make one permanent at the same URL with a free account — claimable for 7 days after it expires. Publishes carrying an htmlshare API key are permanent from the start and tied to that account. Beyond message/send this endpoint answers one extension method, `htmlshare/entitlements`, which returns what the calling account may do when given an API key. Ask it before attempting a capability that may be paid; a refused request also carries a machine-readable `code` in its error `data`, such as `upgrade_required` with an `upgradeUrl`, so a paid refusal is never reported as invalid params. Its result also carries `notYetBuilt` — capabilities the plan grants that nothing implements yet. Do not attempt those, and do not tell a user they have them. Publishing itself is free and is never gated: no capability check is needed before sending a document.",
  "version": "0.0.1",
  "protocolVersion": "1.0",
  "documentationUrl": "https://htmlshare.net/docs/",
  "iconUrl": "https://htmlshare.net/favicon.ico",
  "provider": {
    "organization": "HTMLShare",
    "url": "https://htmlshare.net"
  },
  "supportedInterfaces": [
    {
      "url": "https://api.htmlshare.net/v1/a2a",
      "protocolBinding": "JSONRPC",
      "transport": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "url": "https://api.htmlshare.net/v1/a2a",
  "preferredTransport": "JSONRPC",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/html",
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "publish-html",
      "name": "Publish an HTML page",
      "description": "Takes an HTML document and returns a public URL serving it. Send the document as a text part, or as a data part `{\"html\": \"...\", \"slug\": \"...\"}` — `slug` is optional and needs an API key, since a custom slug lives under an account prefix. `password` (and `passwordExpiresIn`) lock the page behind a password — a paid-plan feature, so it too needs an API key on a paid account; it is a gate, not encryption, so confidential content does not belong behind it. With no credential the page is anonymous: the reply then also carries a claim URL, which is for the person who asked for the publish and never for the page's visitors. Editing, assets and deletion are not part of this skill — they are on the MCP server and the REST API described in the documentation.",
      "tags": [
        "html",
        "publish",
        "hosting",
        "share",
        "url"
      ],
      "examples": [
        "Publish this HTML report and give me the link.",
        "Host this self-contained page so I can send it to a client."
      ],
      "inputModes": [
        "text/html",
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    }
  ]
}