Tool tree
gradeNot graded
get_projectAnswer
Read the current AssetsCurator storyboard: title, aspect, scenes, and every asset id, kind, role, provider, and status. Use before editing so you target the correct sceneId or assetId.
View tool JSON
{
"name": "get_project",
"kind": "answer",
"impl": "imperative",
"description": "Read the current AssetsCurator storyboard: title, aspect, scenes, and every asset id, kind, role, provider, and status. Use before editing so you target the correct sceneId or assetId.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}inspect_assetAnswer
Read one asset and its parent scene, including preview URL, prompt, attribution, and YouTube metadata.
View tool JSON
{
"name": "inspect_asset",
"kind": "answer",
"impl": "imperative",
"description": "Read one asset and its parent scene, including preview URL, prompt, attribution, and YouTube metadata.",
"inputSchema": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"description": "Asset id from get_project (ast_…)."
}
},
"required": [
"assetId"
],
"additionalProperties": false
}
}list_providersAnswer
Show which AI image, AI video, stock, and YouTube backends are configured or currently exhausted. Use when a generate or search call reports quota issues.
View tool JSON
{
"name": "list_providers",
"kind": "answer",
"impl": "imperative",
"description": "Show which AI image, AI video, stock, and YouTube backends are configured or currently exhausted. Use when a generate or search call reports quota issues.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}create_or_reset_projectAction
Start a new storyboard. Clears existing scenes. Provide a title and a logline/brief; this does not invent scenes by itself — call upsert_scene or pass scaffoldScenes true.
View tool JSON
{
"name": "create_or_reset_project",
"kind": "act",
"impl": "imperative",
"description": "Start a new storyboard. Clears existing scenes. Provide a title and a logline/brief; this does not invent scenes by itself — call upsert_scene or pass scaffoldScenes true.",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Project title, e.g. Espresso Dawn."
},
"logline": {
"type": "string",
"description": "Short film brief the human can see on the board."
},
"aspect": {
"type": "string",
"enum": [
"16:9",
"9:16",
"1:1"
]
},
"scaffoldScenes": {
"type": "boolean",
"description": "If true, split the logline into 3–4 empty scenes on the board."
}
},
"required": [
"title"
],
"additionalProperties": false
}
}reset_boardAction
Clear the entire storyboard — every scene and asset — back to an empty board, keeping the current aspect ratio. Use when the human asks to start over or wipe the board. To start a fresh titled project instead, use create_or_reset_project.
View tool JSON
{
"name": "reset_board",
"kind": "act",
"impl": "imperative",
"description": "Clear the entire storyboard — every scene and asset — back to an empty board, keeping the current aspect ratio. Use when the human asks to start over or wipe the board. To start a fresh titled project instead, use create_or_reset_project.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}update_projectAction
Change the project title, logline, or aspect ratio without clearing scenes. Aspect affects every future generation and stock search, so set it before filling shots.
View tool JSON
{
"name": "update_project",
"kind": "act",
"impl": "imperative",
"description": "Change the project title, logline, or aspect ratio without clearing scenes. Aspect affects every future generation and stock search, so set it before filling shots.",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "New project title."
},
"logline": {
"type": "string",
"description": "New logline/brief shown on the board."
},
"aspect": {
"type": "string",
"enum": [
"16:9",
"9:16",
"1:1"
]
}
},
"additionalProperties": false
}
}select_sceneAction
Bring a scene into focus on the human's board so they see what you are working on. Pass a sceneId, or omit to clear the selection. Read-only for project state; only changes what is highlighted.
View tool JSON
{
"name": "select_scene",
"kind": "act",
"impl": "imperative",
"description": "Bring a scene into focus on the human's board so they see what you are working on. Pass a sceneId, or omit to clear the selection. Read-only for project state; only changes what is highlighted.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id to focus. Omit to clear selection."
}
},
"additionalProperties": false
}
}upsert_sceneAction
Create a scene beat on the storyboard, or update an existing one by sceneId. The human sees the new card immediately. index is 1-based order.
View tool JSON
{
"name": "upsert_scene",
"kind": "act",
"impl": "imperative",
"description": "Create a scene beat on the storyboard, or update an existing one by sceneId. The human sees the new card immediately. index is 1-based order.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Existing scene id to update. Omit to create."
},
"index": {
"type": "number",
"description": "1-based insert position for a new scene."
},
"title": {
"type": "string",
"description": "Short scene name, e.g. Pour."
},
"brief": {
"type": "string",
"description": "Shot intent written for humans and later searches."
},
"durationHintSec": {
"type": "number",
"description": "Suggested clip length in seconds."
}
},
"required": [
"title"
],
"additionalProperties": false
}
}reorder_scenesAction
Set export order by passing every scene id from first to last. The numbered folders in the zip follow this order.
View tool JSON
{
"name": "reorder_scenes",
"kind": "act",
"impl": "imperative",
"description": "Set export order by passing every scene id from first to last. The numbered folders in the zip follow this order.",
"inputSchema": {
"type": "object",
"properties": {
"sceneIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "All scene ids in the desired 1..n order."
}
},
"required": [
"sceneIds"
],
"additionalProperties": false
}
}remove_sceneAction
Delete a scene and its assets from the board.
View tool JSON
{
"name": "remove_scene",
"kind": "act",
"impl": "imperative",
"description": "Delete a scene and its assets from the board.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
}
},
"required": [
"sceneId"
],
"additionalProperties": false
}
}generate_imageAction
Generate an AI image for a scene using the free fallback chain (Pollinations → Hugging Face → Together → anonymous Pollinations). A card appears on the board as generating, then ready. Prefer a cinematic still prompt.
View tool JSON
{
"name": "generate_image",
"kind": "act",
"impl": "imperative",
"description": "Generate an AI image for a scene using the free fallback chain (Pollinations → Hugging Face → Together → anonymous Pollinations). A card appears on the board as generating, then ready. Prefer a cinematic still prompt.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"prompt": {
"type": "string",
"description": "Image prompt. Raw natural language is fine."
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"sceneId",
"prompt"
],
"additionalProperties": false
}
}generate_videoAction
Generate a short AI video for a scene (about 6 seconds). If AI video quota is exhausted, the board attaches real stock footage instead and marks degraded. Optional firstFrameAssetId uses an existing still as image-to-video reference.
View tool JSON
{
"name": "generate_video",
"kind": "act",
"impl": "imperative",
"description": "Generate a short AI video for a scene (about 6 seconds). If AI video quota is exhausted, the board attaches real stock footage instead and marks degraded. Optional firstFrameAssetId uses an existing still as image-to-video reference.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"prompt": {
"type": "string",
"description": "Shot prompt in present tense, one action."
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
},
"durationSec": {
"type": "number",
"description": "4–10 seconds. Default 6."
},
"firstFrameAssetId": {
"type": "string",
"description": "Optional still asset id to animate."
}
},
"required": [
"sceneId",
"prompt"
],
"additionalProperties": false
}
}generate_audioAction
Generate downloadable audio for a shot: spoken VO (tts), music bed (music), or sound effect (sfx). Uses Pollinations with stock-audio fallback. The file is pinned on the board and included in the scene zip as mp3/ogg.
View tool JSON
{
"name": "generate_audio",
"kind": "act",
"impl": "imperative",
"description": "Generate downloadable audio for a shot: spoken VO (tts), music bed (music), or sound effect (sfx). Uses Pollinations with stock-audio fallback. The file is pinned on the board and included in the scene zip as mp3/ogg.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"prompt": {
"type": "string",
"description": "VO script, music description, or SFX description. Raw text is fine."
},
"mode": {
"type": "string",
"enum": [
"tts",
"music",
"sfx"
],
"description": "Default tts."
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
},
"durationSec": {
"type": "number",
"description": "Optional length for music beds."
}
},
"required": [
"sceneId",
"prompt"
],
"additionalProperties": false
}
}search_stock_imagesAnswer
Search royalty-free photos (Pexels → Pixabay → Wikimedia) and optionally attach the top results to a scene. Default attachTop is 1. Set attachTop to 0 to only return candidates.
View tool JSON
{
"name": "search_stock_images",
"kind": "answer",
"impl": "imperative",
"description": "Search royalty-free photos (Pexels → Pixabay → Wikimedia) and optionally attach the top results to a scene. Default attachTop is 1. Set attachTop to 0 to only return candidates.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"query": {
"type": "string",
"description": "Visual search query, e.g. night city wide, wet asphalt."
},
"attachTop": {
"type": "number",
"description": "How many results to pin on the scene. Default 1. 0 = search only."
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"sceneId",
"query"
],
"additionalProperties": false
}
}search_stock_videosAnswer
Search royalty-free video clips (Pexels → Pixabay → Wikimedia) and optionally attach the top clip to a scene. Default attachTop is 1.
View tool JSON
{
"name": "search_stock_videos",
"kind": "answer",
"impl": "imperative",
"description": "Search royalty-free video clips (Pexels → Pixabay → Wikimedia) and optionally attach the top clip to a scene. Default attachTop is 1.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"query": {
"type": "string",
"description": "Footage query, e.g. handheld walk through neon streets."
},
"attachTop": {
"type": "number"
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"sceneId",
"query"
],
"additionalProperties": false
}
}search_stock_audioAnswer
Search royalty-free audio (Wikimedia Commons) and optionally attach the top file to a scene. Default attachTop is 1. Use for beds, room tone, or effects when AI audio quota is out.
View tool JSON
{
"name": "search_stock_audio",
"kind": "answer",
"impl": "imperative",
"description": "Search royalty-free audio (Wikimedia Commons) and optionally attach the top file to a scene. Default attachTop is 1. Use for beds, room tone, or effects when AI audio quota is out.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"query": {
"type": "string",
"description": "Audio search, e.g. city night ambience."
},
"attachTop": {
"type": "number"
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"sceneId",
"query"
],
"additionalProperties": false
}
}search_youtubeAnswer
Search YouTube for reference clips. Stores watch links and embeds — never downloads YouTube files. Default attachTop is 1. With no API key, paste a watch URL or 11-character video id (oEmbed). Keyword search needs YOUTUBE_API_KEY; otherwise a search URL is returned.
View tool JSON
{
"name": "search_youtube",
"kind": "answer",
"impl": "imperative",
"description": "Search YouTube for reference clips. Stores watch links and embeds — never downloads YouTube files. Default attachTop is 1. With no API key, paste a watch URL or 11-character video id (oEmbed). Keyword search needs YOUTUBE_API_KEY; otherwise a search URL is returned.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"query": {
"type": "string",
"description": "YouTube search, e.g. night city lighting reference."
},
"attachTop": {
"type": "number"
}
},
"required": [
"sceneId",
"query"
],
"additionalProperties": false
}
}attach_assetAction
Pin a candidate from the most recent search (its candidateId) onto a scene. Use after search_* with attachTop 0.
View tool JSON
{
"name": "attach_asset",
"kind": "act",
"impl": "imperative",
"description": "Pin a candidate from the most recent search (its candidateId) onto a scene. Use after search_* with attachTop 0.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "string",
"description": "Scene id from get_project (scn_…)."
},
"candidateId": {
"type": "string",
"description": "id from the last search_* result."
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"sceneId",
"candidateId"
],
"additionalProperties": false
}
}replace_assetAction
Swap a single board card in place, keeping its scene position and role. Use when the human asks to change a particular still, clip, or YouTube link. Provide action plus prompt or query.
View tool JSON
{
"name": "replace_asset",
"kind": "act",
"impl": "imperative",
"description": "Swap a single board card in place, keeping its scene position and role. Use when the human asks to change a particular still, clip, or YouTube link. Provide action plus prompt or query.",
"inputSchema": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"description": "Existing asset id to replace."
},
"action": {
"type": "string",
"enum": [
"generate_image",
"generate_video",
"generate_audio",
"stock_image",
"stock_video",
"stock_audio",
"youtube"
],
"description": "What to put in its place."
},
"prompt": {
"type": "string",
"description": "For generate_image, generate_video, or generate_audio."
},
"query": {
"type": "string",
"description": "For stock or YouTube search."
},
"durationSec": {
"type": "number"
},
"mode": {
"type": "string",
"enum": [
"tts",
"music",
"sfx"
]
}
},
"required": [
"assetId",
"action"
],
"additionalProperties": false
}
}remove_assetAction
Delete one still, clip, or YouTube link from the board.
View tool JSON
{
"name": "remove_asset",
"kind": "act",
"impl": "imperative",
"description": "Delete one still, clip, or YouTube link from the board.",
"inputSchema": {
"type": "object",
"properties": {
"assetId": {
"type": "string"
}
},
"required": [
"assetId"
],
"additionalProperties": false
}
}set_asset_roleAction
Mark an asset as hero, broll, vo, music, sfx, ref, or alt. Export filenames use this role.
View tool JSON
{
"name": "set_asset_role",
"kind": "act",
"impl": "imperative",
"description": "Mark an asset as hero, broll, vo, music, sfx, ref, or alt. Export filenames use this role.",
"inputSchema": {
"type": "object",
"properties": {
"assetId": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"hero",
"broll",
"ref",
"alt",
"vo",
"music",
"sfx"
]
}
},
"required": [
"assetId",
"role"
],
"additionalProperties": false
}
}check_jobAnswer
Read the status of a long-running generate_video job by jobId.
View tool JSON
{
"name": "check_job",
"kind": "answer",
"impl": "imperative",
"description": "Read the status of a long-running generate_video job by jobId.",
"inputSchema": {
"type": "object",
"properties": {
"jobId": {
"type": "string"
}
},
"required": [
"jobId"
],
"additionalProperties": false
}
}download_assetAction
Download a single still, clip, or audio file from the board (mp3/ogg for audio). YouTube becomes a .url shortcut.
View tool JSON
{
"name": "download_asset",
"kind": "act",
"impl": "imperative",
"description": "Download a single still, clip, or audio file from the board (mp3/ogg for audio). YouTube becomes a .url shortcut.",
"inputSchema": {
"type": "object",
"properties": {
"assetId": {
"type": "string"
}
},
"required": [
"assetId"
],
"additionalProperties": false
}
}export_packAction
Build a zip of the sequence as numbered shot folders with stills, clips, VO/score/SFX audio files, attribution, and YouTube .url shortcuts. Triggers a browser download and returns the file tree.
View tool JSON
{
"name": "export_pack",
"kind": "act",
"impl": "imperative",
"description": "Build a zip of the sequence as numbered shot folders with stills, clips, VO/score/SFX audio files, attribution, and YouTube .url shortcuts. Triggers a browser download and returns the file tree.",
"inputSchema": {
"type": "object",
"properties": {
"includeYoutubeLinks": {
"type": "boolean",
"description": "Include YouTube shortcuts. Default true. YouTube files are never downloaded."
}
},
"additionalProperties": false
}
}