SceneWeaver MCP
Provides image discovery from Openverse so assistants can search for and select media assets for storyboard scenes, with credits carried through the video job.
Provides stock video discovery from Pexels through the optional API-Anything bridge, allowing assistants to find and use video assets for storyboard scenes.
Provides image discovery from Wikimedia Commons so assistants can search for and select media assets for storyboard scenes, with credits carried through the video job.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SceneWeaver MCPMake a 15-second video explaining how trees cool cities, with 3 scenes and storyboard."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SceneWeaver MCP
A local MCP connector that turns an assistant's script into a narrated short video. Plan scenes, inspect a storyboard, choose media, preview a voice, then render to a requested duration. No LLM API key is required: your existing assistant supplies the narration and search terms.
SceneWeaver is an early release. Review the storyboard and asset credits before publishing a video. Visual relevance still benefits from a human's judgment.
Install locally
Requires Python 3.11 or newer and a supported 64-bit platform. Python 3.11 or 3.12 is recommended for the optional voice engine's native dependencies. Installation downloads Python packages; voice models are a separate explicit download.
Download and extract a release bundle from GitHub Releases, then install its wheel in a virtual environment:
The bundle also contains examples/install-windows.cmd and
examples/install-posix.sh. Run the matching installer from a terminal to create
a local environment and install the voice extra. Then run setup-voice explicitly
as shown below. These scripts download packages; they do not download voice models.
At the end, they detect supported client configuration folders and offer to connect
one client. Press Enter to skip. Plain pip install never edits client settings.
# Windows PowerShell, from the extracted bundle directory
py -3.12 -m venv .venv
.\.venv\Scripts\python -m pip install --upgrade pip
.\.venv\Scripts\python -m pip install "./sceneweaver_mcp-0.1.2-py3-none-any.whl[voice]"
.\.venv\Scripts\sceneweaver-mcp setup-voice
.\.venv\Scripts\sceneweaver-mcp doctor# macOS / Linux, from the extracted bundle directory
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install './sceneweaver_mcp-0.1.2-py3-none-any.whl[voice]'
.venv/bin/sceneweaver-mcp setup-voice
.venv/bin/sceneweaver-mcp doctorFor a source checkout, replace the wheel path with '.[voice]'. With uv, run
uv sync --extra voice, then uv run sceneweaver-mcp setup-voice. The voice
extra installs Kokoro ONNX and its speech dependencies; setup-voice downloads
approximately 355 MB of integrity-checked model and voice files. It never runs
silently when the MCP server starts. Installing the core without [voice] still
provides planning and media tools; local narration requires the extra and models.
FFmpeg is supplied through imageio-ffmpeg on supported platforms. Its executable and codec licensing are separate from this project's Apache license. See third-party notices before redistributing an environment.
Related MCP server: postward-creative-mcp
Connect an MCP client
Run sceneweaver-mcp connect for automatic detection and an opt-in setup prompt.
It supports Codex shared configuration, Cursor, and Claude Desktop on Windows/macOS.
It checks known configuration folders rather than scanning your computer. Choose
one client; an existing configuration is backed up before SceneWeaver is added.
For a read-only check, run sceneweaver-mcp clients. To preview a specific change,
run sceneweaver-mcp connect --client cursor --dry-run. To explicitly apply it,
omit --dry-run. Client IDs are codex, cursor, and claude-desktop.
Restart the selected client and approve SceneWeaver there. Detection does not prove
that a client is installed or enabled, and does not bypass its permissions. Only
one server may own the default storage at a time; close other clients using it or
configure separate SCENEWEAVER_HOME directories. See client setup
for supported paths, backups, and manual setup limitations.
Use the absolute executable path from the environment you just installed. The server uses stdio and needs no localhost port. A generic client configuration is in examples/mcp.json; adapt it to your client's schema.
{
"mcpServers": {
"sceneweaver": {
"command": "/absolute/path/to/.venv/bin/sceneweaver-mcp",
"args": ["serve"]
}
}
}On Windows, use C:\\absolute\\path\\.venv\\Scripts\\sceneweaver-mcp.exe.
Run sceneweaver-mcp version to confirm the executable. Set SCENEWEAVER_HOME
in the MCP process environment if you want to choose where state, media and
results are stored; doctor reports the active location.
The optional launchers are examples/run-windows.cmd and
examples/run-posix.sh. If your client needs an interpreter to launch a script,
use cmd /d /c on Windows or sh on POSIX, with the absolute script path as
arguments. The installed sceneweaver-mcp executable above is the simplest
configuration. POSIX launchers can also be run as sh examples/run-posix.sh if
executable permission was not preserved by ZIP extraction.
Make a video
Ask your connected assistant:
Make a 15-second video explaining how trees cool cities. Plan three scenes, find relevant footage from the available providers, and show the storyboard. Preview the narrator before rendering. Use quiet background music, concise captions and the selected scenes. Give me the video and its asset credits.
The workflow is: plan scenes → search and select media → review storyboard → preview narration → generate → check progress → retrieve results. You can replace a scene's selection before rendering and cancel an active job. Cached downloads reduce repeat requests, while provider cooldowns avoid repeatedly hitting a limited service. Uploaded/imported media must be yours to use.
The renderer fits measured narration to the requested duration within its allowed speed range; it fails with a useful message when the script needs rewriting rather than forcing an unnatural voice speed. Caption timing uses measured sentence boundaries. Phrase and word highlighting use estimated timing inside those sentences, rather than speech-recognition word alignment.
Branding supports a title, footer, six-digit hex color and an imported logo asset ID.
Tool | Purpose |
| Inspect providers, narration and setup status. |
| Discover licensed media or register managed local assets. |
| Save and inspect assistant-written scene text and timing. |
| Change a scene's asset and inspect a thumbnail contact sheet. |
| Hear the selected narrator before a full render. |
| Render the selected storyboard to its requested duration. |
| Track a job, retrieve outputs or cancel. |
create_storyboard accepts scenes containing text, query, an optional
asset_id and optional duration_seconds. Set durations for every scene or let
the planner allocate them by word count. Set the total duration_seconds
(1–120), aspect (9:16, 16:9 or 1:1), voice, music (ambient or
none), music_volume (0–0.18), branding and caption_style
(sentence, phrase or word). Available Kokoro voices are af_heart,
af_bella, am_michael and bf_emma.
To import media, place a file in the managed inbox/ under the storage directory
reported by doctor, then call import_media with its filename and rights
metadata. Tools cannot import an arbitrary absolute path. Provider searches and
downloads require allow_network=true; choose it only with the user's permission.
Voice previews return a WAV path and sceneweaver://voice/{preview_id} resource.
Storyboard previews include an inline PNG contact sheet and can also be read from
sceneweaver://storyboard/{storyboard_id}/preview. Playback and resource display
depend on the connected MCP client's capabilities. Video results include the
local MP4 path, its checksum, credits and a quality report.
Providers and integrations
Wikimedia Commons and Openverse provide image discovery; Pexels provides stock video discovery through the optional API-Anything bridge. Individual providers can be unavailable or rate-limited. Media credits travel with the job. A free website does not automatically grant permission for any use of its content.
Kokoro runs locally without an API key after setup. The generated ambient music bed contains no external song recording. Additional local voice service options are documented as research; an API-Anything speech connector is not included in this release.
See integration setup and provider options, privacy and security, and licensing.
Develop and package
python -m pip install -e '.[dev,voice]'
python -m unittest discover -s tests -v
python scripts/package_release.py
python -m pip_auditThe release script builds a wheel, source distribution, downloadable ZIP bundle
and SHA-256 checksums in dist/. It packages code and documentation, never local
jobs, cached downloads, voice models or credentials. Builds install dependencies
from package indexes; the bundle is not an offline all-dependencies installer.
CI covers Windows, macOS and Linux; a configured workflow is not a claim that
remote CI has already passed for an unpublished commit.
Release verification on Windows: the local test suite passed, an actual stdio MCP job rendered an exact 15-second video with local Kokoro narration, and an actual API-Anything Commons search returned six assets. macOS/Linux checks are configured in CI but have not yet been executed for this release. These checks do not certify all provider availability, narration pronunciations or asset rights.
License
Original code: Apache-2.0, copyright SceneWeaver contributors. External components and downloaded assets keep their own licenses and required attributions. SceneWeaver is not endorsed by its media or voice providers.
Available Tools
12 toolscancel_videoBDestructive
Cancel this job and terminate its render process tree.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds genuinely useful context beyond that — it terminates a process tree, implying in-flight render work is killed rather than just flagged. However, it omits irreversibility, idempotency, and what happens to any partial output or artifacts already produced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the effect front-loaded and no filler. It is perhaps too brief for a destructive operation, but nothing in it is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, for a destructive, non-open-world tool with one undocumented parameter, the description should at least connect job_id to its source and indicate whether cancellation is safe to retry or valid on already-finished jobs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter has 0% schema description coverage, so the description bears the full burden — but it says nothing about job_id. It doesn't indicate whether this is the id returned from generate_video, a storyboard id, or a status-polling key, which is exactly the ambiguity an agent would hit here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Cancel') and a specific resource ('this job'), with an additional concrete effect ('terminate its render process tree'). It is clearly distinguishable from siblings like generate_video or get_video_status, though it doesn't explicitly name the job type (video render job) that ties it to generate_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use it: nothing says it applies only to queued/running jobs, nothing about checking get_video_status first, and nothing about whether it is intended for stuck or misconfigured renders. The agent must infer the usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_storyboardA
Plan explicit scenes: text, query, optional asset_id and optional duration_seconds.
The assistant writes the scenes; no model API is called. Set every scene duration or let the planner divide the total by word count. Branding supports title, footer, color and a managed logo_asset_id. Shorten text if narration cannot fit naturally; speech is never silently cut.
| Name | Required | Description | Default |
|---|---|---|---|
| music | No | ambient | |
| voice | No | af_heart | |
| aspect | No | 9:16 | |
| scenes | Yes | ||
| branding | No | ||
| music_volume | No | ||
| caption_style | No | phrase | |
| duration_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=false, so the mutation profile is known; the description adds real value by stating no model API is invoked (assistant-authored content), how durations are auto-derived from word count, and the safety rule that narration is shortened rather than silently cut. It does not say whether the plan is persisted or returned, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences that each contribute something: the scene shape first, then the no-API behavior, then the duration rule, then branding and text-fitting constraints. Dense but without filler; minor compactness loss from splitting the duration and branding rules into separate lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, lowering the burden, and the description handles the trickiest part (untyped scene objects and duration derivation). Still, for an 8-parameter creation tool with zero schema descriptions, leaving the audio/visual parameters (voice, aspect, music, caption_style, music_volume) unexplained and omitting any mention of preview/generate sequencing leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 8 parameters, so the description must carry the load. It documents the nested scene fields (text, query, asset_id, duration_seconds), branding keys (title, footer, color, logo_asset_id) and the total duration_seconds semantics, which is valuable given the untyped scene items. However, music, voice, aspect, music_volume and caption_style receive no mention at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Plan explicit scenes') and enumerates the scene fields (text, query, asset_id, duration_seconds), so the agent knows this builds a storyboard plan rather than rendering or fetching one. It never names siblings like generate_video or preview_storyboard, so differentiation is only implicit from the word 'plan'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'The assistant writes the scenes; no model API is called' clarifies the mode of operation but not when to choose this over preview_storyboard or generate_video. The duration rule ('Set every scene duration or let the planner divide the total by word count') is a useful usage instruction, but there are no explicit exclusions or sequencing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoA
Start an exact-duration render of the selected storyboard; poll get_video_status.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_network | No | ||
| storyboard_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true; the description adds genuine value by revealing this is an asynchronous job that must be polled rather than a synchronous return. However it says nothing about what allow_network actually permits, whether the render consumes credits/time, or what happens on failure – notable gaps for an open-world mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact clause pair with the action front-loaded and the follow-up step appended; nothing is wasted. It is arguably too terse for a tool with two undocumented parameters, but that is a completeness issue rather than verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the async polling instruction covers the main workflow need. The unexplained allow_network flag and absent preconditions leave real gaps for a job-starting mutation tool with open-world access.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden, yet it only vaguely gestures at storyboard_id via 'the selected storyboard' and never explains allow_network at all – the single most non-obvious parameter given openWorldHint=true. Format and expected value of storyboard_id are also unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Start an exact-duration render of the selected storyboard') and explicitly names the sibling to poll (get_video_status), separating it from preview_storyboard, cancel_video and get_video_results in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly implies the call is the kickoff step of an async flow and names the follow-up tool (get_video_status). It does not state prerequisites (e.g., that a storyboard must first be created and its scenes selected) or when to prefer preview_storyboard instead, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesARead-only
Report installed voices, provider options, limits and privacy boundaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are covered. The mention of 'limits and privacy boundaries' signals that returned content carries constraints and data-handling rules, which is useful extra context, but the description does not say the call is side-effect free, cheap, or cacheable, and the output schema carries the rest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every noun in the enumeration maps to a distinct category of returned information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a read-only annotation, and a full output schema describing the return shape, the description needs only to establish scope, which it does. The one missing piece is sequencing guidance — telling the agent to consult this before invoking voice or provider-dependent tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is nominal since the arguments object is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Report') and enumerates the resource contents: installed voices, provider options, limits, and privacy boundaries. This is clearly distinct from the media/video siblings, none of which describe capability introspection, though the phrasing is a field list rather than a single crisp purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance is given, and no sibling is named. The agent must infer that this is a discovery call to make before choosing voices in preview_voice or options in generate_video — that inference is reasonable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storyboardCRead-only
Read a saved plan and its scene-to-media choices.
| Name | Required | Description | Default |
|---|---|---|---|
| storyboard_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only that the returned plan carries scene-to-media assignments, which is mild but real context; nothing about resolution failures or what 'saved' implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is short for good and bad reasons — no waste, but also no elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is unnecessary, and annotations cover safety. Still missing is any guidance on the id parameter's provenance and how this differs from the preview sibling, leaving the agent with an incomplete decision picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole parameter storyboard_id is never mentioned in the description. The name is self-explanatory, but there is no compensation for the missing schema documentation (e.g. that it must reference an existing saved storyboard).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'read' plus 'saved plan and its scene-to-media choices' conveys retrieval of a persisted storyboard, but it never uses the word 'storyboard' and gives no basis for distinguishing it from siblings like preview_storyboard or get_video_results. Purpose is inferable, not precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus preview_storyboard (preview) or search_media (find media). The agent must guess that this is the lookup-by-id path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_resultsBRead-only
Retrieve the MP4, SHA-256, credits, quality report and measured duration.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint/openWorldHint annotations already establish this as a safe, local read, so the description only needs to add context. It adds the fact that results are packaged artifacts, but says nothing about what happens if the job is incomplete, queued, failed, or nonexistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the space saved is spent on enumerating return fields rather than on the information that is actually missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so listing MP4/SHA-256/credits/duration is largely redundant, while the real gaps — job lifecycle prerequisites and job_id provenance — go unaddressed. Adequate to invoke, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single job_id parameter, and the description does not compensate at all — it never mentions job_id, where it comes from, or its expected format. The parameter is therefore undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Retrieve') tied to the video-result resource and enumerates what comes back (MP4, SHA-256, credits, quality report, duration). It is understandable on its own, but it never contrasts itself with the close sibling get_video_status, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_video_status, nor any precondition such as the job having finished rendering. The agent gets no signal that job_id must refer to a previously submitted generate_video job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_statusDRead-only
Read progress and a bounded actionable failure message.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are covered. The only added signal is that failures surface as a "bounded actionable failure message", which is vague - it does not say what a bounded message means, whether it is retryable, or what terminal states exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is terse to the point of being under-specified rather than concise - a fragment with no subject, no verb mapping to the tool, and nothing front-loaded about the resource being queried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape details are not required, but for a single-param polling tool the description should still identify the resource, the meaning of job_id, and the polling context. None of that is present, so the definition is not sufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter job_id is completely undocumented in both schema and description. A caller gets no hint that job_id is the identifier returned by generate_video or that it must be a resolved job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a sentence fragment that never names the resource: "Read progress" of what is left implicit, relying entirely on the tool name. Against siblings like get_video_results and get_storyboard, it gives no basis for telling a status/progress poll apart from a results fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus get_video_results, get_storyboard, or cancel_video, and no mention of polling after generate_video. The agent must infer the entire workflow from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_mediaB
Import only a filename staged by the operator in the managed inbox, with rights metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| creator | No | ||
| filename | Yes | ||
| license_name | No | User supplied |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a mutation (readOnlyHint=false) in a closed-world setting. The description adds the staging precondition and mentions rights metadata, but it does not explain side effects, permissions, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted wording. The key constraint appears immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no schema descriptions, the definition is too sparse. It covers the filename precondition and hints at rights metadata, but does not explain required title, creator, or license_name semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It mentions filename and rights metadata, but leaves title, creator, and license_name unclear, including the license default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: importing a media filename from the operator's managed inbox. The description is clear but does not differentiate this tool from siblings such as search_media, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it: only with a filename already staged by the operator in the managed inbox. It does not name alternatives or explicit when-not cases, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_storyboardB
Return a contact sheet inline and its scene timeline for semantic review.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_network | No | ||
| storyboard_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false and openWorldHint=true, so the description does not need to restate safety. It adds that the result is an inline contact sheet plus scene timeline, but it does not explain side effects, why it is not read-only, or how network access affects behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler; the purpose and return content appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should explain the return shape more fully, and with openWorldHint=true plus an allow_network parameter it should clarify network implications. It names the returned artifacts but leaves key invocation-relevant behavior undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it never mentions storyboard_id or allow_network. 'Its scene timeline' only weakly implies a storyboard target, and allow_network is entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and concrete outputs ('contact sheet inline and its scene timeline'), making the preview purpose clear. It is distinguishable from get_storyboard by its semantic-review framing, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For semantic review' implies the usage context, but there is no explicit guidance on when to use this versus get_storyboard, preview_voice, or generate_video, and no when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_voiceB
Create a short local WAV preview before choosing a narrator. No text leaves the computer.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Here is a short sample of this narrator. | |
| speed | No | ||
| voice | No | af_heart |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=false, and 'Create a ... WAV' is consistent with a write. The 'No text leaves the computer' line usefully reinforces the closed-world/privacy profile, but nothing is said about where the file is written, whether it is overwritten or cleaned up, or cost/latency of synthesis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, and the action plus its privacy guarantee are front-loaded. Nothing needs to be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and defaults make the tool callable with no arguments. However, with 0% parameter coverage the agent gets no help on the text/speed/voice inputs or on what to do with the resulting WAV file, leaving a real gap for a synthesis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters, and the description never mentions text, speed, or voice. Only the word 'narrator' loosely hints at the voice parameter, and the non-obvious default ('af_heart') and speed units are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Create a short local WAV preview,' scoped to narrator selection. An agent can tell it produces an audio preview rather than a storyboard preview, but the description never names or contrasts a sibling (e.g. preview_storyboard) explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'before choosing a narrator' gives a timing cue for use, but there is no guidance on prerequisites, when not to use it, or which tool actually performs the narrator selection. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mediaC
Find licensed candidates; consult source pages and notices before selecting them.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | mixed | |
| query | Yes | ||
| providers | No | ||
| allow_network | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give openWorldHint=true and readOnlyHint=false, but the description adds little beyond hinting that results carry source pages and license notices. Critically, it never explains that network access is disabled by default (allow_network=false), so an agent cannot predict what happens on a default call. The "find" framing also sits awkwardly against readOnlyHint=false without clarification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler, but this is under-specification rather than concision — it omits nearly everything an agent needs. Length is fine; content density is not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not required. However, for a 4-parameter, open-world search tool with 0% schema coverage and a default-off network flag, the description leaves the agent unable to construct a correct call or anticipate failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description compensates for none of them: query semantics, the mixed/image/video kind enum, the providers allowlist, and the allow_network flag are all undocumented. The most consequential parameter, allow_network (default false), is invisible in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Find licensed candidates" gives a verb but the resource is only inferable from the tool name; the description never says it searches images/videos across providers, nor that it returns license-annotated results. It is distinguishable from write-side siblings like import_media or generate_video, but only by implication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only workflow guidance is "consult source pages and notices before selecting them," which points vaguely at select_scene_asset without naming it. There is no statement of when to use this versus import_media, and no mention that allow_network defaults to false, which materially changes when the tool is usable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_scene_assetA
Replace one scene's media choice without regenerating its script or other choices.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | ||
| scene_id | Yes | ||
| storyboard_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context by explaining the non-side-effect behavior of the mutation (not regenerating scripts or other choices), which is a high-value detail beyond what the annotations or schema convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a highly efficient single sentence that packs the action, target, and behavioral constraints into one concise statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For this mutation tool, it is extremely complete. It explicitly addresses the scope of change and lack of downstream cascading effects, which is exactly the context an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry the semantic weight. It establishes that the inputs relate to 'scene' and 'media choice,' providing necessary conceptual meaning for the required IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Replace') and the resource ('scene's media choice'), providing a distinct purpose that differentiates it from sibling tools like search_media or generate_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a critical constraint for usage: the replacement is performed 'without regenerating its script or other choices.' This clearly defines the boundaries of the tool's functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.2- First observed
cancel_video - First observed
create_storyboard - First observed
generate_video - First observed
get_capabilities - First observed
get_storyboard - First observed
get_video_results - First observed
get_video_status - First observed
import_media - First observed
preview_storyboard - First observed
preview_voice - First observed
search_media - First observed
select_scene_asset
TDQS
Scored across 12 tools
Most tools target clearly distinct actions in the media-to-video pipeline, such as search vs. import and generate vs. status/results/cancel. There is some potential overlap between get_storyboard and preview_storyboard, and between media search/import/select, but the descriptions make the boundaries reasonably clear.
All tool names use consistent snake_case with a predictable verb_noun structure. Related lifecycle operations are grouped coherently, such as get_video_status, get_video_results, and cancel_video.
The 12 tools are well-scoped for a storyboard-to-video workflow, covering media sourcing, planning, preview, generation, monitoring, results, cancellation, and capabilities. Each tool appears to earn its place without excessive surface area.
The core workflow is covered end to end, including media intake, storyboard creation and preview, asset selection, rendering, status polling, results, and cancellation. Minor gaps exist around editing or deleting storyboards beyond media selection, and there is no listing of prior jobs or imported media.
Maintenance
Related MCP Connectors
Make Reddit story, text message, quiz and article short videos from your AI assistant. MP4 out.
Create AI images, clips, voice-overs, music and editable storyboard films from your AI assistant.
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to generate narrated videos from topics or scripts, with stock footage, home videos, or local AI clips.2MIT

postward-creative-mcpofficial
AlicenseBqualityBmaintenanceEnables AI assistants to generate images, videos, music, and voiceovers with your own provider keys, and edit video locally with ffmpeg — all on your machine with no account, watermark, or telemetry.3540 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to create finished short-form videos with script, voiceover, scenes, captions, and music, delivering an MP4 ready for TikTok, Instagram Reels, and YouTube Shorts.127 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to generate, edit and render finished, ready-to-post videos from a plain-language prompt, including script, visuals, voiceover, captions and music for TikTok, Reels and YouTube. Also supports remaking reference videos, importing your own media, and reviewing or adjusting existing videos before rendering.MIT