Connect Idea to Motion to Codex CLI and you can ask for a video the same way you ask for anything else. Codex CLI writes the script, plans each scene and writes the animation code; we synthesize the voiceover, time it to the words, render the animation and hand back an MP4. It speaks Streamable HTTP directly, so connecting is one config entry carrying an API key in an Authorization header.
Generate a connection key if this client needs one, then add the server.
Pick your app
Chat apps
Editors & IDEs
Terminal
Generate a connection key
Add it to Codex CLI
~/.codex/config.toml
[mcp_servers.ideatomotion]
url = "https://api.ideatomotion.com/mcp"
http_headers = { "Authorization" = "Bearer vai_YOUR_KEY" }
startup_timeout_sec = 30Generate a key above to replace vai_YOUR_KEY.
http_headers and use bearer_token_env_var = "IDEATOMOTION_KEY" instead.The exact names Codex CLI reads, and what happens when one of them is wrong.
Codex CLI reads its MCP servers from a TOML file — ~/.codex/config.toml. The entry goes under mcp_servers, with the endpoint in url. Those names are not what every other client uses, and getting one wrong is not an error, it is silence: the file parses, Codex CLI starts, and the server never appears.
Narration is synthesized on your own ElevenLabs, Cartesia or Sarvam AI key. Silent motion graphics need none.
Idea to Motion generates the voiceover on your own text-to-speech account. Add an ElevenLabs, Cartesia or Sarvam AI key — it's stored encrypted and never shown again. Rendering is blocked until a key is connected.
Where the line between your assistant and the platform falls, and why it falls there.
Ask for a video in a Codex CLI session the same way you ask for a refactor — the tool calls run inline and you approve the plan without leaving the terminal.
Type it at the prompt, in any directory — nothing about this needs a project.
“Make a 60-second widescreen explainer about how our deploy pipeline works.”
What comes back
The ways this goes wrong, and most of them go wrong silently.
Codex is the odd one out: ~/.codex/config.toml is TOML, so pasting a JSON mcpServers block into it is a parse error rather than a silent miss — the one place a wrong format fails loudly. The table header is [mcp_servers.<id>]. To keep the key out of the file entirely, drop http_headers and set bearer_token_env_var = "IDEATOMOTION_KEY" instead, exporting that variable from your shell profile.
Check the names in ~/.codex/config.toml. The entry belongs under mcp_servers, and the endpoint goes in url. These differ between clients — some read mcpServers, some servers, some context_servers — and a wrong one is not an error: the file parses, Codex CLI starts, and the server is simply never loaded. Copy the snippet in step 1 rather than adapting one from another client's documentation.
A key that is wrong, truncated or revoked gets a 401, and most clients report that as a failed connection rather than as an auth problem. Keys are shown once and stored hashed, so there is no way to read an old one back — generate a fresh one in step 1, then paste the new key over the old one in the config and reload Codex CLI. Paste the whole vai_ string including the prefix; the old key can be revoked from the same panel.
~/.codex/config.toml is the file Codex CLI reads for this; a copy anywhere else is never opened. Create it if it does not exist yet, keep the surrounding JSON valid — a trailing comma takes the whole file down, not just this entry — and reload Codex CLI, which reads MCP config at startup.
Narration and transcription run on your own ElevenLabs, Cartesia or Sarvam AI key rather than ours, so a narrated or recorded video needs one connected — step 2 on this page, or the set_voice_key tool from inside Codex CLI. Silent motion graphics need no voice key at all, so "make it a silent motion graphic instead" is a valid way past this.