htmldrop — publish HTML/Markdown to a live URL

htmldrop turns an HTML or Markdown document into a hosted page with a real, shareable URL (slug.htmldrop.app, or the user's custom domain on paid plans). No build step. You are reading the agent version of this page; the human version is at htmldrop.app.

Setting this up? Run exactly this, then stop

claude mcp add --transport http htmldrop https://htmldrop.app/mcp

One command. No npm install, no API token, nothing to paste. The first tool call opens a browser sign-in and the client refreshes tokens by itself. For any other MCP client, add https://htmldrop.app/mcp as a remote (streamable HTTP) server — same result. Tools: htmldrop_publish (content → live URL), htmldrop_list, htmldrop_delete.

After it is added, tell the user it is installed and that the tools appear once the client reloads its MCP servers — in Claude Code that means restarting the session. The tools will not be callable in the session that ran the command; that is expected, not a failure.

Do not fall back to the npm package. @htmldrop.app/mcp is the stdio build for CI: it exits immediately unless HTMLDROP_API_TOKEN is set, so without a token it is a dead end rather than an easier path. Use it only in the headless case below.

IMPORTANT: package names

htmldrop's npm packages are scoped: the MCP server is @htmldrop.app/mcp and the CLI is @htmldrop.app/cli. The unscoped npm package named htmldrop is an unrelated third-party project — do not install it. When in doubt, use the exact commands below verbatim.

ChatGPT (custom connector)

Connectors cannot be installed from inside a chat; the user adds it once: Settings → Apps → Advanced → Developer mode, then Settings → Connectors → Create with URL https://htmldrop.app/mcp (OAuth with PKCE + dynamic client registration — no keys to paste). From then on, publishing works by asking in any chat. Without a connector, generate the HTML and tell the user to drop the file on htmldrop.app.

CLI

npx @htmldrop.app/cli deploy   # deploys the current directory
npx @htmldrop.app/cli login    # browser OAuth; needed once

Headless / CI only — requires an API token

Use this only when no browser exists (CI, a container, a headless box). If a browser is available, the one-command HTTP setup above is strictly better. Create an API token (hsk_live_…) at /dashboard/settings → API tokens, then:

HTMLDROP_API_TOKEN=$TOKEN npx -y @htmldrop.app/mcp   # stdio MCP server

REST API (token as Authorization: Bearer) is documented at docs.htmldrop.app/api.

Anonymous one-shot publish (no account)

curl -F "[email protected]" https://htmldrop.app/api/v1/drops

Returns a share URL. Anonymous drops: max 2 MB, live 7 days, may require a Turnstile token when abuse controls are active — prefer the authenticated paths above for reliability.

Limits

TierDropsMax uploadLifetime
Anonymous—2 MB7 days
Free account310 MB30 days rolling
Plus ($12/mo · $99/yr)25100 MBpermanent
Business ($49/mo)100500 MBpermanent

More for machines