# Release, domain, and widget tools | answer.cloud Docs

> Canonical source: [Release, domain, and widget tools | answer.cloud Docs](https://www.answer.cloud/docs/reference/site-configuration-tools/)

Configure releases, promote a processed deploy, inspect custom-domain DNS and HTTPS, and update hosted widget settings with replacement semantics.

reference

Release, domain, and widget tools

Configure releases, promote a processed deploy, inspect custom-domain DNS and HTTPS, and update hosted widget settings with replacement semantics.

Reviewed November 1, 2026

These tools change release routing, custom domains, or the platform-generated widget. Include the selected `organization_id` when required. Inspect the current site before changing configuration and verify the resulting public hostname afterward.

## Release workflow

| Tool                    | Required arguments                  | Optional arguments                     | Returns                                                      |
|-------------------------|-----------------------------------|--------------------------------------|--------------------------------------------------------------|
| `configure_release_workflow` | `site_slug` string, `enabled` boolean | —                                    | Updated site view with `release_workflow`.                   |
| `promote_deploy`        | `site_slug` string                 | `deploy_id` integer or `to_sequence` integer | `site`, `environment: production`, `deploy_id`, `sequence`, `live_url`. |

Enabling independent releases makes automated uploads default to staging. Explicit MCP deploys can select `staging`, `production`, or `both` when valid. A pricing-managed standalone site needs the eligible Pro feature. Companions cannot enable this workflow.

Promotion requires an active workflow, an active production custom domain, and a processed live deploy. If no identifier is supplied, it uses the current staging deploy. Prefer one explicit identifier for the release you reviewed. Promotion materializes generated discovery resources for the current production origin without rebuilding the source artifact.

```json
{ "site_slug": "example-site", "deploy_id": 123 }
```

Send this to `promote_deploy` only for the reviewed target. Inspect `live_url` and check the actual content. `release_workflow_disabled`, `production_domain_required`, and `deploy_not_ready` require configuration or processing changes before another attempt.

## Domain tools

| Tool              | Required arguments           | Optional arguments                  | Returns                         |
|-------------------|-----------------------------|-----------------------------------|--------------------------------|
| `set_custom_domain` | `site_slug`, `domain` string | `include_apex` boolean, default false | Domain status view and `check_queued: true`. |
| `check_domain`    | `site_slug` string           | `domain` string, `refresh` boolean | Domain status view and `check_queued`. |

`domain` is a hostname such as `www.example.com` or `ai.example.com`. `include_apex` additionally configures the root-domain redirect and must be an intentional choice. Use the exact returned records; do not copy another site's infrastructure target.

A domain view contains `id`, `hostname`, `url`, `status`, `headline`, `cert_status`, `cloudfront_status`, `apex_redirect_enabled`, `apex_status`, `last_checked_at`, `error`, and `next`. `checks` contains `ownership_verified`, `dns_target_valid`, `ssl_active`, `http_reachable`, and `apex_http_reachable`. Each `dns_records` item has `type`, `name`, `value`, and `purpose`.

`refresh: true` queues a new check; it does not wait for propagation or certificate issuance. The site's **Domains** screen can show ownership-verification TXT details that are not included in the MCP `dns_records` array. Consult that screen when ownership remains pending.

The custom-domain mutation does not manage companion-kind sites; use the companion's organization integration flow with support when needed. See [domain setup](https://www.answer.cloud/docs/domains/connect/) and [companion domains](https://www.answer.cloud/docs/domains/companion-subdomain/).

## Widget configuration

`configure_widget` requires `site_slug` string and `enabled` boolean. Optional `config` is an object with only these supported fields:

| Field                 | Type and constraints                                   |
|-----------------------|-------------------------------------------------------|
| `css_path`            | Absolute HTTPS URL to deployed widget-scoped CSS.     |
| `chat.button_text`    | String, at most 80 characters.                         |
| `chat.intro_text`     | String, at most 300 characters.                        |
| `chat.button_text_color` | Hex color: #RGB, #RGBA, #RRGGBB, or #RRGGBBAA.       |

```json
{
  "site_slug": "example-site",
  "enabled": true,
  "config": {
    "css_path": "https://example-site.answer.cloud/assets/answercloud-chat.css",
    "chat": { "button_text": "Ask a question", "intro_text": "How can we help?" }
  }
}
```

Omitting `config` preserves stored customization while toggling enabled. Supplying `config` **replaces the stored object**; include all intended existing settings. `{}` explicitly clears customization while preserving the supplied enabled flag. This restricted hosted tool contract differs from the broader external `window.aeoSettings` object.

Returns include `site_slug`, `enabled`, `config`, and `pages_refreshed`, with `next` when a redeploy is needed. `widget_invalid_config` means fix the supplied values. `widget_refresh_failed` means settings were saved but live refresh failed; do not assume the save was rolled back. Verify the theme asset, launcher, and iframe, then use the advised refresh/redeploy path.

See [widget appearance](https://www.answer.cloud/docs/chat/appearance/) and [embed settings](https://www.answer.cloud/docs/reference/embed-settings/).