Build a website
build_siteFor a business's marketing site only, for example "a site for my bakery". Something people use (upload a photo, AI pictures, sign-in, a tool, a game) is an app: use build_app, never a landing page. Pass the customer's brief in the customer's own words; do not add features the customer did not ask for (no invented sign-up, accounts, subscriptions or payments). First call: nothing starts, a summary returns; after a yes, call with its action.arguments. In hosts that render the build card (MCP Apps or ChatGPT widget), the card tracks progress automatically: do not poll job_status. In hosts without a build card (Claude Code or API), call job_status with the job_id until the job is finished, stopped or failed. Not for changing a built site (use edit).
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": {
"brief": "<brief>",
"idempotency_key": "<idempotency_key>"
},
"name": "build_site"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Console gallery starter slug. | |
| brief | Yes | The customer's request in their own words: what the site is for and any pages, texts, colours or style they named. Do not add features they did not ask for. | |
| theme | No | Console theme slug. | |
| locale | No | Site language (legacy alias for site_language). | |
| as_site | No | True only when Pugi said this sounds like an app (app_suggested) and the person chose a marketing website anyway. | |
| logo_id | No | Selected logo_id returned by make_logo. | |
| max_usd | No | The run ceiling in USD; plan builds are included in the subscription. For credit builds, the most this build may cost. Default 5. Credit accounts pay actual cost, usually less. | |
| language | No | The language the person is writing in, as a BCP 47 tag such as "ru". | |
| without_logo | No | True only when the person said this site should not use the logo they picked. | |
| brief_version | No | With brief_confirmed: the version of the summary the person agreed to, as returned with that summary. | |
| site_language | No | Language for the website content; independent of the chat card language. | |
| brandHandoffId | No | BrandHandoff from logo.pugi.io. | |
| brief_confirmed | No | True only after the person has seen the summary and agreed. In a chat, without it nothing starts and the summary comes back. | |
| idempotency_key | Yes | A unique string naming this job. The same key returns the same job and is never charged twice. |