Site Import
Import an existing external website into this project: pages become clean URLs, assets are copied path-preserving, and every reference is rewritten to work on the new origin. Pages are taken from the source host only; assets are also taken from asset subdomains of that host (cdn./static./assets.) and from the WebsitePublisher CDN when the source is itself hosted here. Anything not imported is reported per reason. Runs as a background job with progress polling.
Try it with your AI assistant
Once WebsitePublisher is connected to your AI assistant, paste one of these into the chat. Replace the parts in [brackets] with your own details.
@WebsitePublisher import my existing website [your URL] so I can keep editing it here@WebsitePublisher check my imported site and tell me what still needs fixing before it is fully liveWith WebsitePublisher, import my existing website [your URL] so I can keep editing it hereWith WebsitePublisher, check my imported site and tell me what still needs fixing before it is fully liveWith WebsitePublisher, import my existing website [your URL] so I can keep editing it hereWith WebsitePublisher, check my imported site and tell me what still needs fixing before it is fully liveEndpoints (10)
Start importing an external website into this project. Returns a job_id; poll "status" for progress. Requires an ownership/permission confirmation. Limits: one active import per project at a time, a daily import limit per project that depends on the plan, and page/asset counts capped by the plan tier. Limits you request above the plan are quietly reduced to the plan value — the call still succeeds, and the "errors" report lists what was left out under reason "cap". Do not promise the user a page or asset count before the job reports done.
| Field | Type | Required | Description |
|---|---|---|---|
url |
url | ✓ Yes | |
asset_ref_style |
string | No | |
confirm_ownership |
boolean | ✓ Yes | |
mode |
string | No | |
max_pages |
integer | No | |
max_assets |
integer | No | |
max_asset_mb |
integer | No | |
max_depth |
integer | No | |
overwrite_pages |
boolean | No | |
delay_ms |
integer | No |
Progress snapshot of an import job: status, counts and progress_pct. Poll this for the dashboard progress meter. pages_found and assets_found are DISCOVERY counts, not import counts — a job can report pages_found 18 while the plan allowed only one page to be written, so never report these numbers to the user as "imported". items_done counts items that reached a terminal state, written and skipped alike. Also returns items_excluded: references the crawler did not import at all. A finished job with items_excluded > 0 is NOT a clean import — call "errors" for the breakdown before telling the user the site is ready.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes |
The most recent import job for this project (any status, progress-shaped), or null when the project has never run an import. Lets a dashboard or assistant re-attach without a stored job_id.
No input parameters required.
Error, exclusion and dynamics report for an import job: failed items, skipped items grouped by reason (cap, not_found, external_redirect, not_html, page_exists, duplicate_target = the same page reached through a second URL such as /about and /about.html, user_skipped), references the crawler never imported at all (grouped by reason and host — cross_host, subdomain_page, platform_host_page, platform_host_path, excluded_path, unsupported_type, scan_extensionless, unresolvable), and references to source backend endpoints (PHP/AJAX/REST) that a static import cannot carry over. A large cross_host group means the imported pages still reference the original host for those files.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes |
Checklist of what still needs doing to make an imported site fully operational on WebsitePublisher. Runs rule-based checks on the job and the imported pages: a protected or failed source, builder placeholders in titles and descriptions, forms that are not connected to the platform (mailto forms included), backend features of the source that did not come along, pages left out by the plan, and the domain. Returns items with status "ok" or "action"; every action item has a detail to explain to the user and an ai_instruction with the steps to fix it. Call it after "status" reports done or failed and work through the action items with the user.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | No |
Ask the WebsitePublisher team to finish the imported site for the user ("let us do it"). Call it only after the user explicitly asks for it. Stores one request per import job, once the import has finished, and notifies the team. The basics (builder placeholders, connecting one form, a protected source, linking the domain) are done for free; larger work, such as rebuilding backend features, extra forms or integrations, or design and content changes, gets a quote first. Turnaround is up to five working days. Returns the stored request and these terms: tell them to the user. A second call for the same job returns the existing request and sends nothing.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | No | |
items |
array | No | |
note |
string | No |
List items awaiting review (manual mode): discovered pages/assets with their proposed target paths.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes |
Approve pending items for import (manual mode) and resume the crawl.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes | |
item_ids |
array | No | |
all |
boolean | No |
Skip pending items (manual mode) — they will not be imported.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes | |
item_ids |
array | No | |
all |
boolean | No |
Cancel a queued or running import. Already-imported pages/assets stay in the project.
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
integer | ✓ Yes |
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| start | site-import_start |
| status | site-import_status |
| current | site-import_current |
| errors | site-import_errors |
| polish | site-import_polish |
| polish-request | site-import_polish_request |
| review | site-import_review |
| approve | site-import_approve |
| skip | site-import_skip |
| cancel | site-import_cancel |
Website