Tools provided
Tools the agent exposes — your AI client calls them automatically when it needs them.
- introgen_guide — The IntroGen production guide. Start with topic "workflow" (the whole run, stage by stage). Other topics: workflow, plan-template, craft, motion, cinematic, scene-kit, toolbox, types, api, example. Read "api", "motion" and "example" before writing any scene code.Read-only
- introgen_list_productions — Your productions and their sandbox status.Read-only
- introgen_start_production — Create a new production workspace and, when a website is known, start capturing it (screenshots, texts, brand colors/fonts, logo, facts). Give a short unique name (slug, e.g. "acme-launch"). Pass `url` for a website and/or `brief` — a FindAgent briefer record (introgen_brief object) or free text. Returns immediately; follow `next`.Can change dataopen internet
- introgen_status — Where the production stands: stage, the running job (with its log), compositions, still freshness, music, finished files — and `next`, the exact next step. Call it whenever you are unsure what to do.Read-only
- introgen_read — Read a file (or list a folder) of your production: captures and brand facts under public/<name>/, your plan and scenes under src/projects/<name>/, src/Root.tsx, stills under renders/qa/<Comp>/, finished files under out/<name>/. Images come back as images (downscaled).Read-only
- introgen_write — Create or replace text files in your production: src/projects/<name>/** (plan.md, project.json, Video.tsx, scenes*.tsx, theme, assets.json …), public/<name>/gen/** (SVGs you author) and src/Root.tsx (register your <Composition>s). Imports are limited to remotion, @remotion/*, react, zod, src/core, src/kit and your own project. Changing plan.md after approval withdraws the approval — show the person the new plan.Can change data
- introgen_check — Run the deterministic gates. what=plan: plan lint (slideshow risk, unbacked generic phrases) + fact verification against the capture. what=scenes: TypeScript, scene lint (static scenes, asset montage, overflow, contrast) and the fact gate (every on-screen claim cites a plan fact). Fix every finding before stills.Read-only
- introgen_approve_plan — Record that the PERSON approved plan.md. Call this only after they explicitly said yes to the plan you showed them — never on your own judgment. The plan lint must pass.Can change data
- introgen_stills — Render one still per scene for EVERY registered format, the scene-boundary proofs and a contact sheet per composition (background job, 1-5 min). Then read renders/qa/<Comp>/contact-sheet.png for each format and judge it.Can change data
- introgen_music — action=list: the licensed music pool (Mixkit Free, commercial use). action=select with `track`: set the film’s music bed.Can change data
- introgen_render — Render every format and resolution in project.json (formats, res), mux the music, build the poster/thumbnail/preview, and scan the delivered film every 0.2 s into renders/qa/<Comp>/film-NN.png — a background job. The stills must be fresh and the plan approved. Follow with introgen_status, read the film scan, then introgen_files.Can change data
- introgen_files — Signed download links (valid 72 hours) for the finished films, posters, thumbnails and preview GIFs.Read-only
- introgen_cancel — Stop the production’s running capture / stills / render job.Can change data
- introgen_delete_production — Permanently delete a production and everything in it (captures, code, renders). Ask the person first.Can delete data
- introgen_preview — Render a fast half-resolution DRAFT of the film to watch before the final render (the cloud has no live Studio). No quality gates, no delivery — a background job (1-3 min); then introgen_files lists `<name>-<Comp>-draft.mp4`. `format` = wide (default), vertical or square. Use it to judge motion and timing; the stills stay the frame-by-frame check.Can change data
- introgen_add_materials — Bring the person’s own files into the production: logo pack (zip), brand guide or deck (PDF, PPTX, DOCX, Google Slides/Docs), product photos, fonts, footage (MP4/MOV/WebM). Each file is a share link (`url`: Dropbox, Google Drive/Slides/Docs, any https file link), an `upload` from introgen_upload_link, or — small files only — inline `base64` / `text`. A background job fetches them, unpacks zips, extracts text and page images from documents and writes the digest public/<name>/input/materials.md. RCan change dataopen internet
- introgen_upload_link — A one-hour upload link for ONE file too large to send inline. The PERSON (or you, when you have a shell) PUTs the file with the returned curl command; then pass `upload` to introgen_add_materials (or to introgen_reference for a reference video).Can change data
- introgen_reference — Turn a video the person likes into PACING & STYLE notes (cut rhythm, shot lengths, motion energy, palette, loudness, tempo, a keyframe contact sheet) — a background job. `url`: a YouTube or Vimeo link, or a direct video file link (Dropbox / Drive / https .mp4); or `upload` from introgen_upload_link. STYLE ONLY: nothing seen or heard in it may become a claim about the brand. Output: public/<name>/reference/notes.md (+ contact.jpg).Can change dataopen internet
- introgen_voices — The curated neural voices per language (first = default), which languages a film can be dubbed into, and the synthesis engine this studio runs: Azure Speech (licensed), the studio’s own Chatterbox voice (licensed; `speakable` marks its 23 languages) or Edge-TTS (DRAFT — not licensed for commercial use).Read-only
- introgen_voiceover — action=synthesize: voice the narration into public/<name>/vo/<scene>.mp3 (+ a timing sidecar per clip) — the files the render, captions and ducking already read. A background job; the plan must be approved. The script is plan.md’s VO column (captions and dubs read it too); pass `lines` only to voice specific scenes (keep plan.md in step). `voice` or `lang` picks the voice (introgen_voices). action=status: each clip’s voice, engine and spoken length. Every reply names the engine; an Edge-TTS voicCan change data
14 more tools
- introgen_captions — Turn burned-in captions on or off for the next render. On: introgen_render also delivers <file>-captioned.mp4 beside the clean master, timed to the voice-over clips (word-timed phrases) or, without VO, to the plan’s scene lengths using the VO column, else the on-screen copy. Re-render to apply.Can change data
- introgen_dub — The same approved, delivered film in another language: translated on-screen copy, re-voiced narration, re-timed captions (scripts/dub.mjs). Scenes must route copy through tx('<id>', '<text>') and VO paths through voSrc() (src/core/dub). Steps: action=extract → the source strings (id, text, width budget maxEm, fact ids, protected terms); YOU translate them. action=translate with `strings` {id: translation} → validated (facts, numbers, brand terms, width, glyphs), then the dub VO is voiced (a backCan change data
- introgen_stock_broll — AMBIENT motion plates from Pexels for a brand whose own site is too thin to carry a film: textures, light, weather, abstract motion, generic environments. Stock is never the client’s product, premises, team or customers and never sits on a fact beat (a plan row citing an F-id). action=fetch with `query` (a mood, never the brand) → a background job downloads the best clips to public/<name>/stock/ with a licence manifest (stock.json). action=check → the studio’s gate: every plan row that uses stocCan change data
- introgen_generate_media — AI-generated STILL images for scene backgrounds (non-claim visuals: a mood, a setting, a texture — never a product, a logo, a person or readable text). Write the requests first in src/projects/<name>/project.json: "media_gen": { "enabled": true, "capUsd": 2, "scenes": [{ "sceneId": "S3", "role": "background", "prompt": "…calm centre, detail at the edges — no text, no logos, no readable UI, no faces", "size": "1024x1024" }] } (roles: background, broll, panel; sizes: the provider’s list in the repCan change data
- introgen_cutdowns — Cut the DELIVERED film into shorter social lengths (e.g. 60s → 30/15/6) — trimmed from the finished master, not a re-render. A background job. Default: every format, the adaptive ladder for the film (only lengths shorter than it), each cut the hook + strongest middle + close crossfaded, so a length is approximate (the reply gives each cut’s real length). `exact=true` = a straight trim from the start to exactly N seconds. The cuts land as <name>-<Comp>-cut<N>.mp4 for introgen_files.Can change data
- introgen_brand_kits — Your saved brand kits (palette, type, logo, tone, voice, music) — kept after a production is deleted and usable in any of your productions. action=list · action=save (name + kit: store this production’s brand identity, the logo image included; replace=true overwrites) · action=apply (name + kit: put a saved kit into this production — src/projects/<name>/brand-kit.json, src/brands/<name>/brand.json and public/<name>/kit/logo.*) · action=rename (kit + new_name).Can change data
- introgen_templates — Your saved production templates — a film’s STRUCTURE (scene roles and lengths, shared motifs, music mood, formats, resolution, length), never its copy, facts, colors or assets. action=list · action=save (name + template: store this production’s structure; replace=true overwrites) · action=rename (template + new_name). Start a new production on one with introgen_start_from_template.Can change data
- introgen_start_from_template — introgen_start_production, laid out on one of your saved templates: its formats / resolution / length become the defaults (what you pass wins), and its scene skeleton is written to src/projects/<name>/.template-scaffold.json. Plan THIS brand on that skeleton (same roles and scene lengths, fresh facts and copy from this capture). Apply a brand kit after the capture with introgen_brand_kits action=apply.Can change dataopen internet
- introgen_library_delete — Permanently delete one of your saved brand kits or templates. Ask the person first.Can delete data
- introgen_batch_start — Start up to 5 productions in ONE call — each gets its own workspace and its own capture, running in parallel. Give each item a unique `name` and a `url` and/or `brief`; `formats`, `res`, `length` apply to every item unless an item sets its own. Items are started one after another and one failing (a name clash, the quota) never stops the rest — read each item's `ok`/`error`. Then call introgen_batch_status to watch all of them, and drive each production through its own plan, scenes, stills and reCan change data
- introgen_batch_status — One reply for every production you have: its stage, the running or last job (kind and state, never the log), the studio minutes used and the exact next step. Use it to watch a batch and to find the production that needs you (`needs: "you"` = a job failed or was interrupted, or the plan awaits approval). For the full picture of one production call introgen_status.Read-only
- introgen_resume — Run again the job that FAILED or was INTERRUPTED (the sandbox stopped under it) — the same step with the same inputs, no need to rebuild the command. It counts against the production's studio minutes like any job. For a failed job read introgen_status first and fix the cause (a bad scene, a blocked page) before resuming.Can change data
- introgen_contact_sheets — Every format’s QA contact sheet (one image per composition, row-major scene order, downscaled) in ONE reply, with each sheet’s freshness. Call it after introgen_stills finishes and judge every image; in hosts with in-chat panels the person sees the sheets too.Read-only
- introgen_scenes — Every scene of the finished film as an image, in order (one composition — the format you pick, wide by default), in ONE reply and as a panel. Call it ONCE at the hand-over, right after introgen_files: show the person the whole film scene by scene, then name the scenes they may want changed. It reads the stills of the last introgen_stills run.Read-only