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.comMCP
{ "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/natureMCP
{ "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.comMCP
{ "name": "slash_diff", "arguments": { "urlA": "https://example.com", "urlB": "https://staging.example.com" } }Returns the full DiffCommandResult JSON.