North Noir generates AI-drawn videos from text prompts by rendering animated frames in code. Create story-driven videos, add narration, music, and sound effects, inspect and refine individual scenes, track rendering jobs, and export finished videos for content creation.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
List the styles and drawing models available for an AI-drawn video before creating one. North Noir is a one-model product: Ruvil 2.1, drawn in code by the AI at 30 fps. Styles come from the caller's saved styles plus community styles; models list North Noir's own drawing model and the caller's usable BYOK models. Read-only.
Start a paid North Noir AI-drawn video: the drawing model you choose writes the scene and subject, then every frame is composed in code at 30 fps, and any single frame can be re-drawn. Returns immediately with a job id; use get_job to poll it. Optionally turn sound on (sound_effects) — the sound is AI-synthesized, or realistic cues from ElevenLabs with sound_source "elevenlabs". Pick the drawing model with drawing_model: North Noir's own (default) or a saved BYOK provider key.
App-only. Signed playback URLs plus timing and canvas geometry for an MCP Studio project, so the widget can play the composite inline.
App-only. A directly-playable signed URL for a finished export, so the widget can play it inline instead of linking out.
App-only. The per-section breakdown of a workflow (planned briefs, render status and progress), so the widget can show a section list while a job runs.
Get status, progress, current phase, token usage, and result URL for an MCP Studio workflow or a plain North Noir API job. A project_url appears only once there are rendered sections worth looking at — do not invite the user to open the project while it is still planning or rendering, and never offer a link that is absent from the response. On hosts that render MCP Apps (Claude), this also opens a live status widget — approving the plan, reviewing the video, and watching the finished export can all happen right there instead of through more tool calls.
Stop a job that is still running — the same thing as pressing Stop in North Noir. Works for any job id returned by create_drawn_video, plan_drawn_video, or the project tools. Whatever has already rendered is discarded and unused tokens are released, so only the work completed before the stop is charged. A job that already finished or failed is left untouched. This cannot be undone, so ask the user to confirm before calling it unless they clearly asked to stop.
Adjust one rendered section of an MCP Studio project after inspecting it. Starts a paid re-render and exports a revised video; poll the returned workflow with get_job.
Assemble the current state of an MCP Studio project into a finished video and return a job to poll. This reuses the sections that are already rendered — it never generates one, so it does not repeat any paid render. Use it to deliver a video after adjust_project_graphic has finished, after the user has edited the project in North Noir Studio, or to produce the same project again at a different resolution. Poll the returned job with get_job for the final video URL.
List recent jobs created through North Noir MCP for this user.
Inspect the timed sections in a hidden North Noir MCP Studio project using a project id returned by a workflow.
Create an empty North Noir Studio project for an AI-drawn video (no uploaded footage). Returns a project_id used by every other tool in this pipeline. The drawing model writes the scene and subject once and every frame is composed in code at 30 fps. Then call plan_drawn_video with a creative brief to plan the video.
DEPRECATED alias of create_drawn_video_project: call create_drawn_video_project instead. Create an empty North Noir Studio project for an AI-drawn video (no uploaded footage). Returns a project_id used by every other tool in this pipeline. The drawing model writes the scene and subject once and every frame is composed in code at 30 fps. Then call plan_drawn_video with a creative brief to plan the video.
Plan a from-scratch AI-drawn video: North Noir splits the brief into timed sections and writes each one's direction, then STOPS and returns a token estimate for approval. This call does not render anything. Choose the drawing model with drawing_model (North Noir's own, or a saved BYOK provider key), and optionally turn sound on (sound_effects / sound_source). The response returns plan.summary, plan.graphics (the timed sections), estimated_tokens, tokens_remaining and affordable. Report the sections and the token cost to the user briefly, then call confirm_drawn_video once they approve. If affordable is false, tell them they need more tokens instead of confirming. Do this BEFORE planning.
DEPRECATED alias of plan_drawn_video: call plan_drawn_video instead. Plan a from-scratch AI-drawn video: North Noir splits the brief into timed sections and writes each one's direction, then STOPS and returns a token estimate for approval. This call does not render anything. Choose the drawing model with drawing_model (North Noir's own, or a saved BYOK provider key), and optionally turn sound on (sound_effects / sound_source). The response returns plan.summary, plan.graphics (the timed sections), estimated_tokens, tokens_remaining and affordable. Report the sections and the token cost to the user briefly, then call confirm_drawn_video once they approve. If affordable is false, tell them they need more tokens instead of confirming. Do this BEFORE planning.
Give the go-ahead for whichever step an AI-drawn video job is waiting on. There are two such moments. First, at awaiting_confirmation: approves the quoted plan and starts the paid render. Only call it after showing the user the estimate and getting explicit approval, and never when the plan reported affordable: false. Second, at awaiting_review: the video is rendered and the user has had a chance to look at it, so this assembles the final export. Poll the returned job with get_job; the finished video URL appears when it completes.
DEPRECATED alias of confirm_drawn_video: call confirm_drawn_video instead. Give the go-ahead for whichever step an AI-drawn video job is waiting on. There are two such moments. First, at awaiting_confirmation: approves the quoted plan and starts the paid render. Only call it after showing the user the estimate and getting explicit approval, and never when the plan reported affordable: false. Second, at awaiting_review: the video is rendered and the user has had a chance to look at it, so this assembles the final export. Poll the returned job with get_job; the finished video URL appears when it completes.
Start a North Noir story (1000–150000 words, narrative or screenplay, English/German/Spanish/French). Paid by token usage — a 402 free_plan_byok_required means the free plan needs a BYOK story_model. Start returns a story_id; poll with get_story until status is completed, then follow text_url for the document. Chain: point generate_story_audio at the finished text to narrate it, and create_drawn_video to illustrate it.
Poll a story started by generate_story: returns status (queued/processing/completed/failed), progress, batches done/total, words so far, and on completion the document id plus a text_url. To turn the finished story into audio, pass its text to generate_story_audio; to illustrate it, describe it to create_drawn_video.
Synthesise a voiceover from a script and place it on the project's narration track. Paid by character count. Call this once the project exists. The script supports simple SSML <break> tags for pauses. By default North Noir picks a fitting voice; pass voice_key only if the user named one.
Generate a looping background-music bed for the project and place it on the music track. Paid by length. Keep the prompt short and descriptive (mood, genre, instrumentation).
Generate a short sound effect and place it on the project timeline. Paid by length. Keep the prompt short and concrete ("a wooden door creaks open, close mic").
Read a script aloud as one long voiceover (better than generate_narration for a full read). Pass the script text in `story` — North Noir writes it into the project, so it must be supplied the first time (pass the same text again when polling). Start returns task_ids; call again with mode "poll" and those task_ids until status is completed. Paid.
List the providers a North Noir user can bring their own key for — AI labs, inference providers, aggregators, and image/video/audio/search services. Each entry says what it is used for and whether it is live. Read-only.
List the BYOK provider keys saved on the caller's North Noir account: which providers have a key, whether it is active, and the last four characters. Never returns the key itself. Read-only.
Return a secure North Noir link where the user can paste a provider API key. This tool NEVER accepts a key: an API key must not be typed into an AI chat. Give the user the link and this instruction: "Open this link to paste your key securely — never paste an API key into this chat". After they save it, use test_provider_key and list_provider_keys to confirm it works.
Make the cheapest real call a provider offers and report whether the saved key works, marking it active or invalid. Paid only insofar as the provider may charge a token or two. Use it after a key is saved or when a run fails with a key error.
Delete the caller's saved key for one provider. Runs that relied on it fall back to North Noir's own provider keys (and are billed for them). Ask the user to confirm before calling it.
List the chat models the saved provider key can use, fetched live from the provider. Use it to choose a model before set_drawing_model. Read-only.
Choose which model of a saved provider key does the drawing-model work (the LLM that writes the brief and plans the scene). North Noir probes the model before saving it. Also used as the per-run `drawing_model` on create_drawn_video. Free.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
North Noir MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Gmail tool your agent needs.
Free to start.