AI film lab for filmmakers: generate and review images/clips with input provenance, cost preflight
Connect Remote server
claude mcp add --transport http filmlab https://mcp-lab.thefilmradar.com/mcp
{
"mcpServers": {
"filmlab": {
"url": "https://mcp-lab.thefilmradar.com/mcp"
}
}
}
{
"servers": {
"filmlab": {
"type": "http",
"url": "https://mcp-lab.thefilmradar.com/mcp"
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp-lab.thefilmradar.com/mcp
Tools 80 found in our last check
lab_list_projectsList FilmLab projects (id, title, current pipeline stage). Call this first to find a project_id for the other tools. Shows up to 20 items; `total` counts your active projects (up to 200) and `truncated: true` means the list is cut off — sorted by last change, so older projects d…
lab_wissenUse when the person asks a film-craft question: what a term means, which rule or convention applies, how something is usually done in camera, editing, sound or production — answer from here, not from memory. Ask the FilmOS knowledge layer — measured craft knowledge from vetted s…
lab_widerrufRecord a correction in the FilmOS knowledge layer when the user contradicts something you asserted from it. Use this the moment a contradiction is stated — not at the end of the session, and not instead of accepting the correction in your answer. It stores the claim AND what is…
lab_playbookThe rules of one working surface, generated from the code: what the surface is, what an agent can trigger itself, what exists but only by hand, and what does not exist at all. Call this BEFORE answering what is possible on a surface — the three lists come from a table with a cod…
lab_list_modelsThe model catalog: what every video or image model can do — resolutions, durations, aspect ratios, audio, reference limits, price per second or per image — grouped by capability class with a one-line explanation per group. Read this before choosing a `tool` for lab_generate/lab_…
lab_regie_technikenUse when the person asks HOW to stage or shoot a feeling or effect (which angle, movement, framing or light makes a scene feel tense, tender, triumphant, uneasy) or wants directing options for a shot. Directing techniques: camera angle, framing, composition, movement, lighting a…
lab_whoamiWho is connected: the FilmLab account (email, user id, name, tier, credits) and how this connection signed in (oauth, oauth_geraet, bridge_key, legacy service user, or anonym). For a device sign-in it also lists the device limits (projects, credits, end date). Call it when resul…
lab_get_stateOne call, the whole picture: account (tier, credits, reset), default models with price, jobs in flight, catalog freshness, project count. Pass project_id for that project's sequences, assets and review-queue length. Read-only, free.
lab_get_projectUse when the person asks where a project stands: its current stage, what is finished, what comes next, or wants the project's state before continuing. Get a single FilmLab project with its full stage state, including its `datenmodus` ('eu' or 'frei'). Needs the project_id (from…
lab_zielgruppeRead or set a project's audience (zielgruppe) and target markets (zielmaerkte). With project_id only: read. Set zielgruppe 'kinder' or 'jugendliche' whenever the project is made for children, families or teenagers — do it BEFORE creating characters or generating. That switches o…
lab_speicherortRead or set where a project's generated material is kept. With project_id only: read. 'cloud' keeps it in FilmLab's private storage (default). 'lokal' and 'server' keep it private until publication: FilmLab only parks each new file for pickup, the local FilmLab bridge (DaVinci R…
lab_look_in_postRead or set a project's 'look in post' flag. Use it when the person grades in DaVinci Resolve with the FilmLab Look plugin and wants the lens and film look applied there instead of baked into the generated pictures. With project_id only: read. With look_in_post true, image and v…
lab_get_contextRead the accumulated context/output for one pipeline module of a project (e.g. the IDEE, STORYBOARD or SHOTS stage). Needs project_id and module name.
lab_get_jobGet the status of a background job by job_id (status is queued|processing|done|failed). Poll this after starting a long-running generate/export. Returns the job record; its payload and result are objects (for a clip chain: result.zusammenfassung, result.ketten, result.clips). Fo…
lab_search_catalogSearch the FilmLab universe catalog of AI tools, news and companies. Query must be at least 2 characters. Returns up to 20 matches with a total count.
lab_create_projectCreate a new FilmLab project. Returns the new project id and its `datenmodus`. Optionally set a title and the data mode: 'eu' keeps the project on models whose data path is proven inside the EU (lab_list_models eu: true lists them; other models are refused with alternatives), 'f…
lab_run_moduleRun ONE pipeline module for a project (context is injected from upstream modules + crew agents). SYNCHRONOUS and LLM-heavy: light modules return in seconds; heavy ones can exceed ~55s and then time out (504) — run those in the FilmLab web app instead. Pass an invalid module name…
lab_generateGenerate an image on the production pipeline (fal.ai, quota-tracked, persisted to the project's gallery). Waits up to `wait_s` seconds (default 45) for the image and then answers with the finished rows — image_url set, inline previews attached, so the picture is in the answer li…
lab_animateGenerate a clip from text or animate a completed image with a video model. Without a start image, uses text-to-video where the model supports it (lab_list_models: t2v). Check the price with get_cost or let the user confirm a card via lab_propose. Costs credits when called withou…
lab_animate_batchAnimate MANY images into videos in ONE call (max 25 jobs). Prefer this over looping lab_animate: it validates every job BEFORE spending any quota, so an invalid job 12 of 15 does not leave 11 paid-for generations running. Quota is spent once, collectively (one ledger row); refun…
lab_proposePropose a generation for the user to confirm: validates the parameters against the catalog, computes the price, and shows a card (widget hosts) or returns the same object as text. Video without a source image or clip uses text-to-video where the model supports it (lab_list_model…
lab_run_proposalRun a proposal exactly as shown — same model, same parameters, same price. Called by the card's button, or by you after the user confirmed. Single use: the proposal is consumed BEFORE the run, so a second call is refused instead of paying twice. Valid 15 minutes, for the account…
lab_list_locationsList location boards, newest first — START HERE to find a `location_id` for lab_generate / lab_animate. Each entry carries its `prompt_prefix_en`: that is the exact text appended to your prompt as 'Location: …', so you can judge whether the board fits BEFORE spending quota. A bo…
lab_get_locationGet ONE location board in full — all descriptive fields plus its reference images and `prompt_prefix_en`. Use it to check what a board actually anchors before generating with it.
lab_list_project_locationsLocation boards bound to ONE project. Narrower and more correct than lab_list_locations when you already know the project: it cannot leak boards from a different project with the same title. Boards created before the project binding existed (project_id NULL) deliberately do NOT…
lab_list_stil_kitsList the style kits of this project (rules, palette, up to three reference images, @stil_ tag) and which one is the project default (standard_id). Free. Write the tag into an image or video prompt to use that kit for this one call instead of the default.
lab_create_stil_kitCreate a style kit in this project: rules (English text), palette (#RRGGBB) and up to three reference images taken from this project's own images (image ids). Free, no model call. Set als_standard to make it the project default, which then runs in every image and clip of the pro…
lab_stil_kit_standardSet the project's default style kit (it then runs in every image and clip of the project), or clear the default by omitting stil_kit_id. Free.
lab_stilblattShow this character's style sheet in this project: its views, which style kit it carries, whether it is approved, and whether the character has changed since (veraltet). A character without one returns null. Free.
lab_stilblatt_erzeugenRestyle a character's neutral sheet with a style kit, for this project only. The neutral sheet stays unchanged. The result is NOT used by any run until lab_stilblatt_freigeben. Generating again removes an existing approval, and a different kit starts the sheet over. Costs credit…
lab_stilblatt_freigebenApprove the style sheet: from now on images, clips, storyboards and identity checks in this project use it instead of the neutral sheet. Show the person the views first and call this only after they said yes. Never approve on your own.
lab_stilblatt_verwerfenDiscard the style sheet, so runs in this project use the neutral sheet again. A new sheet costs credits again, so confirm with the person first.
lab_clip_bauplanTurn a structured clip plan into a sectioned video prompt (style, references, world, camera, timestamped beats with a living tail, title, sound, continuity) and check it before any paid run: beats past the duration, overlaps, a title after the end, a cut inside a one-shot, an un…
lab_list_propsList the props (Requisiten) of this project, including @prop_ tags, descriptions and generated views. Free. Use the tags in image and video prompts: the description always goes into the prompt, the front view goes along as a reference image in lab_generate and lab_reference_moti…
lab_lizenz_anbietenOffer a license for your own asset or an asset of a studio you can edit. The recipient must be an existing account. No charge until the recipient accepts. On acceptance, the owner receives floor(80% of the price) as non-expiring, spend-only credits; the platform retains the rema…
lab_lizenzenList received and offered asset licenses with their status in the current workspace. Free.
lab_lizenz_annehmenAccept a license addressed to your own account (studio: owner account). First call get_cost:true, show the exact credits, and obtain confirmation before accepting. Acceptance spends credits through the platform and creates a private PDF certificate. The owner receives floor(80%)…
lab_lizenz_ablehnenDecline an offered license addressed to your account. Free.
lab_lizenz_zurueckziehenWithdraw your license offer before acceptance. Free.
lab_lizenz_widerrufenOwner only: revoke a license, preserving its PDF. First call get_cost:true, show the refund and owner debit, and obtain confirmation. Fixed terms refund remaining inclusive days (full before start); unlimited terms refund fully through day 14 after acceptance, then zero. The own…
lab_lizenz_nachweisGet a private PDF certificate URL, valid for five minutes. Only for the parties to this license.
lab_create_propCreate a named prop (Requisite) in this project. Free, no model call: its prompt prefix is built deterministically from the fields. Returns its @prop_ tag for shot prompts. To generate views use lab_prop_ansichten separately (costs credits).
lab_prop_ansichtenGenerate product-photo views of a prop using Flux 2 Pro. Costs credits per view: front is text-to-image, side/back/top/detail edit the front anchor. First call with get_cost:true, name the exact credits to the person, and obtain confirmation before generating. Missing images are…
lab_create_locationCreate a location board. The backend derives an English `prompt_prefix_en` from the fields you give — that prefix is what later anchors every image and clip shot there, so the richer the description, the more consistent the place. Pass project_id to bind the board to a project (…
lab_generate_location_variantsGenerate time-of-day reference images for a location board (costs credits per variant — check the price with get_cost first). Without `variants` the backend renders all four. The images are what makes a board usable as a visual reference.
lab_enrich_location_prefixAppend context to a board's `prompt_prefix_en` (plain string concatenation server-side — no AI call, no quota). Idempotent: context already present in the prefix is not duplicated. This does NOT rewrite or regenerate the prefix — for a board whose prefix is empty, too thin or a…
lab_restyle_locationRestyle an existing board towards a wish (costs credits — exact price via get_cost: true) — same place, different look, e.g. 'the same flat, twenty years later'. Changes the board itself, so images generated afterwards follow the new style. Also the repair path for a board whose…
lab_location_panoramaGenerate a 360° equirectangular HDRI panorama of a place (costs credits — exact price via get_cost: true). Pass loc_id to persist it on that board, so the viewer finds it again; without loc_id it is a one-off.
lab_weltBuild a walkable 3D WORLD (Gaussian splat, World Labs Marble) from ONE location picture (costs credits — exact price via get_cost: true). Source: a location board's time variant (loc_id + variante) OR a gallery image of the project (quell_bild_id). stufe 'entwurf' is a cheap dra…
lab_welt_statusStatus of a world from lab_welt: processing | completed | failed. When completed, `studio` is the link to walk it and save angles (free). A failed world has been refunded. Read-only, free. Pass wait_s (up to 15) to wait inside the call.
lab_analyze_location_imageRead a photo and extract location fields from it (Gemini Vision, costs credits — exact price via get_cost: true). Returns the fields — it does NOT create a board; feed the result into lab_create_location yourself. Note the payload: the image travels as base64 inside the call, so…
lab_delete_locationDELETE a location board permanently. There is no undo and no soft-archive — the row is removed. Images and clips that were generated with this `location_id` keep their already-rendered prompt, but the board they point at is gone: nothing can be re-anchored to it, and lab_get_loc…
lab_list_charactersList the character sheets in the FilmLab cast register (id, name, age, gender, project_name, prompt_prefix_en). Call this BEFORE lab_generate whenever a person must look the same across several images: pass the id you find here as `character_refs` instead of re-describing the pe…
lab_get_characterGet ONE character sheet in full — every descriptive field plus the three that decide what you can do with it. `prompt_prefix_en` is the text block describing this person; it is what the backend prepends wherever the sheet is used. `reference_images` decides whether the sheet is…
lab_create_characterCreate a character sheet for a human, animal or creature in the cast register. The backend derives an English `prompt_prefix_en` from the fields you give — that prefix is what later describes this character in every image, so the richer the description, the more stable the ident…
lab_generate_character_referenceGenerate the reference sheet for a character — six core views rendered from the sheet's `prompt_prefix_en`: detail (three-quarter close-up, the identity anchor), frontal (frontal close-up), profile, fullbody (front), fullbody_back (back view: hair and the back of the costume) an…
lab_get_character_sheetThe character sheet PREPARED FOR PROMPTING: base prefix, the state sheets by name, which reference views exist, and the ready-made sentence to paste into a lab_generate prompt. Same source as lab_get_character, different shape — use this one when you are about to generate, and l…
lab_cast_gapsFind people who appear in a project's material (script / cast module) but have NO character sheet yet. Returns up to 6 `missing` entries, each with a name and a short hint from the text. It creates nothing — lab_cast_autopopulate does that. Costs an LLM run, so it is credit-gate…
lab_cast_autopopulateCreate character sheets for the people found in a project's material — the writing counterpart to lab_cast_gaps. Creates at most 6 per call and binds each to the project. Costs an LLM run per call. Run lab_cast_gaps first if you want to see what it would create. The sheets it cr…
lab_cast_kandidatenPropose THREE candidates for ONE role, the way a street-casting director does: the obvious face, the one you would walk past, and the one nobody would think of. Casting is choosing — this gives you something to choose from. It creates nothing: pick one and create it with lab_cre…
lab_create_sequenceCreate a sequence (Stage 9 timeline) inside a project — START HERE to turn generated shots into something the continuity pass can read. The new sequence is EMPTY: add shots with lab_add_clip before anything else works. lab_continuity_check rejects an empty timeline with 400. Ret…
lab_list_sequencesList a project's sequences: the main sequence (the film, `ist_haupt: true`, also in `haupt_sequenz_id`) first, then newest first. Trailers, opening titles and blocks are sequences too — edit the main sequence unless the person names another. Use it to find a `seq_id` instead of…
lab_schnitt_exportExport ONE sequence as an editing file for DaVinci Resolve, Premiere or Final Cut, so the cut can be finished there. Costs nothing. fcpxml (recommended for Resolve): V1 as the main storyline with gaps, the sequence's transitions as centered cross dissolves (dropped where the nex…
lab_get_sequenceGet ONE sequence in full — timeline (the shots in order), audio_tracks, transitions, duration_seconds and render status. Check `timeline` here before starting a continuity pass: an empty one is the single most common reason the pass refuses.
lab_shotsRead the SHOT layer of a sequence — which clips form one shot, which scene it plays in, who is in it, and what the continuity pass found. This is the layer above the timeline: lab_get_sequence gives you clips in a row, this one gives you the cut. Costs nothing, writes nothing. U…
lab_shots_ableitenDerive the shot layer from what the clips already say about themselves — consecutive clips of the same scene become one shot, and a scene that returns later becomes a second one (one location cut into twice is two shots). Costs nothing: it groups rows and reads titles, it genera…
lab_shot_abdeckungRead how far each shotlist shot (`sb_N`) of a project is covered — takes, the chosen take, the bound characters and location, and where it sits in the cut. Per shot: `takes_bild` / `takes_clip` (counts), `gewaehlt` (the chosen take, or null), `referenzen` (characters and locatio…
lab_aufloesungBreak one scene down into a STRUCTURED shot list of 2, 4 or 6 shots — each with shot size, camera angle, purpose and its own ready prompt, plus one shared floor plan (anchor, axis, light) so the shots cut together. Two families: an 'aufloesung' shows ONE moment from several angl…
lab_shots_setzenState the shot cut yourself: which clips form one shot, what it is called, which scene it plays in. This is the counterpart to lab_shots_ableiten — that one groups by the scene the clips already name, this one is for the judgement no field carries. Costs nothing. Use it where de…
lab_fassungenUse when the person asks about earlier states of a cut, wants to go back to a previous version, compare versions, name a version, or create a second cut (e.g. a short version next to the long one). The history and the versions of ONE cut (sequence). Every timeline write (lab_tim…
lab_add_clipAppend a shot to a sequence's timeline. Call it once per shot, in cutting order — `start_time` is computed from the clips already there, so appending in order is enough. The continuity pass reads exactly this timeline: a shot missing here is a shot nobody checks. Returns the new…
lab_timeline_applyWrite a WHOLE cut into a sequence in one call — clips in order with their lengths, an optional dissolve between them, an optional bed underneath. This is the counterpart to lab_get_sequence: that one reads the timeline, this one writes it. Prefer it over a chain of lab_add_clip…
lab_continuity_checkStart the continuity pass over a sequence — every shot is compared against its PREDECESSOR and, with check_references, against the character and location reference boards. This is the pass that catches drift (the flat that changed between two shots, the cardigan that turned into…
lab_identitaet_pruefenCheck whether still images of a project show the SAME character as its character sheet — before paid clips are made from them. Each image is compared against the sheet's detail and fullbody views. It judges identity (species, build, colouring, head shape, large markings), NOT st…
lab_beat_clipsTurn the still-image clips of a sequence into video clips that exactly fill their beat-snapped slots. Free — this tool itself generates nothing. aktion plan: one job per image clip, ready for lab_animate_batch — start image, the frame's motion (bewegung_en), and the SMALLEST dur…
lab_rezept_montageThe Montage recipe: one recurring character in 8–16 independent everyday gags, cut on the beat into a 9:16 reel of about 6–11 seconds with a music bed. It runs the existing steps in order — gags (lab_situationen), stills with the character and the phone-flash look (auto-storyboa…
lab_contact_sheetBuild a contact sheet for a generated clip — N frames spread evenly over its runtime, tiled into ONE image — and show it. This is how a clip gets judged at all: MCP has no video content type, so without a sheet a clip is just a URL and a promise. It is also the fastest way to SE…
lab_bilderSee a clip at EXACT seconds: up to 12 frames, in the order you list them, tiled into one image and shown. Use it to check what is on screen where you plan a cut, whether a motion has ended, or whether a face drifted between two moments — lab_contact_sheet spreads frames evenly a…
lab_captureSee the CUT at exact seconds of the finished film: up to 12 frames, tiled into one image and shown. Each second is mapped like the export maps it — which clip is on screen, where in its source (src_in_s counts), the export's framing (scaled and letterboxed), title cards drawn. A…
lab_render_framesSee the DELIVERED film: up to 12 frames from the finished export (lab_start_export → lab_get_export status done), tiled into one image and shown. This is the rendered picture WITH everything the render adds — lens/grade, lower thirds, title cards and the AI badge — so use it to…
Details
| Endpoint | https://mcp-lab.thefilmradar.com/mcp (Streamable HTTP) |
| First published | 17 Aug 2026 |
| Last updated | 17 Aug 2026 |
| Registry name | com.thefilmradar/filmlab |
More ai and media servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
