Create design
create_designCreate a job (or reuse job_id) and start a generative run. Omitting job_id ALWAYS creates a NEW job — call at most ONCE per user request. If you already have a job_id (including from a prior create_design error), pass it or use update_design; never call create_design again without job_id for the same request. Always tell the user job_id and run_id as soon as this returns. If the result includes concurrency_notice, show that reminder (pay-as-you-go accounts run one design at a time). Do not set wait:true. If the user asked to be emailed (including in the original request), set notify_email:true here immediately — do not wait until after wait_for_run. After create, call wait_for_run ONCE (default ~45s). If still_running and they have not already asked for email, stop polling, show the IDs, and offer notify_run_email. Photos/logos: prefer request_file_upload (or upload_file on stdio) then pass file_ids — never compress or generate a replacement. asset_paths is stdio-only; asset_files base64 is a last resort for tiny files. After completion, return viewer_url and offer export (pdf/html/png) — do not publish unless the user asks.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Job name when creating a new job | |
| wait | No | Avoid. Prefer wait_for_run once after create so the user sees job_id first. | |
| format | Yes | Format slug, e.g. landing-page, report, business-card | |
| job_id | No | Existing job id to reuse. Required when retrying after a partial failure or continuing the same request — omitting this creates a duplicate job. | |
| content | No | Source copy (markdown/text) | |
| file_ids | No | file_… ids from request_file_upload / upload_file after status is ready. Preferred for photos and large files — do not also base64 them. | |
| asset_files | No | Last-resort inline bytes for tiny files. Prefer request_file_upload + file_ids. | |
| asset_paths | No | Local filesystem paths to upload (stdio MCP only). Prefer upload_file then file_ids for large photos. Remote/OAuth MCP cannot read the client's disk — including /mnt/user-data/uploads/ — use request_file_upload + PUT + file_ids instead. Never omit a user photo or generate a replacement. | |
| timeout_sec | No | Only with wait:true. Default 45 seconds, capped at 90. | |
| content_path | No | Local path to a content file (stdio). Remote MCP: put copy in content instead. | |
| instructions | Yes | Design direction / edit notes | |
| notify_email | No | If true, email the account owner when the run finishes. Set this immediately when the user asks to be emailed (including at the start of the request). Do not wait until after wait_for_run. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | ||
| job_id | No | ||
| run_id | Yes | ||
| status | Yes | ||
| log_tail | No | ||
| next_step | No | ||
| charge_usd | No | ||
| created_at | No | ||
| viewer_url | No | ||
| commit_hash | No | ||
| completed_at | No | ||
| notify_email | No | ||
| still_running | No | ||
| concurrency_notice | No | ||
| previous_preview_stale | No |