Generation & automations tools
Start a queued pack generation, and read flow, job, and automation status through the Epox MCP server.
Before you start
workspaceId is always resolved server-side from your credential — none of these tools take it as an argument. Every response below shows the parsed data value only; see Developer overview for the full content[0].text envelope every tool result rides in.
Generation
epox_start_pack_generation
Start queued generation from an existing template pack and workspace products. This may consume credits.
Arguments:
- `packId` (string, required) — the template pack to run.
- `productIds` (array of string, required, 1–100 items) — which workspace products to generate for.
- `templateIds` (array of string, optional, up to 100) — restrict the run to specific templates inside the pack; omit to use every template the pack defines.
- `sourceImages` (object, optional) — per-product base-image selection, keyed by product ID. Each value is
{ primaryId?: string, additionalIds?: string[] }(up to 2 additional images). Every key must be one of the product IDs inproductIds, or the call fails. - `resolution` (optional) — one of
0.5K,1K,2K,4K. - `variantsPerProduct` (optional integer, 1–8).
- `executionMode` (optional) —
batchormulti. - `name` (optional string, up to 200 chars) — names the run.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "epox_start_pack_generation",
"arguments": {
"packId": "pack_studio_lifestyle_01",
"productIds": ["prod_9f2a", "prod_c114"],
"templateIds": ["tmpl_kitchen_counter"],
"sourceImages": {
"prod_9f2a": { "primaryId": "img_7d3e", "additionalIds": ["img_1ab2"] }
},
"resolution": "2K",
"variantsPerProduct": 2,
"executionMode": "batch",
"name": "October lifestyle refresh"
}
}
}{
"runId": "pack_run_4c9a",
"flowCount": 2,
"flowIds": ["flow_a1b2", "flow_c3d4"],
"jobIds": ["job_e5f6", "job_g7h8", "job_i9j0", "job_k1l2"],
"expectedImageCount": 4
}Errors specific to this tool:
- `-32602` "Source images must belong to a requested product" — a
sourceImageskey isn't inproductIds. - `-32000` — the pack executor itself couldn't start the run (a bad
packId, a product that no longer exists, etc.); the message is the underlying reason.
epox_list_generation_flows
List generation flow status and linked products. Paginated — see Developer overview → Pagination.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": { "name": "epox_list_generation_flows", "arguments": { "limit": 20 } }
}{
"items": [
{
"id": "flow_a1b2",
"name": "October lifestyle refresh — Oak Dining Table",
"status": "completed",
"productIds": ["prod_9f2a"],
"collectionId": "coll_88bb",
"templateId": "tmpl_kitchen_counter",
"templateName": "Kitchen counter, morning light",
"packId": "pack_studio_lifestyle_01",
"packRunId": "pack_run_4c9a",
"updatedAt": "2026-09-29T14:02:11.000Z"
}
],
"nextCursor": null
}status always reflects the flow's true current state, including for a batch/collection-mode run whose own status column is never written after creation — the tool resolves the real status server-side, so you never need to cross-reference a collection separately.
epox_get_generation_flow
Read one generation flow by ID.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": { "name": "epox_get_generation_flow", "arguments": { "id": "flow_a1b2" } }
}{ "flow": { "id": "flow_a1b2", "name": "October lifestyle refresh — Oak Dining Table", "status": "completed", "productIds": ["prod_9f2a"], "collectionId": "coll_88bb", "templateId": "tmpl_kitchen_counter", "templateName": "Kitchen counter, morning light", "packId": "pack_studio_lifestyle_01", "packRunId": "pack_run_4c9a", "updatedAt": "2026-09-29T14:02:11.000Z" } }An unknown id returns { "flow": null } rather than an error.
epox_list_jobs
List recent generation job status without raw prompts or payloads. Paginated.
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": { "name": "epox_list_jobs", "arguments": { "limit": 10 } }
}{
"items": [
{
"id": "job_e5f6",
"flowId": "flow_a1b2",
"type": "image",
"status": "completed",
"progress": 100,
"attempts": 1,
"maxAttempts": 3,
"error": null,
"createdAt": "2026-09-29T13:58:02.000Z",
"startedAt": "2026-09-29T13:58:04.000Z",
"completedAt": "2026-09-29T14:00:47.000Z"
}
],
"nextCursor": null
}epox_get_job
Read one generation job status without raw prompts or payloads.
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": { "name": "epox_get_job", "arguments": { "id": "job_e5f6" } }
}{ "job": { "id": "job_e5f6", "flowId": "flow_a1b2", "type": "image", "status": "completed", "progress": 100, "attempts": 1, "maxAttempts": 3, "error": null, "createdAt": "2026-09-29T13:58:02.000Z", "startedAt": "2026-09-29T13:58:04.000Z", "completedAt": "2026-09-29T14:00:47.000Z" } }An unknown id returns { "job": null }.
Automations
epox_list_automations
List automation definitions with redacted action configuration. Paginated; optionally filter by enabled (boolean).
{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": { "name": "epox_list_automations", "arguments": { "enabled": true, "limit": 20 } }
}{
"items": [
{
"id": "auto_3f8c",
"name": "New product → lifestyle pack",
"description": "Runs the studio lifestyle pack whenever a product is added from WooCommerce.",
"enabled": true,
"labels": ["catalogue-sync"],
"trigger": "product_created",
"actionTypes": ["generate", "approval"],
"storeConnectionId": "store_conn_11aa",
"updatedAt": "2026-09-20T09:15:00.000Z"
}
],
"nextCursor": null
}epox_get_automation
Read one automation definition with redacted action configuration — same shape as above.
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": { "name": "epox_get_automation", "arguments": { "id": "auto_3f8c" } }
}{ "automation": { "id": "auto_3f8c", "name": "New product → lifestyle pack", "description": "Runs the studio lifestyle pack whenever a product is added from WooCommerce.", "enabled": true, "labels": ["catalogue-sync"], "trigger": "product_created", "actionTypes": ["generate", "approval"], "storeConnectionId": "store_conn_11aa", "updatedAt": "2026-09-20T09:15:00.000Z" } }An unknown id returns { "automation": null }.
epox_list_automation_runs
List recent automation execution status without trigger payloads. Paginated; optionally filter by automationId and/or status (one of pending, running, waiting_approval, waiting_retry, completed, failed, cancelled, imported).
{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": { "name": "epox_list_automation_runs", "arguments": { "automationId": "auto_3f8c", "status": "completed", "limit": 20 } }
}{
"items": [
{
"id": "run_9c2d",
"automationId": "auto_3f8c",
"productId": "prod_9f2a",
"flowId": "flow_a1b2",
"status": "completed",
"actionIndex": 2,
"retryCount": 0,
"error": null,
"isManual": false,
"createdAt": "2026-09-29T13:57:40.000Z",
"startedAt": "2026-09-29T13:57:41.000Z",
"completedAt": "2026-09-29T14:00:50.000Z"
}
],
"nextCursor": null
}