MCP tools reference

The Idea to Motion MCP server exposes 31 tools, grouped below by the phase of the pipeline they belong to. Each one is callable over Streamable HTTP at https://api.ideatomotion.com/mcp once your client has authenticated with an API key or an OAuth access token. Tool results are designed to be worked from directly: a brief comes back as the contract to write against, and a validation failure comes back in band with instructions to fix it rather than as a transport error.

The shape of the surface is deliberate. The front half of the pipeline — everything the user approves — is data-driven, so one set of plan tools serves a narrated script, a silent shot list and an uploaded recording’s cut plan alike, and supporting a new kind of video adds no tools. The back half is identical across every kind, which is why the direction, code, adjustment and social tools never branch on what sort of video they are working on.

One thing you will not find here: an export tool

Rendering the finished MP4 is the user’s action, taken on the platform, and there is no tool for it. Exporting is the only step that spends money, and an agent cannot see the account balance before it calls, so an export tool would mean charging for a quality the user never chose at a moment they never chose. Every workflow that used to end in an export now ends by telling the user to export it themselves — and re-exporting a video they have already paid for is free.

Account setup

7 tools

Voice synthesis and transcription run on the user's own provider key, and a brand kit is established once so every later video inherits the same colours, fonts and logo. These tools are called before the first video rather than per video, and they are the only ones that touch account-level state instead of a job.

set_voice_key
Store the user's own ElevenLabs or Cartesia API key, used for both narration and transcription. Required before approving a narrated or recorded video on a non-allowlisted account; stored encrypted and never returned.
get_voice_status
Report whether a voice key is connected, which provider it belongs to, and which narration engine that provider will use. Check it before approve so a missing key is caught early.
clear_voice_key
Delete the saved voice provider key. After this, a non-allowlisted account must call set_voice_key again before a narrated video can be produced.
set_brand_kit
Establish the user's brand from their website URL — colours, fonts, logo, name and tone are read deterministically from the page, with no model involved. Any field can be overridden explicitly.
get_brand_kit
Read the stored brand kit that every new video inherits. Returns null when none is set, which is the cue to offer set_brand_kit with the user's website.
clear_brand_kit
Remove the brand kit and its stored logo. Videos already made keep the look they were rendered with; new ones fall back to the unbranded looks.
get_niche_profile
Return the user's saved content profile — niche, sub-topics, audience, goals, content pillars and topics to avoid — so a vague brief can be turned into a concrete topic that matches what they publish.

Creating a video

2 tools

A video is created as one of three kinds: an explainer with a narrated script, a silent motion graphic driven by on-screen text, or a recording the user uploads and the assistant cuts. Aspect ratio and duration are independent axes, so any length works at either 9:16 or 16:9.

get_creation_options
Open a picker where the user chooses the look and the narrator voice themselves, with playable preview clips and voice samples, and creates the job from that panel. Clients that cannot render panels receive the same options as text.
create_job
Start a brand-new video job with a kind (explainer, motion_graphic, recording), a topic, an aspect ratio, a duration and an optional genre style. Returns a playbook plus the first brief for the chosen kind.

Plan and approval

3 tools

Nothing is produced until the user approves a plan, and the plan's shape follows the video's kind: a script for an explainer, a shot list for a motion graphic, or a keep-and-drop cut plan for an uploaded recording. The same three tools serve all three, so a new kind of video adds no new tools.

get_plan
Fetch the plan to write before production — the script brief, the shot-list brief, or an uploaded recording's transcript split into keep/remove segments. After approval it returns the plan the video is currently running, with real per-shot durations.
submit_plan
Submit the script, shot list or cut plan for the user's approval, replacing any pending plan. It also retimes a finished motion graphic: resubmit the same shots with different durations to make a scene or the whole video shorter.
approve
The user's go button. Starts production for an explainer or motion graphic, or confirms the cut plan for a recording. Only call it after the user has explicitly confirmed, in chat or in the review panel.

Scene direction and code

8 tools

This is where the assistant does the creative engineering. It writes a direction for each scene, then a self-contained Remotion component for each scene, and renders stills to check the result with its own eyes. Submitted code is statically validated and executed in a sandbox, so a crash comes back as a tool error to fix rather than a broken video.

get_direction_brief
Fetch the creative contract for directing scenes, or one scene's brief including the previous scene's context so consecutive scenes are made to differ. Direct scenes one at a time, in order.
submit_directions
Submit one scene's direction — its mood, layout, beats and optional stage framing. Submissions accumulate; when every scene is covered the batch finalizes and the job advances to code generation.
get_code_brief
Fetch the full Remotion engineering contract — available globals, the resolved theme, the layout rules and the animation kit — plus one scene's spec. No access to this codebase is needed to write a scene.
submit_scene_code
Submit one scene's Remotion component. It is statically validated, smoke-rendered in a sandbox and audited for layout, and accepted scenes are assembled into the finished composition when the last one lands.
list_scenes
List every scene with its id, name, type, narration text, start and end times, duration and whether it already has accepted code. This is how a user's description of a scene is matched to a scene id.
get_scene_code
Read the Remotion component currently accepted for one scene, so a requested change edits the real code instead of rewriting the scene from scratch. Also lists that scene's hand edits made on the platform.
edit_scene_code
Apply exact-substring replacements to a scene's current code — the token-cheap way to make a small change. Each edit runs the same validation and sandbox render as a full submission and recomposes the video in place.
render_scene_preview
Render one scene to still images on the server and return them, so the assistant can see exactly what it built without asking the user to screenshot anything. Captions, hand edits and the speaker's footage are composited in.

Media and assets

4 tools

A video can draw on the user's own files, on a hosted library of CC0 music, and on real brand logos and stock photography resolved through the same providers the platform's own director uses. Uploads go straight to object storage with a presigned link rather than through the API.

attach_media
Attach the user's own media to a job in one of three roles: a reference image or clip to embed in a scene, the primary recording for an upload-and-animate job, or a background music track from the platform's CC0 library.
list_media
List every asset attached to a job with its id, kind, dimensions, caption and the exact URL to embed in scene code. Images come back as inline image content so the assistant can tell them apart.
resolve_brand_asset
Resolve a real company or product logo to a stable URL that a scene can embed. Returns null rather than a guess when no logo is found, which is the signal to draw the mark as inline SVG instead.
resolve_scene_image
Resolve a stock photograph for a concrete real-world subject and return a stable URL plus its attribution. At most one image per scene, and never for abstract concepts, which are better served by motion graphics.

Adjustments after the build

3 tools

These three tools change a finished video without touching any scene code, which makes them cheap, reversible and safe to run on a video the user has already exported. Each is deliberately structured rather than conversational, because the assistant cannot hear or see the result and has to confirm from what comes back.

adjust_audio
Mute or rebalance everything except the narration — the generated sound effects and the user's background music — scoped to one cue, one scene or the whole video. Calling it with only a job id reads back the full cue list.
adjust_captions
Turn burned-in captions on or off, switch preset, font, size, colours or placement, or correct a mis-heard word by its transcript index without re-recording anything. Narrated videos only; a silent motion graphic has none.
adjust_scene_framing
Re-frame the speaker in one scene of a recorded video: which part of the footage shows, where it sits on the canvas, and when that layout changes partway through the scene. Framing changes do not invalidate the scene's code.

Social metadata

2 tools

Narrated and recorded videos carry a publishing kit — titles, descriptions, hashtags, tags and chapter markers — written by the assistant rather than by a server-side model. Submitting it is what unblocks the platform's export action for those kinds; silent motion graphics skip the step entirely.

get_social_brief
Fetch the strategist contract for this video's social posts: the per-platform format rules, the topic, the full approved script and, for widescreen videos, the exact chapter timestamps.
submit_social_metadata
Persist the YouTube and Instagram copy written from the brief. Once accepted it appears in the user's Share panel and the platform's export action is unblocked. Resubmitting overwrites what is stored.

Status and recovery

2 tools

Nothing reports progress on the assistant's behalf, so a long-running stage is polled. Recovering a job id later in a conversation matters more than it sounds: creating a second job to fix an existing video is the single most common way an agent produces a duplicate instead of an edit.

get_job_status
Return the current pipeline stage, progress, any error, guidance naming the next tool to call, and — once a render finishes — the download URL. Poll it roughly every fifteen seconds while production runs.
list_jobs
List the user's most recent jobs newest first, each with its id, topic, format, stage and web URL. This is how a job id is recovered when the user asks to change a video made earlier in the conversation.

Beyond tools

The server also publishes an MCP prompt named create-video as a one-command entry point, a resource template at videoai://jobs/{jobId} that exposes a job as readable context, and interactive UI panels for hosts that support the MCP Apps extension — a launch pad where the user picks the look and narrator from playing preview clips, and a review panel where they approve the plan with a click. Text-only clients lose nothing: every tool keeps full text output.

The complete workflow, including the order to call these tools in and how to recover from each kind of rejection, is published as an open Agent Skill at https://api.ideatomotion.com/mcp/skill. Start with the docs overview for the endpoint and authentication, or the connect page for copy-paste config for your client.