create_recipe
Create recipe
Author a private recipe from nothing. action picks the document: arm configures ONE generation and needs model_id plus config (an arrangement — the creative field, the prompt template, slots and choices); run starts a multi-step run and needs definition (a workflow — its inputs and steps); reprompt configures ONE generation whose prompt a model writes at press time, and needs model_id, config and writer (the rules it writes by, and whether it looks at the pictures). The row is private and stays yours; publish_recipe puts it on the public wall, submit_recipe offers it to a curator.
To save what a finished generation already ran, call save_recipe_from_generation instead; to copy a catalog recipe onto your shelf, remix_recipe. Read get_recipe on a catalog row to see the shape of a working arrangement before writing one. A catalog row never shows its steps, so for a run recipe copy the grammar from this definition, which runs as written: {"schema_version":1,"inputs":[{"type":"text","key":"brief","label":"Brief","required":true,"max_length":2000,"default":""},{"type":"number","key":"count","label":"How many?","min":1,"max":30,"default":3}],"steps":[{"type":"prompt","id":"plan","model":"grok-4.6","system":"You write image prompts: one vivid sentence each, concrete subject, light and lens.","template":"Write {{inputs.count}} prompts for: {{inputs.brief}}","vision":[],"output":{"kind":"list","count":"count"}},{"type":"image","id":"render","model":"seedream-5-lite","prompt":"{{item}}","references":[],"subjects":[],"params":{},"for_each":"steps.plan.items"}]}
A run recipe's model_kind is the room its tile hangs in and must agree with what its last step makes. Validation errors name the field.
Scope
recipes.write— Writes the account's own recipes; every save is private.
Behaviour
- Writes
- Creates or changes items in the caller's own account.
- Adds or updates
- Adds or updates; nothing the caller already has is deleted or overwritten.
- Stays in the account
- Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.
Inputs
actionstring · requiredone of "arm", "run", "reprompt"
model_kindstring · requiredone of "image", "video", "tts", "music"
namestring · requiredat least 1 character · at most 60 characters
descriptionstring · requiredat least 1 character · at most 1000 characters
tagsarray of string · optionalat most 12 items
cover_shapestring · optionalone of "square", "landscape", "portrait"
highlightsarray of string · optionalat most 5 items
model_idstring · optionalone of "seedream-5-lite", "nano-banana-2.1", "nano-banana-2", "gpt-image-2.5-flare", "gpt-image-2.5-sunburst", "gpt-image-2", "nano-banana-2-lite", "seedream-5-pro", "flux-schnell", "flux-2-flex", "flux-2-pro", "flux-2-max", "recraft-v4.1-svg", "recraft-v4.1-pro-svg", "p-image", "grok-imagine-image", "grok-imagine-image-quality", "krea-3", "qwen-image-3-pro", "soul-2", "seedance-2.5", "seedance-2.0", "seedance-2.0-fast", "seedance-2.0-mini", "grok-imagine-video-1.5", "veo-3.1", "veo-3.1-fast", "veo-3.1-lite", "gemini-omni-1.1", "kling-v3-omni-video", "kling-v3-video", "happyhorse-1.0", "wan-3", "wan-3-prime", "gen-4.5", "p-video", "p-video-2", "flux-3", "minimax-h3-max", "p-video-avatar", "p-video-animate", "p-video-replace", "omni-human-1.5", "kling-avatar-v2", "kling-v3-motion-control", "sync-lipsync-2", "kling-lip-sync", "genjutsu-motion-transfer", "genjutsu-object-swap", "elevenlabs-tts", "eleven-v4", "gemini-3.1-flash-tts", "kokoro-82m", "minimax-speech-2.8-hd", "inworld-tts-2", "minimax-music-2.6", "eleven-music"
allowed_modelsarray of string · optionalat least 1 item · at most 24 items
recommended_modelstring or null · optionalconfigobject (schema_version: 1) · optionalfields: schema_version, creative_field, prompt_template, slots, choices, preset_policies, shortcuts
suggested_paramsobject · optionalwriterobject (schema_version: 1) · optionalfields: schema_version, system, vision, max_length
definitionobject · optionalA workflow: `inputs` (what the presser is asked) and `steps` in run order. A step reads earlier values by path: `inputs.<key>`, `steps.<id>` (a step's result, or `steps.<id>.<field>` for one field of it), `steps.<id>.items` (a list or records step's items). A step with `for_each` set to a list path runs once per item and reads `item` (the whole item) or `item.<field>` (one field of a record); a parallel step may read the same position with `steps.<id>.items[index].<field>`. `{{ path }}` interpolates a path into a prompt or template. Every path must be declared before the step that reads it; validation names the step and the field.
Example call
A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_recipe",
"arguments": {
"action": "arm",
"model_kind": "image",
"name": "<name>",
"description": "<description>"
}
}
}Input schema
As the server sends it in tools/list.
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"arm",
"run",
"reprompt"
]
},
"model_kind": {
"type": "string",
"enum": [
"image",
"video",
"tts",
"music"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"maxItems": 12
},
"cover_shape": {
"type": "string",
"enum": [
"square",
"landscape",
"portrait"
]
},
"highlights": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"maxItems": 5
},
"model_id": {
"type": "string",
"enum": [
"seedream-5-lite",
"nano-banana-2.1",
"nano-banana-2",
"gpt-image-2.5-flare",
"gpt-image-2.5-sunburst",
"gpt-image-2",
"nano-banana-2-lite",
"seedream-5-pro",
"flux-schnell",
"flux-2-flex",
"flux-2-pro",
"flux-2-max",
"recraft-v4.1-svg",
"recraft-v4.1-pro-svg",
"p-image",
"grok-imagine-image",
"grok-imagine-image-quality",
"krea-3",
"qwen-image-3-pro",
"soul-2",
"seedance-2.5",
"seedance-2.0",
"seedance-2.0-fast",
"seedance-2.0-mini",
"grok-imagine-video-1.5",
"veo-3.1",
"veo-3.1-fast",
"veo-3.1-lite",
"gemini-omni-1.1",
"kling-v3-omni-video",
"kling-v3-video",
"happyhorse-1.0",
"wan-3",
"wan-3-prime",
"gen-4.5",
"p-video",
"p-video-2",
"flux-3",
"minimax-h3-max",
"p-video-avatar",
"p-video-animate",
"p-video-replace",
"omni-human-1.5",
"kling-avatar-v2",
"kling-v3-motion-control",
"sync-lipsync-2",
"kling-lip-sync",
"genjutsu-motion-transfer",
"genjutsu-object-swap",
"elevenlabs-tts",
"eleven-v4",
"gemini-3.1-flash-tts",
"kokoro-82m",
"minimax-speech-2.8-hd",
"inworld-tts-2",
"minimax-music-2.6",
"eleven-music"
]
},
"allowed_models": {
"type": "array",
"items": {
"type": "string",
"enum": [
"seedream-5-lite",
"nano-banana-2.1",
"nano-banana-2",
"gpt-image-2.5-flare",
"gpt-image-2.5-sunburst",
"gpt-image-2",
"nano-banana-2-lite",
"seedream-5-pro",
"flux-schnell",
"flux-2-flex",
"flux-2-pro",
"flux-2-max",
"recraft-v4.1-svg",
"recraft-v4.1-pro-svg",
"p-image",
"grok-imagine-image",
"grok-imagine-image-quality",
"krea-3",
"qwen-image-3-pro",
"soul-2",
"seedance-2.5",
"seedance-2.0",
"seedance-2.0-fast",
"seedance-2.0-mini",
"grok-imagine-video-1.5",
"veo-3.1",
"veo-3.1-fast",
"veo-3.1-lite",
"gemini-omni-1.1",
"kling-v3-omni-video",
"kling-v3-video",
"happyhorse-1.0",
"wan-3",
"wan-3-prime",
"gen-4.5",
"p-video",
"p-video-2",
"flux-3",
"minimax-h3-max",
"p-video-avatar",
"p-video-animate",
"p-video-replace",
"omni-human-1.5",
"kling-avatar-v2",
"kling-v3-motion-control",
"sync-lipsync-2",
"kling-lip-sync",
"genjutsu-motion-transfer",
"genjutsu-object-swap",
"elevenlabs-tts",
"eleven-v4",
"gemini-3.1-flash-tts",
"kokoro-82m",
"minimax-speech-2.8-hd",
"inworld-tts-2",
"minimax-music-2.6",
"eleven-music"
]
},
"minItems": 1,
"maxItems": 24
},
"recommended_model": {
"anyOf": [
{
"type": "string",
"enum": [
"seedream-5-lite",
"nano-banana-2.1",
"nano-banana-2",
"gpt-image-2.5-flare",
"gpt-image-2.5-sunburst",
"gpt-image-2",
"nano-banana-2-lite",
"seedream-5-pro",
"flux-schnell",
"flux-2-flex",
"flux-2-pro",
"flux-2-max",
"recraft-v4.1-svg",
"recraft-v4.1-pro-svg",
"p-image",
"grok-imagine-image",
"grok-imagine-image-quality",
"krea-3",
"qwen-image-3-pro",
"soul-2",
"seedance-2.5",
"seedance-2.0",
"seedance-2.0-fast",
"seedance-2.0-mini",
"grok-imagine-video-1.5",
"veo-3.1",
"veo-3.1-fast",
"veo-3.1-lite",
"gemini-omni-1.1",
"kling-v3-omni-video",
"kling-v3-video",
"happyhorse-1.0",
"wan-3",
"wan-3-prime",
"gen-4.5",
"p-video",
"p-video-2",
"flux-3",
"minimax-h3-max",
"p-video-avatar",
"p-video-animate",
"p-video-replace",
"omni-human-1.5",
"kling-avatar-v2",
"kling-v3-motion-control",
"sync-lipsync-2",
"kling-lip-sync",
"genjutsu-motion-transfer",
"genjutsu-object-swap",
"elevenlabs-tts",
"eleven-v4",
"gemini-3.1-flash-tts",
"kokoro-82m",
"minimax-speech-2.8-hd",
"inworld-tts-2",
"minimax-music-2.6",
"eleven-music"
]
},
{
"type": "null"
}
]
},
"config": {
"type": "object",
"properties": {
"schema_version": {
"type": "number",
"const": 1
},
"creative_field": {
"anyOf": [
{
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"default": "What should happen?"
},
"placeholder": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"helper_text": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 240
},
{
"type": "null"
}
],
"default": null
},
"max_length": {
"type": "integer",
"minimum": 1,
"maximum": 4000,
"default": 2000
},
"empty_prompt": {
"type": "string",
"maxLength": 4000,
"default": ""
}
},
"required": [
"placeholder"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"default": null
},
"prompt_template": {
"type": "string",
"minLength": 1,
"maxLength": 12000
},
"slots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"helper_text": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 240
},
{
"type": "null"
}
],
"default": null
},
"media_kind": {
"type": "string",
"enum": [
"image",
"video",
"audio"
]
},
"binding": {
"type": "string",
"enum": [
"references",
"first_frame",
"last_frame",
"reference_images",
"reference_videos",
"reference_audios"
]
},
"required": {
"type": "boolean",
"default": false
},
"max_items": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
},
"filled_prompt": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"empty_prompt": {
"type": "string",
"maxLength": 1000,
"default": ""
},
"subject": {
"anyOf": [
{
"type": "object",
"properties": {
"kinds": {
"type": "array",
"items": {
"type": "string",
"enum": [
"character",
"location",
"product",
"prop",
"wardrobe"
]
},
"minItems": 1,
"maxItems": 5
},
"parts": {
"type": "array",
"items": {
"type": "string",
"enum": [
"identity",
"sheet",
"voice"
]
},
"minItems": 1,
"maxItems": 3
},
"max_views": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"default": 1
}
},
"required": [
"kinds",
"parts"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"key",
"label",
"media_kind",
"binding",
"filled_prompt"
],
"additionalProperties": false
},
"maxItems": 6,
"default": []
},
"choices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"helper_text": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 240
},
{
"type": "null"
}
],
"default": null
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
},
"required": [
"value",
"label",
"prompt"
],
"additionalProperties": false
},
"minItems": 2,
"maxItems": 16
},
"max_picks": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"default": 1
},
"shown_when": {
"anyOf": [
{
"type": "object",
"properties": {
"choice": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"values": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"minItems": 1,
"maxItems": 16
}
},
"required": [
"choice",
"values"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"key",
"label",
"options"
],
"additionalProperties": false
},
"maxItems": 12,
"default": []
},
"preset_policies": {
"type": "object",
"properties": {
"style": {
"anyOf": [
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "editable"
},
"required": {
"type": "boolean",
"default": false
},
"default": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"families": {
"type": "array",
"items": {
"type": "string",
"enum": [
"photorealistic",
"cinematic",
"3d_animation",
"cartoon",
"anime",
"pan_tilt",
"zoom_lens",
"dolly_track",
"slide_orbit",
"handheld_body",
"drone_crane",
"specials"
]
},
"minItems": 1
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"helper_text": {
"anyOf": [
{
"type": "string",
"maxLength": 240
},
{
"type": "null"
}
]
}
},
"required": [
"mode"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "fixed"
},
"preset": {
"$ref": "#/properties/config/properties/preset_policies/properties/style/anyOf/0/properties/default"
},
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 240
}
},
"required": [
"mode",
"preset",
"reason"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "unused"
}
},
"required": [
"mode"
],
"additionalProperties": false
}
],
"default": {
"mode": "unused"
}
},
"motion": {
"$ref": "#/properties/config/properties/preset_policies/properties/style",
"default": {
"mode": "unused"
}
},
"lighting": {
"$ref": "#/properties/config/properties/preset_policies/properties/style",
"default": {
"mode": "unused"
}
},
"framing": {
"$ref": "#/properties/config/properties/preset_policies/properties/style",
"default": {
"mode": "unused"
}
}
},
"additionalProperties": false,
"default": {}
},
"shortcuts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 24
},
"icon": {
"anyOf": [
{
"type": "string",
"enum": [
"sparkles",
"music",
"plane",
"utensils",
"dumbbell",
"mic",
"camera",
"film",
"shirt",
"sun",
"moon",
"wand",
"user"
]
},
{
"type": "null"
}
],
"default": null
},
"target": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "guided"
},
"library_key": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"slot_key": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^[a-z][a-z0-9_]*$"
},
"creative_prompt": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"kind",
"library_key",
"slot_key",
"creative_prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "composer"
},
"model_kind": {
"type": "string",
"enum": [
"image",
"video"
]
},
"binding": {
"$ref": "#/properties/config/properties/slots/items/properties/binding"
},
"creative_prompt": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"kind",
"model_kind",
"binding",
"creative_prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "voice"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "subject"
},
"part": {
"type": "string",
"enum": [
"identity",
"sheet"
]
},
"subject_kinds": {
"type": "array",
"items": {
"type": "string",
"enum": [
"character",
"location",
"product",
"prop",
"wardrobe"
]
},
"minItems": 1,
"maxItems": 5
}
},
"required": [
"kind",
"part",
"subject_kinds"
],
"additionalProperties": false
}
]
}
},
"required": [
"key",
"label",
"target"
],
"additionalProperties": false
},
"maxItems": 6,
"default": []
}
},
"required": [
"schema_version",
"prompt_template"
],
"additionalProperties": false
},
"suggested_params": {
"type": "object",
"additionalProperties": {}
},
"writer": {
"type": "object",
"properties": {
"schema_version": {
"type": "number",
"const": 1
},
"system": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"vision": {
"type": "boolean",
"default": true
},
"max_length": {
"type": "integer",
"minimum": 200,
"maximum": 4000,
"default": 2000
}
},
"required": [
"schema_version",
"system"
],
"additionalProperties": false
},
"definition": {
"type": "object",
"additionalProperties": {},
"description": "A workflow: `inputs` (what the presser is asked) and `steps` in run order. A step reads earlier values by path: `inputs.<key>`, `steps.<id>` (a step's result, or `steps.<id>.<field>` for one field of it), `steps.<id>.items` (a list or records step's items). A step with `for_each` set to a list path runs once per item and reads `item` (the whole item) or `item.<field>` (one field of a record); a parallel step may read the same position with `steps.<id>.items[index].<field>`. `{{ path }}` interpolates a path into a prompt or template. Every path must be declared before the step that reads it; validation names the step and the field."
}
},
"required": [
"action",
"model_kind",
"name",
"description"
],
"additionalProperties": false
}Related tools
- publish_recipe
Put a recipe you own on the public wall under your byline, or take it down with `published: false`.
- submit_recipe
Offer a recipe you own to the official catalog, or withdraw the offer with `submitted: false`.
- save_recipe_from_generation
Turn a finished image or clip into a private recipe that makes more of it.
- remix_recipe
Copy a catalog recipe you can read onto your own shelf, as it is today — a curator re-authoring the original later cannot change your copy.
- get_recipe
Get one recipe by id — a look or a guided recipe, with its recommended models, creative guidance, and media slots.