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

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

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

Every tool· This page as Markdown