get_job
Find out if a specific background operation is pending, running, or completed by supplying its operation ID. Use wait mode to block until it finishes.
Instructions
To check whether ONE specific operation you started is finished, pending, or failed, call this with its operationId (the pollUrl param accepts a bare operationId + brandId). Do NOT use list_operations to check a specific op. Poll the status of any background Operation by its operationId or pollUrl. Returns the Operation row: { id, kind, state (pending|running|completed|partially_failed|failed|cancelled), brandId, scopeType, scopeId, progress, result, errors, startedAt, finishedAt, createdAt, updatedAt }. Call repeatedly until state is 'completed' or 'failed' (or 'cancelled'). When completed, the payload you want is in result; on failure, see errors. Pass wait:true to block until the job is done (polls every 3s, capped at ~30s per call) — preferred over calling repeatedly. For longer-running jobs, call get_job again with wait:true to keep polling until it completes. Most generate_* and vibe_edit_* tools (including seo_generate_clusters and seo_generate_keywords) return an operationId — use this to poll them. Supports detail param: short=id+kind+state+progress, medium=adds timestamps+resultRef (key IDs from result, no full payload), full=raw including complete result JSONB.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block and poll until the job reaches a terminal state (completed/failed/partially_failed/cancelled) or the wait window elapses. Polls every 3s. Use this instead of calling get_job repeatedly yourself. | |
| detail | No | Verbosity of returned item(s): "short" = id + primary label + status (cheap list scan); "medium" = key summary fields + counts (a useful glance); "full" = the complete object. Default "full". Lists default to "short" — to zoom into one item, call its get/view tool with detail="medium" or "full". | full |
| brandId | No | Brand ID — required if pollUrl is a bare operationId | |
| pollUrl | Yes | Full poll URL returned by an async tool, OR a bare operationId (plus brandId param). | |
| maxWaitSeconds | No | Requested wait window in seconds, clamped to a hard cap of 30s (default ~30s) regardless of the value passed — the remote gateway kills longer-blocking calls. Only applies when wait=true. For longer operations, call get_job again with wait:true to keep polling. |