31 tools · 8 phases

MCP tools reference

The Idea to Motion MCP server exposes 31 tools, grouped below by the phase of the pipeline each belongs to. Every tool 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 — or, with no key at all, on the user's own machine — 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

Choose how narration is produced: store the user's own ElevenLabs, Cartesia or Sarvam AI API key (used for both narration and transcription, stored encrypted and never returned), or select provider "local" to synthesize each voiceover on the user's own machine with no key at all. One of the two is required before approving a narrated video on a non-allowlisted account; local narration covers explainers only, since a recording's transcription is a cloud service.

get_voice_status

Report how narration is produced — a connected cloud key and its engine, local narration on the user's own machine, or nothing yet. Check it before approve so a missing choice is caught early.

clear_voice_key

Delete the saved voice provider key, or clear a local-narration selection. After this, a non-allowlisted account must call set_voice_key again before a narrated video can be produced; videos already in production keep the narration source they were approved with.

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 (including Spotlight: a big gradient keyword over a line typed in word by word), font (Indic faces included), size, colours or placement, or correct a mis-heard word by its transcript index without re-recording anything. Per-stretch overrides hide or restyle captions for just some words or seconds, the same edits the editor makes from its Captions timeline lane. 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.

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.