Publish a 3dCMS scene
publish_sceneUse this when the user wants their scene live as a public link to share, or to update one already live. Publish a saved scene to a PUBLIC, shareable URL so anyone can view it in 3D in a browser — no login required. PUBLISHING IS PARTLY IRREVERSIBLE: the URL is submitted to search engines (IndexNow) the moment it goes live, so it may appear in results even after a takedown. ALWAYS confirm with the user first, then call with confirm:true — without it this tool publishes nothing and returns what WOULD happen. Returns the public site URL plus a per-page URL list. Re-publishing the SAME scene updates its existing public site (the URL stays stable).
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": {
"sceneId": "<sceneId>"
},
"name": "publish_scene"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| listed | No | false publishes UNLISTED: reachable by its link, but kept off Explore and your creator profile, marked noindex and not submitted to search engines. Omit for a normal listed publish. | |
| confirm | No | Must be exactly true to publish. Omit / false to get a needsConfirm summary for the user. | |
| sceneId | Yes | Scene id from list_scenes. | |
| siteSlug | No | Publish onto one of YOUR existing sites by its slug (the part after /sites/ in its URL) instead of this scene's own. When that site shows another scene, the first call answers willReplace: name the site to the user and call again on a yes with confirmReplace set to willReplace.replaceToken. Later publishes of this scene go to that site. | |
| shortLink | No | true also returns shortUrl, a short 3dcms.info/s/<code> link to the site (one stable code per site), for sharing and QR codes. Without confirm, a scene whose site is already live gets its shortUrl at once, no republish. | |
| confirmReplace | No | Only after a reply with needsConfirm and willReplace, and the user's yes naming that site: pass willReplace.replaceToken exactly when it has one (siteSlug publishes), otherwise true. |