# Pagelive — full agent reference > Publish AI-built HTML as a branded, tracked, access-controlled link. This file gives an agent everything needed to publish and manage pages programmatically. ## Authentication - Get an API key in the dashboard (API & MCP). Format: `pl_`. Send it as `Authorization: Bearer pl_...`. - The key is scoped to a single workspace. Treat it as a secret. ## MCP endpoint POST https://app.pagelive.io/api/mcp — JSON-RPC 2.0 over HTTP. Headers: - `Authorization: Bearer pl_...` - `Content-Type: application/json` - `Accept: application/json, text/event-stream` Methods: `initialize`, `tools/list`, `tools/call`. ## Tools - publish_page(html, title?, password?, workspace?, domain?, slug?) → { slug, url, workspace }. Publishes new HTML as a live page (noindex). A repeated slug on the same host replaces that page (new version). `workspace` = a team id/slug from list_workspaces (omit for personal). `domain` = a connected custom-domain hostname from list_domains (paid). - update_page(slug, html?, title?, password?) → { slug, url, updated }. Re-publishes to the SAME link; saves a version. - list_pages() → { pages: [{ slug, title, viewCount, status, workspace, url }] }. - get_page_stats(slug) → { slug, url, totalViews, uniqueViewers, topCountries, ... }. - list_form_submissions(slug, limit?) → { replies: [{ submittedAt, country, fields }] }. Any published page may include a plain `
` (no action/endpoint/key needed) — Pagelive wires it at serve time, captures submissions, and emails the owner each one. Publish a proposal with a reply/accept form, share the link, read responses with this tool. - list_workspaces() → { workspaces: [{ id, kind, plan }] }. - list_domains() → { domains: [{ hostname, workspace }] }. ## Example (curl) ``` # 1) list tools curl -s https://app.pagelive.io/api/mcp \ -H "Authorization: Bearer pl_YOURKEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' # 2) publish a page curl -s https://app.pagelive.io/api/mcp \ -H "Authorization: Bearer pl_YOURKEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"publish_page","arguments":{"html":"

Hello

","title":"Demo"}}}' # → { "slug": "ab12cd34", "url": "https://pagelive.site/p/ab12cd34", "workspace": "Personal" } ``` ## Notes - Use any HTTP client with a normal User-Agent. No browser needed. - Published HTML is scanned; obvious phishing is rejected (HTTP 422). - Pages are noindex by default. Add a password or email gate for confidential work. - Free: up to 5 pages + 1 password-protected page. Founding ($7/mo, was $15, price locked for life): the full product — unlimited pages, up to 5 custom domains, full analytics, badge removal, unlimited passwords, email gating + allow-list + reply forms (lead capture), workspace-wide audience list, open alerts + daily digest, version restore. Limited founding seats, then $15/mo. Team ($19/seat/mo): shared workspace, 25 domains.