CrawlioCrawlio Docs

Orchestration Commands

Orchestration commands coordinate multi-step operations that go beyond single-page capture. They require Pro tier because they involve privileged access (authenticated sessions), bulk downloads, or multi-crawl comparison.

All three orchestration commands are Pro tier.


/auth <url>

Sign in to a site via a browser sheet, capture the resulting session (cookies, localStorage, sessionStorage), and store it in the encrypted SessionVault. Subsequent crawls against the same domain automatically replay the stored session, enabling authenticated crawls of gated content.

The command opens a helper browser window pointed at the target URL. After the user logs in and confirms, the captured AuthSession is JSON-encoded and persisted to the vault keyed by domain. Only the vault reference (a UUID) crosses the result boundary -- no session material (cookies, tokens, storage) is exposed in the output.

Output

Field Type Description
sessionID UUID Vault reference for the stored session
capturedAt Date When the session was captured
domain String Domain the session applies to (derived from URL host)

The command validates that the captured session is non-empty: at least one cookie or storage entry must be present, otherwise it throws an error prompting the user to ensure they logged in before saving.

CLI

crawlio cmd auth https://dashboard.example.com

MCP

{ "name": "slash_auth", "arguments": { "url": "https://dashboard.example.com" } }

Returns { sessionID: string, capturedAt: string, domain: string }.


/images <url>

Full-page image extraction and bulk download. Renders the page via WebKit, extracts every image URL (<img src>, <source srcset>, CSS background-image), and downloads each image concurrently.

Images are fetched in parallel with a concurrency cap of 8 simultaneous downloads. Each request has a 15-second timeout. Non-2xx responses are silently skipped (counted as skippedCount). The total is capped at 200 images per invocation to prevent runaway downloads.

Output

Field Type Description
downloads [ImageDownload] Successfully downloaded images (see below)
finalURL URL Final URL after redirects
foundCount Int Total image URLs discovered on the page
skippedCount Int Images that failed to download (non-2xx, timeout)
totalBytes Int Total bytes downloaded across all images

Each ImageDownload entry:

Field Type Description
url URL Source URL of the image
data Data Raw image bytes
contentType String? MIME type (e.g. "image/webp", "image/png")
bytes Int Size of this image in bytes

CLI

crawlio cmd images https://unsplash.com/s/photos/nature

MCP

{ "name": "slash_images", "arguments": { "url": "https://unsplash.com/s/photos/nature" } }

Returns { foundCount: number, skippedCount: number, totalBytes: number, downloads: [{ url, contentType, bytes }] }.


/diff <urlA> <urlB>

Capture two URLs and produce both a text diff of their DOM snapshots and a pixel-level visual diff of their screenshots. Captures are performed serially (the shared WKWebView supports one capture at a time).

The text diff uses a proper LCS (Longest Common Subsequence) algorithm to produce unified-diff formatted output with 3 lines of context per hunk. The visual diff uses CoreImage's CIDifferenceBlendMode to compute a per-pixel difference image, with a threshold of 10/255 per channel to absorb sub-pixel rendering jitter.

Output

Field Type Description
textDiff String Unified-diff format comparing the two DOM snapshots
visualDiffPNG Data? Visual diff PNG (nil if either side had no screenshot)
aHash String SHA-256 hex digest of side A's DOM snapshot
bHash String SHA-256 hex digest of side B's DOM snapshot
pixelsChangedPercent Double? Percentage of pixels that differ (0.0--100.0)
linesAdded Int Lines present in B but not A
linesRemoved Int Lines present in A but not B
aFinalURL URL Final URL for side A (after redirects)
bFinalURL URL Final URL for side B (after redirects)

If only one URL is provided, the caller prompts for the second URL before dispatching.

CLI

crawlio cmd diff https://example.com https://staging.example.com

MCP

{ "name": "slash_diff", "arguments": { "urlA": "https://example.com", "urlB": "https://staging.example.com" } }

Returns the full DiffCommandResult JSON.

© 2026 Crawlio. All rights reserved.