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.
Endpoints (8)
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 |
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 |
| review | site-import_review |
| approve | site-import_approve |
| skip | site-import_skip |
| cancel | site-import_cancel |
Website