Publish site
publish_sitePublish a site to make it live on the web at its platform address (the deployment_url in the response is the exact live URL — report that, never guess a host). Choose a subdomain matching the business name (lowercase, hyphens). IF THE SITE STILL HOLDS SEVERAL DESIGNS you MUST pass variation_id — the design to publish, taken from list_variations (a UUID, not an index). Do not choose for the user: list_variations attaches a thumbnail of each design, so show them and let the user pick. Publishing a design turns it into its own site: Mondovo builds the chosen design into a new site and publishes THAT, so the response carries a different site_id — use that id from then on (the original id stays the design draft, and get_site on it will keep saying unpublished). Calling publish twice reuses the same built site rather than creating another. Sites that already have one design ignore variation_id. A design only has its home page, but its menu links to the rest of the site: when it does, publish_site first BUILDS those pages and then publishes automatically — it returns status "building" with pages_being_built, a job_id and the new site_id. Before publishing a design, tell the user which pages its menu links to and that they will be built. On "building", tell the user which pages are being built, poll get_job with the job_id until "completed" (failed lists pages that could not be built — their menu links are removed; publish says whether the site went live), then poll get_site until "published". Do not call publish_site again meanwhile. If a response carries missing_pages, those menu links have no page and 404 on the live site: tell the user and offer add_pages for them. This tool RETURNS IMMEDIATELY with status "publishing" once the site is accepted for deployment — it does NOT wait for the deploy. Compiling and deploying takes 1-3 minutes and continues server-side even if this conversation ends. Poll get_site (with the returned site_id) every ~15s until status is "published" to get the live URL — or "publish_held", which means the new build crashed in a browser check before going live and was not published (tell the user its publish_message). NEVER call publish_site a second time to check on or hurry along a publish you already started: while one is in flight the publish lock rejects the call, and a transport timeout on this tool does NOT mean the publish failed — it is almost always still running, so poll get_site before concluding anything. If the response is contact_info_needs_confirmation, its reason says why: "placeholders" means contact details that look AI-invented (listed in placeholders) — refine them to the real values first, or (if they are already correct) call again with confirm_contact_info: true; "missing_details" means nothing was invented but the email or phone in missing_fields is absent — ask the user for it, or call again with confirm_contact_info: true if the site should go live without it. Never make up a contact detail. Retrying with the same arguments will NOT clear that warning. Success responses carry after_publish (plan, custom domain, editor link): once get_site reports "published", relay its tell_user to the user.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID to publish | |
| subdomain | No | ||
| user_goal | No | Optional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details. | |
| variation_id | No | variation_id of the design to publish (from list_variations). Required for sites that still hold multiple designs. | |
| confirm_contact_info | No |