← WebMCP Directory

Tool tree

assets-curator.vercel.app

Media & PersonalTools verified
Website
WebMCP media bin: stills, clips, VO, score, SFX, and YouTube refs, arranged shot-by-shot and exported as a folder pack.
Explore capabilities
    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
      }
    }