submit_shader
Read shader-gen Skill first. Submit a shader generation job to the backend. Returns a jobId immediately; the actual GLSL generation runs server-side. Use the track_progress tool with the returned jobId to wait on or inspect the job.
External MCP spend rule: this tool costs ChatCut credits and starts an async generation job. Only call it when the user's request or confirmation clearly covers this exact generation; do not silently create extra variants, longer durations, higher quality, or additional outputs.
This tool only submits — it does NOT apply the shader to any clip. Applying is a separate edit_item call that the agent does after the user explicitly asks.
See the shader-gen skill (loaded by Skill builtin) for full prompting / type-routing guidance.
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": {
"type": "<type>",
"prompt": "<prompt>"
},
"name": "submit_shader"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Asset name shown in the library. Defaults to a name derived from the prompt. | |
| type | Yes | Whether the shader is a per-clip effect (color, blur, mask, LUT-style grade, distortion) or a between-clip transition (crossfade, wipe, slide, 3D cube). See the shader-gen skill for the full routing table. | |
| prompt | Yes | Natural-language description of the shader. Restate the user's intent in one concrete sentence — e.g. "Chromatic aberration with RGB split", "Cinematic teal-orange color grade", "Smooth crossfade with soft edge". | |
| projectId | No | Full project UUID. Required for external browser work; internal agents may omit. Execution/explicit-timeline calls never change later calls' target. | |
| timelineId | No | Full timeline UUID, not a prefix. Required for browser work, even unplaced assets. Get it from read_project or manage_timelines action="list". Never switches visible timeline. | |
| idempotencyKey | No | Stable key for this browser execution. Reuse only with identical scope and parameters after a lost acknowledgement; applies only to this call. | |
| browserProfileId | No | Optional browser profile override. Omit to select automatically; do not ask the user to choose. | |
| referenceAssetIds | No | Project asset ids the generator should learn from. Image asset id → model LOOKS AT it as visual inspiration (e.g. a still to match for a LUT, a screenshot to mimic for a glitch effect). Effect or transition asset id → backend fetches its code and reuses its style. At most one effect/transition reference per submit, and its kind must match `type`. Pass full UUIDs or short id prefixes. | |
| chatcutSpecialEffectUsed | No | Optional Web-only media-analysis declarations. Omit for ordinary MG/effect/caption work and preserve existing values on unrelated revisions. Transitions and Desktop do not support these readers. caption_v1 is private to caption-owned code. |