Consult
consultAsk the Director for editing advice on the project's CURRENT composition — it NEVER writes your composition (you stay the decider). Async: returns a consultJobId; then wait_job(kind="consult", id=consultJobId, projectId=...) surfaces the advisory envelope (assessment / proposals / principles / plan). body.mode: 'advise' = the planner agent (fast, ~30s-2min) returns a plan (framing/cuts/captions/graphics intents) as GUIDANCE you re-author from — no grounded scores, nothing to adopt; 'amend' (default) = the full author→judge→refine loop (minutes) returns a graded assessment + a fix candidate you ADOPT via select_candidate with its candidateIndex. ('explore' is coming soon → use amend.) body.intent = your goal in plain English; optional body.focus (editorial|spatial|brand|caption); body.ifMatch binds to your current etag. Use advise for a fast directional nudge, amend for a grounded, adoptable fix.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"projectId": "<projectId>",
"body": "<body>"
},
"name": "consult"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | POST /projects/:id/consult body. | |
| commandId | No | Retry identity. A call repeated with the same commandId returns the first result instead of acting twice. | |
| projectId | Yes | projectId (path). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | queued = normal; failed = startup failed and the job is already terminal. | |
| projectId | No | ||
| streamUrl | No | Relative SSE endpoint to stream this job's events. | |
| consultJobId | No | Opaque consult job id; poll it for the advisory result. |