sendhey exposes publishing as two MCP tools over one Streamable HTTP endpoint: publish_page to host an HTML page or file bundle, and create_link to wrap an existing URL in a gated, tracked redirect. Connect any MCP-capable client — Claude Code, Claude Desktop/web, Cowork, ChatGPT developer mode, Cursor, Codex, or Langdock — and both tools work identically everywhere.
The MCP endpoint is https://www.sendhey.app/mcp (Streamable HTTP + OAuth 2.1). The official MCP Registry name is app.sendhey/sendhey. Clients that support OAuth discovery find everything they need from https://www.sendhey.app/.well-known/oauth-protected-resource and https://www.sendhey.app/.well-known/oauth-authorization-server; dynamic client registration is supported for clients that use it. For copy-paste, per-client setup steps (including headless machine credentials and static API keys), see /connect.
publish_pagePublish an HTML page or a file bundle and get back a share URL. Key arguments: html (a single-page shortcut) or files (a map of relative path to content, for a multi-file bundle — include an index.html root when using multiple files), base64 (set true when files values are base64-encoded bytes instead of UTF-8 text), include_qr, label, title/description for the social-preview card, and policy for the access gate and analytics mode. It defaults to open access with no gate.
{
"name": "publish_page",
"arguments": {
"html": "<html>...</html>",
"policy": {
"audience": {
"kind": "password",
"value": "acme-2026",
"delivery": "prompt"
}
}
}
}
create_linkWrap an external URL in a gated, tracked redirect instead of hosting content directly — useful for pointing a client at an existing dashboard, doc, or deployed app under sendhey's access control and analytics. Required arguments are url and mode (currently only "redirect"); it accepts the same policy, include_qr, and label as publish_page.
{
"name": "create_link",
"arguments": {
"url": "https://example.com/client-dashboard",
"mode": "redirect"
}
}
url vs manageUrl vs ownerViewUrlurl is the public, tracked share link — send this to recipients. publish_page also returns manageUrl, the owner-only editor for that page's content on the app origin, gated behind your signed-in session; never share it. create_link has no editable content of its own, so it never returns a manageUrl. When a link is gated (anything other than open access), both tools also return ownerViewUrl — a session-authed preview of the page that skips the recipient's OTP/email gate, for the owner's own use only; never share this one either.
Once a link exists, a connected agent can call get_activity for the view/gate rollup, get_link_history for the append-only change log, or list_links to page through everything a workspace owns.
Pass a stable client_request_id (8-128 URL-safe characters) to publish_page when retrying after an unknown outcome — for example a timeout where the client can't tell if the call succeeded. Reusing the same id for the same intended publish returns the original link instead of creating a duplicate. publish_page can also return warnings — for example a missing asset in a file bundle, or a file that won't render as expected — treat those as real signals to fix and republish, not as noise to ignore.
Any MCP client that supports Streamable HTTP and OAuth: Claude Code, Claude Desktop/web, Cowork, ChatGPT developer mode, Cursor, Codex, and Langdock all connect to the same endpoint and see the same two tools.
Only for headless agents that can't complete a browser sign-in — servers, CI, or scripted automation. Create a static API key or OAuth machine credentials under Settings → Developer access and use either as a Bearer token against the same endpoint.
This page is a reference for building against the MCP contract directly. For the guided, three-step publishing flow a person or a general-purpose assistant would follow instead, see the publishing guide — it explains the same decisions (who can open it, what you're sharing, what you need back) without the tool-argument detail.
Free 14-day Pro trial starts when you publish your first link. No card.
See pricing for plan limits.
Written by Marcel Seibold, founder of sendhey.
About · Privacy · Legal notice · Report illegal content · Terms · DSA