publish from an agent_

boomurl is built for coding agents: generate static files, publish in one authenticated HTTP call, get a live HTTPS URL — no build step, no browser. Auth is a bearer API key (boom_sk_…); mint it once, reuse it.

1Request a code

curl -X POST https://boomurl.com/api/v1/keys/request \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

2Mint your API key (secret shown once)

curl -X POST https://boomurl.com/api/v1/keys \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","code":"123456","label":"my-agent"}'
# -> {"key":"boom_sk_..."}

3Publish or update a site (idempotent by name)

curl -X PUT https://boomurl.com/api/v1/sites/my-demo \
  -H "Authorization: Bearer boom_sk_..." \
  -H "Content-Type: application/json" \
  -d '{"files":{"index.html":"<h1>hi</h1>","style.css":"body{font-family:system-ui}"}}'
# -> {"url":"https://boomurl.me/my-demo/","created":true}

More endpoints

GET /api/v1/sites
List your sites.
GET /api/v1/sites/{name}
Status: exists / owned / live URL.
DELETE /api/v1/sites/{name}
Delete a site you own.
POST /api/v1/sites/{name}/domains
Attach your own domain — subdomains need just a CNAME; apex returns nameservers.
GET /api/v1/sites/{name}/domains
List the site's custom domains + live status.
DELETE /api/v1/sites/{name}/domains/{domain}
Disconnect a custom domain.
GET /api/v1/keys
List your keys (no secrets).
DELETE /api/v1/keys/{id}
Revoke a key.

🥪 Use it inside Claude

boomurl ships a hosted MCP connector — add it once and just ask Claude to publish a site.

claude.ai (Connectors)

Settings → Connectors → Add custom connector, paste:

https://boomurl.com/api/mcp

No install, no API key to paste. The first time you ask Claude to publish, it emails you a 6-digit code, you tell Claude the code, and it mints a key and publishes — all in the chat. Then: “publish this as my-site”.

Claude Desktop / Claude Code (local MCP)

Prefer a local server with a fixed key? Add the boomurl-mcp package:

{
  "mcpServers": {
    "boomurl": {
      "command": "npx",
      "args": ["-y", "boomurl-mcp"],
      "env": { "BOOMURL_KEY": "boom_sk_..." }
    }
  }
}

💬 Use it inside ChatGPT

A plain ChatGPT chat can't reach the network from its sandbox, so it can't publish on its own. Pick one of these — the first two let you publish by just asking, the last needs zero setup.

1 · Add the connector (publish from any chat)

ChatGPT → Settings → Apps & Connectors → turn on Developer Mode (Advanced) → Add custom connector, paste:

https://boomurl.com/api/mcp

No login — it mints your own key in the chat (emails you a 6-digit code). After that, any chat: “publish this as my-site”. Same hosted server Claude uses; the tools run on boomurl, so the sandbox limit doesn't apply.

2 · Or use the official GPT

No setup beyond opening it — it runs the same publish flow conversationally.

Open the boomurl GPT →

3 · Or paste it yourself (zero setup)

Have ChatGPT write one self-contained index.html, then paste it at boomurl.com/paste (the box opens focused) — live in seconds.

Notes

  • Binary files: set "base64":true and base64-encode the values.
  • No index.html required — a lone .md/.txt/.pdf (or any folder) becomes a real page. Limits: 50 MB / 500 files. Free sites show a small ad.
  • A key only acts on sites owned by its email. Errors are JSON { error, code }.
  • No network access?ChatGPT's code sandbox can't make outbound requests (curl fails with DNS errors). Most reliable: hand the user a single self-contained index.html (or .md) and tell them to paste it at boomurl.com/paste (the paste box opens focused) — live in seconds. Or use the boomurl GPT to publish without leaving the chat. Any Custom GPT with Actions can use /openapi.json.
  • Custom domains: POST /api/v1/sites/{name}/domains with {"domain":"example.com"} returns two nameservers — have the user set them at their registrar; HTTPS is automatic. Poll the GET until live:true.
  • Machine-readable spec: /openapi.json (drop-in ChatGPT Action) · agent index: /llms.txt