§ for developers
A hosted home for things your code made.
MCP over Streamable HTTPS with OAuth 2.1. OpenAPI for Custom GPTs. A small REST surface for everything else. No SDK required — every endpoint is one curl.
What it is
A serving layer for HTML you generate from any LLM-backed surface. Publish a string of HTML, get a URL. Republish, the URL stays. The page sits behind your handle on livehost.run.
- MCP server speaking Streamable HTTPS
- OAuth 2.1 with PKCE — bring-your-own-tenant friendly
- OpenAPI 3.1 spec for Custom GPT actions
- REST API · 9 endpoints, all idempotent
Install in Claude
Any MCP client can publish anonymously today — no account. Point it at the endpoint below and the model calls publish_html_anon to put HTML on a live URL with a QR. Authenticated tools (update, list, delete) are rolling out.
# streamable-HTTP MCP endpoint — anonymous, no auth
url: https://mcp.makeitrun.ai/anon/mcp
tool: publish_html_anon(html, title?)
# returns a live https://try.clientview.page/<slug> URL
Install in ChatGPT
In ChatGPT Developer Mode, add the same MCP endpoint as a connector. A no-setup Custom GPT (OpenAPI Action) is coming.
# developer mode > connectors > add MCP server
url: https://mcp.makeitrun.ai/anon/mcp
From your own code
One POST publishes a page. Pass HTML in the body, get the live URL back. Re-publish the same slug to update. Auth uses a Firebase ID token today; full OAuth is rolling out.
curl -X POST https://app.makeitrun.ai/api/v1/publish \ -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "slug": "menu", "title": "Hank'\''s cocktail list", "html": "<!doctype html>…" }'
Returns:
{ "space_id": "a1b2c3…", "url": "https://menu.clientview.page", "missing_assets": [] }
Webhooks
We'll fire page.viewed, page.expired, page.reported. Signed with HMAC-SHA256. Retry with exponential back-off.
Open source
The MCP server, the docs site, and the example .claude/agents/ are all on GitHub. PRs welcome.
questions → [email protected]