{
  "schema_version": 1,
  "version": 1,
  "module_code": "videocake",
  "name": "VideoCake Studio",
  "description": "Unified AI video creation studio \u2014 mix prompts, Space data (Shop, Property, Articles, Screencast), Orpheus TTS voices, and 7 declarative VideoCake Recipes to create, revise, and publish videos across VTC.",
  "tools": [
    {
      "name": "videocake.list_recipes",
      "description": "List all 7 declarative VideoCake AI video creation recipes with their required inputs, connected VTC source apps, supported aspect ratios, and baseline credit costs.",
      "parameters": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "all",
              "commerce",
              "social",
              "education",
              "real_estate",
              "editorial",
              "repurposing",
              "localization"
            ]
          }
        }
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "list_documents",
        "collection": "videocake_recipes"
      },
      "examples": [
        "what video recipes does VideoCake have",
        "list AI video templates and recipes"
      ],
      "confirm_required": false
    },
    {
      "name": "videocake.estimate_credits",
      "description": "Calculate an upfront itemized VTC credit estimate (LLM script inference, Orpheus TTS characters, scene image generation, FFmpeg transcoding, storage) before running a recipe.",
      "parameters": {
        "type": "object",
        "properties": {
          "recipe_id": {
            "type": "string",
            "enum": [
              "product_advert",
              "social_reel",
              "tutorial_video",
              "property_showcase",
              "article_to_video",
              "long_to_shorts",
              "multilingual_video"
            ]
          },
          "duration_seconds": {
            "type": "integer",
            "enum": [
              15,
              30,
              60,
              90,
              180
            ]
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ]
          },
          "scene_count": {
            "type": "integer"
          },
          "target_languages_count": {
            "type": "integer",
            "description": "Number of languages for multilingual_video"
          }
        },
        "required": [
          "recipe_id",
          "duration_seconds"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "list_documents",
        "collection": "videocake_pricing_estimates"
      },
      "examples": [
        "how many credits will a 30s product advert cost",
        "estimate credits for a 60 second property showcase video"
      ],
      "confirm_required": false
    },
    {
      "name": "videocake.create_project",
      "description": "Create a new VideoCake project in personal storage (private by default) or the active Space silo.",
      "parameters": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "recipe_id": {
            "type": "string",
            "enum": [
              "product_advert",
              "social_reel",
              "tutorial_video",
              "property_showcase",
              "article_to_video",
              "long_to_shorts",
              "multilingual_video"
            ]
          },
          "prompt": {
            "type": "string",
            "description": "Natural-language creative prompt"
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ]
          },
          "duration_seconds": {
            "type": "integer",
            "enum": [
              15,
              30,
              60,
              90,
              180
            ]
          },
          "voice_id": {
            "type": "string",
            "enum": [
              "tara",
              "leah",
              "jess",
              "mia",
              "zoe",
              "leo",
              "dan",
              "zac"
            ]
          },
          "language": {
            "type": "string"
          },
          "scope": {
            "type": "string",
            "enum": [
              "personal",
              "space"
            ],
            "description": "Defaults to personal (private by default)"
          },
          "source_ref": {
            "type": "object",
            "description": "Optional source entity reference from Shop, Property, Articles, or Screencast",
            "properties": {
              "app_code": {
                "type": "string"
              },
              "record_id": {
                "type": "string"
              }
            }
          }
        },
        "required": [
          "title",
          "recipe_id",
          "prompt"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "create_document",
        "collection": "videocake_projects",
        "defaults": {
          "aspect_ratio": "9:16",
          "duration_seconds": 30,
          "voice_id": "tara",
          "language": "en",
          "visibility": "private",
          "project_status": "draft"
        }
      },
      "examples": [
        "create a VideoCake project for a 30s social reel about our coffee roastery",
        "start a property showcase video for listing prop_102"
      ],
      "confirm_required": true
    },
    {
      "name": "videocake.run_recipe",
      "description": "Execute a declarative VideoCake Recipe pipeline on a project: LLM storyboard & script via /api/v1/apps/ai/chat, Orpheus voice synthesis, scene assembly, and ZAPI media job transcoding.",
      "parameters": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "VideoCake project ID"
          },
          "recipe_id": {
            "type": "string",
            "enum": [
              "product_advert",
              "social_reel",
              "tutorial_video",
              "property_showcase",
              "article_to_video",
              "long_to_shorts",
              "multilingual_video"
            ]
          },
          "brand_kit_id": {
            "type": "string"
          },
          "auto_captions": {
            "type": "boolean"
          },
          "project_status": {
            "type": "string",
            "enum": [
              "queued",
              "generating_script",
              "synthesizing_voice",
              "rendering",
              "ready"
            ]
          }
        },
        "required": [
          "document_id",
          "recipe_id"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "update_document",
        "collection": "videocake_projects"
      },
      "examples": [
        "run the product_advert recipe on my project",
        "generate the video scenes and voiceover now"
      ],
      "confirm_required": true
    },
    {
      "name": "videocake.get_project_status",
      "description": "Get real-time step-by-step recipe execution status, scene storyboard, credit usage, and preview URL for a VideoCake project.",
      "parameters": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "VideoCake project ID"
          }
        },
        "required": [
          "document_id"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "get_document",
        "collection": "videocake_projects"
      },
      "examples": [
        "check status of my VideoCake project",
        "is my video ready to preview"
      ],
      "confirm_required": false
    },
    {
      "name": "videocake.request_revision",
      "description": "Apply natural-language revision instructions to tweak specific scenes, pacing, hook text, or voiceover narration and re-render only affected segments.",
      "parameters": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "VideoCake project ID"
          },
          "revision_instruction": {
            "type": "string",
            "description": "What to change in the script, scenes, captions, or voice"
          },
          "scene_index": {
            "type": "integer",
            "description": "Optional 1-based scene number to target"
          },
          "voice_id": {
            "type": "string",
            "enum": [
              "tara",
              "leah",
              "jess",
              "mia",
              "zoe",
              "leo",
              "dan",
              "zac"
            ]
          }
        },
        "required": [
          "document_id",
          "revision_instruction"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "update_document",
        "collection": "videocake_projects"
      },
      "examples": [
        "make scene 1 punchier and change the CTA to Book a Tour Today",
        "switch narration voice to Leo and shorten scene 3"
      ],
      "confirm_required": true
    },
    {
      "name": "videocake.publish_video",
      "description": "Export or publish a completed VideoCake video to a destination: Reels, Social Hub, VTC Academy, Space Ads library, or the public VideoCake Network Featured Gallery (requires explicit user confirmation).",
      "parameters": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "VideoCake project ID"
          },
          "destination": {
            "type": "string",
            "enum": [
              "reels",
              "socialhub",
              "academy",
              "space_ads",
              "videocake_network",
              "download_mp4"
            ]
          },
          "visibility": {
            "type": "string",
            "enum": [
              "private",
              "space",
              "network",
              "public"
            ],
            "description": "Videos are private by default; set public/network only when explicitly requested"
          },
          "caption": {
            "type": "string"
          }
        },
        "required": [
          "document_id",
          "destination"
        ]
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "update_document",
        "collection": "videocake_projects"
      },
      "examples": [
        "publish this finished video to VTC Reels",
        "send completed video to Social Hub for scheduling",
        "publish my video to the VideoCake Network featured gallery"
      ],
      "confirm_required": true
    },
    {
      "name": "videocake.list_my_videos",
      "description": "List the user's VideoCake projects and rendered videos across personal storage and the active Space.",
      "parameters": {
        "type": "object",
        "properties": {
          "filter": {
            "type": "object",
            "description": "Optional exact-match filter e.g. {\"recipe_id\":\"social_reel\",\"project_status\":\"ready\"}"
          },
          "limit": {
            "type": "integer",
            "description": "Max records (1-50, default 20)"
          }
        }
      },
      "permissions": [
        "member"
      ],
      "zapi": {
        "action": "list_documents",
        "collection": "videocake_projects"
      },
      "examples": [
        "show my VideoCake videos",
        "list my draft video projects"
      ],
      "confirm_required": false
    },
    {
      "name": "generate_viral_hooks",
      "description": "Generate 3 scroll-stopping opening hooks for the first 2 seconds (curiosity_gap, contrarian_claim, visual_proof) with spoken line, 3-word kinetic text overlay, visual B-roll cue, and predicted retention score (2 credits).",
      "method": "POST",
      "endpoint": "/api/v1/apps/videocake/hooks",
      "parameters": {
        "topic": "Video topic or creative prompt",
        "recipe_id": "Optional VideoCake recipe ID",
        "platform": "tiktok | reels | shorts | youtube",
        "tone": "bold | friendly | authoritative | contrarian",
        "target_audience": "Target viewer persona"
      }
    },
    {
      "name": "generate_cover_thumbnails",
      "description": "Select high-contrast candidate frames, apply bold 3-word hook overlay + subject rim glow + brand badge, and export matching 9:16 Reels/TikTok cover (1080x1920) and 16:9 YouTube thumbnail (1280x720) (4 credits).",
      "method": "POST",
      "endpoint": "/api/v1/apps/videocake/thumbnails",
      "parameters": {
        "video_url": "Source MP4 URL",
        "project_id": "Optional project ID",
        "hook_text": "Bold 3-word hook text overlay",
        "accent_color": "Hex brand accent color (e.g. #d946ef)",
        "glow_subject": "Boolean to enable subject rim glow",
        "timestamp_sec": "Frame timestamp in seconds (e.g. 1.2)"
      }
    },
    {
      "name": "sync_clips_to_music_beats",
      "description": "Import a backing track from VTC Music App (?music_url=&bpm=) or select a built-in BPM-mapped track, detect beat/drop markers, snap clip cuts to beat drops, and configure -14 dB auto-ducking under Orpheus TTS voiceover (2 credits).",
      "method": "POST",
      "endpoint": "/api/v1/apps/videoeditor/beat-sync",
      "parameters": {
        "track_id": "Built-in track ID or trk_vtc_music_import",
        "music_url": "Optional custom MP3 URL from music.apps.vtc.com",
        "bpm": "Track tempo in BPM (40..240)",
        "duration_sec": "Timeline duration in seconds",
        "voiceover_present": "Boolean to enable -14 dB sidechain auto-ducking"
      }
    },
    {
      "name": "generate_talking_avatar",
      "description": "Generate a lip-synced AI talking avatar or PIP presenter bubble via AvatarMaker (8 credits/sec).",
      "method": "POST",
      "endpoint": "/api/v1/apps/avatarmaker/generate",
      "parameters": {
        "avatar_id": "maya_ugc | marcus_founder | elena_studio | devon_creator | custom_photo",
        "script": "Spoken script for Orpheus TTS lip-sync",
        "voice_id": "tara | leah | jess | mia | zoe | leo | dan | zac",
        "layout_mode": "full | circle_bottom_right | circle_bottom_left | split_screen",
        "duration_sec": "5..60"
      }
    }
  ]
}