Save draft
save_draftSave a landing page as a draft and get back a private preview URL to show the user. NOTHING is public until you call publish: a draft is not indexed and records no analytics. Call get_skill_publish BEFORE first use (the workflow, and how to store pageId locally) and get_skill_page_structure BEFORE writing the HTML — saving validates against that spec and rejects the page if it does not comply. A page is ONE HTML document with its CSS and JS inline. Images must be hosted URLs from generate_image or upload_asset — never separate files, never base64 data URIs. The first save creates the page and returns its pageId: SAVE IT (see get_skill_publish) and pass it on every later save, or you will create a second page instead of updating this one. Saving again replaces the draft in place and keeps the same preview URL, so a link you already gave the user keeps working.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"html": "<html>"
},
"name": "save_draft"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | The complete page: one HTML document, CSS in a <style> tag and JS in a <script> tag. Always send the whole thing — a save replaces the draft, it does not patch it. | |
| slug | No | Subdomain for a NEW page (lowercase letters, digits, hyphens — e.g. "acme-launch"). The user chooses it: ask before the first save. Ignored when pageId is set. | |
| pageId | No | The pageId returned by the first save. REQUIRED when working on an existing page; omit only when creating a new one. |