{"name":"com.instavar/mcp-server","slug":"instavar-mcp-server","title":"Instavar Video Templates and Studio","description":"Free Remotion and HyperFrames templates and creative guides; optional hosted Studio workflows.","url":"https://mcp.market/server/instavar-mcp-server","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":36,"stars":0,"forks":0,"downloads_week":324,"last_push_at":"2026-10-28T16:35:25.000Z","license":"MIT"},"uptime":{"percent":100,"checks":27,"ok":27,"last_checked_at":"2026-11-05T10:10:39.572Z","last_ok_at":"2026-11-05T10:10:39.572Z","latency_ms":544},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/instavar/mcp-server","website":"https://instavar.com/remotion","version":"0.7.0","remotes":[{"type":"streamable-http","url":"https://instavar.com/api/mcp/templates"}],"packages":[{"registryType":"npm","identifier":"@instavar/mcp-server","version":"0.7.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional key from https://instavar.com/studio/settings that unlocks hosted workflows.","isSecret":true,"name":"INSTAVAR_API_KEY"},{"description":"Override the Instavar API host. Defaults to https://instavar.com.","default":"https://instavar.com","name":"INSTAVAR_BASE_URL"}]}],"tools":[{"name":"create_video_brief","description":"Create a private hosted video and start rendering after the user confirms the complete brief and plan usage. Requires account linking. Automatic supplemental footage defaults to off; set automaticBroll to auto only if the user explicitly requests it. Preserve visual exclusions in scenes[].generationContract.prohibitedChanges, separately from the visible copy. Use real source media or explicitly accepted generated visuals for demonstrations; never silently replace requested footage with text. Plan distinct shots for a story, with each generated motion shot at most 15 seconds. For silent videos set narrationMode off and supply explicit scenes; omit script and any unsupplied caption. publishTarget is an optional layout hint, not a publish action; preserve the accepted aspectRatio. Put exact spoken words in script for narration, never filmmaking directions. Supplied originals must be uploaded and bound; do not replace missing branded media with stock. This is the hosted brief contract, not VideoSpec or paired-announcement source. Preserve requestId when retrying the same request, including after a timeout; use a new UUID for changed content. Returns a queued job, not a finished video. Does not publish.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","description":"Optional workspace override. For a new plan, omit this field so the server resolves the account default. A workspace ID returned by an account read is not a user selection. Supply this field only for a user-selected workspace or the workspace of an existing saved project. Ask only when the server requires selection; never fall back after denied access."},"requestId":{"type":"string","format":"uuid","description":"Stable retry identity for this exact approved brief. Reuse after uncertain responses."},"confirmed":{"type":"boolean","const":true,"description":"Set only after the user authorizes this hosted render and its plan usage."},"title":{"type":"string","minLength":1,"maxLength":120,"description":"Short title (max 120 chars)"},"script":{"type":"string","description":"Final spoken words. May be omitted only for narrationMode off with explicit scenes; never invent speech for a silent video."},"caption":{"type":"string","description":"Optional social caption. Omit when not supplied; no caption is invented or published."},"publishTarget":{"type":"string","enum":["linkedin","x","threads","instagram","tiktok","youtube","facebook","rednote","lemon8"],"description":"Optional platform layout hint, not publication authorization. If omitted, the internal compatibility default is linkedin; supply aspectRatio to preserve the accepted output shape. This operation never publishes."},"publishTargets":{"type":"array","items":{"type":"string","enum":["linkedin","x","threads","instagram","tiktok","youtube","facebook","rednote","lemon8"]},"maxItems":9,"description":"All allowed social destinations for this video"},"objective":{"type":"string","enum":["build_log","product_update","launch_update","faq","explainer","customer_story","directions","other"],"description":"Content objective (drives composition routing)"},"targetDurationSeconds":{"type":"integer","minimum":5,"maximum":600,"description":"Requested final video duration in seconds"},"narrationMode":{"type":"string","enum":["tts","off"],"description":"Disable synthesized narration for source-audio or silent work"},"lessonTitle":{"type":"string","description":"Display title rendered inside the video"},"visualDirection":{"type":"object","properties":{"communicationJob":{"type":"string","minLength":1,"maxLength":500},"emotionalTarget":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"attentionPath":{"type":"object","properties":{"first":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"next":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"proof":{"$ref":"#/properties/visualDirection/properties/communicationJob"}},"additionalProperties":false},"visualLanguage":{"type":"object","properties":{"space":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"line":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"shape":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"tone":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"color":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"movement":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"rhythm":{"$ref":"#/properties/visualDirection/properties/communicationJob"}},"additionalProperties":false},"camera":{"type":"object","properties":{"shotSize":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"angle":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"movement":{"$ref":"#/properties/visualDirection/properties/communicationJob"},"lens":{"$ref":"#/properties/visualDirection/properties/communicationJob"}},"additionalProperties":false}},"additionalProperties":false,"description":"Whole-video communication, attention, visual-language, and camera direction."},"steps":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"latex":{"type":"string"},"explanation":{"type":"string"}},"required":["label"],"additionalProperties":false},"description":"Structured steps for educational content (LaTeX)"},"scenes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["hero","points","equation","metric-bars","metric-compare","timeline","limit-cards","slide","caption-overlay","cta","progress-ring","metric-counter","callout","step-pill","cta-pulse","source-clip","source-image","route-card","video-window","image-window","custom"]},"layoutPreset":{"type":"string","const":"dark-cafe-announcement","description":"Fixed Remotion portrait cafe design using the same SVG artwork as the dark-cafe planning preview, with embedded Fraunces headline and Inter body/CTA fonts, warm dark-green background and cream illustrated coffee cup. Use on a custom 9:16 scene after the user selects this design. Map title to the headline, subtitle to body copy and text to the CTA. Palette, typography and cup are built into the preset; separate font or color controls are unnecessary. No generated assets."},"durationInFrames":{"type":"number"},"narrationText":{"type":"string"},"visualResolution":{"type":"object","properties":{"intent":{"type":"string","minLength":1},"media":{"type":"string","enum":["still","motion"],"default":"still"},"source":{"type":"string","enum":["auto","stock","generate"],"default":"auto"}},"additionalProperties":false},"title":{"type":"string"},"subtitle":{"type":"string"},"text":{"type":"string"},"points":{"type":"array","items":{"type":"string"}},"latex":{"type":"string"},"value":{"type":["string","number"]},"max":{"type":"number"},"label":{"type":"string"},"unit":{"type":"string"},"prefix":{"type":"string"},"suffix":{"type":"string"},"decimals":{"type":"number"},"color":{"type":"string"},"tone":{"type":"string"},"iconKey":{"type":"string"},"stepNumber":{"type":"number"},"totalSteps":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"number"}},"required":["label","value"],"additionalProperties":false}},"src":{"type":"string"},"caption":{"type":"string"},"source":{"type":"string","enum":["url","generate"]},"generatePrompt":{"type":"string"},"generationContract":{"type":"object","properties":{"globalInvariants":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300},"maxItems":20},"shotDelta":{"type":"string","minLength":1,"maxLength":500},"referenceBindings":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","minLength":1,"maxLength":200},"roles":{"type":"array","items":{"type":"string","enum":["identity","appearance","motion","composition","camera","environment","style"]},"minItems":1,"maxItems":7}},"required":["assetId","roles"],"additionalProperties":false},"maxItems":20},"prohibitedChanges":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300},"maxItems":20},"reviewCriteria":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300},"maxItems":20}},"additionalProperties":false},"trimStartSeconds":{"type":"number","minimum":0},"trimEndSeconds":{"type":"number","exclusiveMinimum":0},"playbackRate":{"type":"number","minimum":0.25,"maximum":8},"objectFit":{"type":"string","enum":["cover","contain"]},"objectPosition":{"type":"string"},"scaleFrom":{"type":"number","minimum":0.5,"maximum":2},"scaleTo":{"type":"number","minimum":0.5,"maximum":2},"panFromX":{"type":"number","minimum":-50,"maximum":50},"panToX":{"type":"number","minimum":-50,"maximum":50},"panFromY":{"type":"number","minimum":-50,"maximum":50},"panToY":{"type":"number","minimum":-50,"maximum":50},"routeFrom":{"type":"string"},"routeTo":{"type":"string"},"routeLabel":{"type":"string"},"overlayKind":{"type":"string","enum":["none","hook","stage","end-card"]},"overlayPosition":{"type":"string","enum":["center","top","bottom"]},"accentColor":{"type":"string"},"overlayBackgroundColor":{"type":"string"},"cutFlash":{"type":"boolean"},"muted":{"type":"boolean"},"protectedRegionEffects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"kind":{"type":"string","const":"border-glint"},"coordinateSpace":{"type":"string","const":"output-frame-v1","default":"output-frame-v1"},"region":{"type":"object","properties":{"leftPercent":{"type":"number","minimum":0,"maximum":100},"topPercent":{"type":"number","minimum":0,"maximum":100},"widthPercent":{"type":"number","exclusiveMinimum":0,"maximum":100},"heightPercent":{"type":"number","exclusiveMinimum":0,"maximum":100}},"required":["leftPercent","topPercent","widthPercent","heightPercent"],"additionalProperties":false},"startFrame":{"type":"integer","minimum":0,"default":0},"endFrame":{"type":"integer","exclusiveMinimum":0},"speedUpFrame":{"type":"integer","minimum":0},"color":{"type":"string","maxLength":64,"default":"#ffffff"},"thicknessPercent":{"type":"number","exclusiveMinimum":0,"maximum":20,"default":3}},"required":["id","kind","region","endFrame"],"additionalProperties":false},"maxItems":4},"flashAtFrame":{"type":"integer","minimum":0},"flashDurationFrames":{"type":"integer","exclusiveMinimum":0,"maximum":15}},"required":["type"],"additionalProperties":false},"description":"A shot-by-shot plan. Generated motion shots must be at most 450 frames (15 seconds at 30 fps). Split longer stories into distinct shots; bind supplied media by src or a matching scene asset slot."},"aspectRatio":{"type":"string","enum":["9:16","4:5","1:1","16:9"],"description":"Aspect ratio (defaults to 9:16 when omitted)"},"compositionId":{"type":"string","description":"Remotion composition ID override (advanced)"},"voiceId":{"type":"string","description":"TTS narrator voice ID. Unknown IDs are rejected before rendering; when omitted, the org's saved voice preference or the system default is used and reported in the response's resolution block."},"assetSlots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"sceneId":{"type":"string","minLength":1},"region":{"type":"string","enum":["background","left-half","right-half","figure-center","corner-inset","lower-third"]},"role":{"type":"string","enum":["background","figure","inset","lower-third","diagram-node"]},"kind":{"type":"string","enum":["image","video"]},"source":{"type":"string","enum":["auto","stock","generate"]},"intent":{"type":"string"},"style":{"type":"object","properties":{"opacity":{"type":"number","minimum":0,"maximum":1},"fit":{"type":"string","enum":["cover","contain"]},"z":{"type":"number"}},"additionalProperties":false},"timing":{"type":"object","properties":{"fromPct":{"type":"number","minimum":0,"maximum":1},"toPct":{"type":"number","minimum":0,"maximum":1}},"additionalProperties":false},"url":{"type":"string","format":"uri"}},"required":["id","region","role","kind","source","intent"],"additionalProperties":false},"description":"Optional storyboard asset slots: region-placed image/video assets or placeholders attached to the whole video or a specific scene."},"audioLayers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"src":{"type":"string","format":"uri"},"startFrame":{"type":"integer","minimum":0,"default":0},"durationInFrames":{"type":"integer","exclusiveMinimum":0},"volume":{"type":"number","minimum":0,"maximum":1,"default":1},"fadeFrames":{"type":"integer","minimum":0,"default":0},"role":{"type":"string","enum":["music","foley","transition","effect"]}},"required":["id","src","role"],"additionalProperties":false},"description":"Optional typed music, Foley, transition, and effect layers."},"directions":{"type":"object","properties":{"subtitle":{"type":"string"},"unitLabel":{"type":"string"},"distanceTimeChip":{"type":"string"},"clips":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"trimStartSeconds":{"type":"number"},"trimEndSeconds":{"type":"number"},"speed":{"type":"number"},"mirrorFlip":{"type":"boolean"}},"required":["src","trimEndSeconds"],"additionalProperties":false},"minItems":1},"cues":{"type":"array","items":{"type":"object","properties":{"atSeconds":{"type":"number"},"text":{"type":"string"},"arrow":{"type":"string","enum":["left","right","forward"]},"step":{"type":"number"}},"required":["atSeconds","text"],"additionalProperties":false}},"outro":{"type":"object","properties":{"heading":{"type":"string"},"body":{"type":"array","items":{"type":"string"}},"seconds":{"type":"number"}},"additionalProperties":false},"music":{"type":"object","properties":{"perSegment":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"clipIndexStart":{"type":"number"},"hotOffsetSeconds":{"type":"number"},"volume":{"type":"number"}},"required":["src"],"additionalProperties":false}},"crossfadeSeconds":{"type":"number"}},"additionalProperties":false}},"required":["clips","cues"],"additionalProperties":false,"description":"DirectionsWalkthrough 'find-us' payload: source clips (legs), decision-point cues on the realtime walk timeline, outro, and optional music. Set compositionId 'DirectionsWalkthrough' (or objective 'directions')."},"automaticBroll":{"type":"string","enum":["off","auto"],"description":"Automatic supplemental footage. External API renders default to off. Use off for text/graphics-only videos or when the user has not requested footage. Use auto only when the user explicitly wants automatically selected stock or generated B-roll. This does not remove explicitly supplied assets."}},"required":["requestId","confirmed","title","objective"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"diagnose_render_error","description":"Classify a local validation or render error and return a safe next step.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"errorText":{"type":"string","minLength":1,"maxLength":10000,"description":"The validation or render error output to classify."}},"required":["errorText"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"edit_video_brief","description":"Prepare exact title, script or caption changes for an existing private video. Returns a Studio approval link; this call does not save copy or start a render. The signed-in user must review and approve there. Approval changes the current run, consumes rerender credits and revokes existing review links. Previous run records are retained. Does not publish. Preserve requestId for unchanged retries.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","description":"Optional workspace override. For a new plan, omit this field so the server resolves the account default. A workspace ID returned by an account read is not a user selection. Supply this field only for a user-selected workspace or the workspace of an existing saved project. Ask only when the server requires selection; never fall back after denied access."},"jobId":{"type":"string","format":"uuid","description":"The existing video's job ID, from list_video_projects or create_video_brief."},"requestId":{"type":"string","format":"uuid","description":"Stable retry identity for this exact proposal. Reuse after uncertain responses."},"confirmed":{"type":"boolean","const":true,"description":"Set only after the user asks for these exact copy changes."},"title":{"type":"string","minLength":1,"maxLength":160,"description":"New title, if it changes."},"script":{"type":"string","minLength":1,"maxLength":10000,"description":"New spoken words, if they change."},"caption":{"type":"string","minLength":1,"maxLength":2000,"description":"New social caption, if it changes."}},"required":["jobId","requestId","confirmed"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_capabilities","description":"Call first. Reports public planning features and optional account features. Public access metadata does not indicate session authentication; use list_video_projects to verify private read access.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_carousel_schema","description":"Return the JSON Schema for deterministic Instavar carousel decks.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_creative_guide","description":"Read practical guidance before drafting concise plain or poetic copy, choosing carousel stories, designing visuals or recording human feedback. Returns guidance for the calling assistant to apply, not generated copy or saved feedback. Omit guideId to list guides.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"guideId":{"type":"string","enum":["visual-copy","carousel-stories","visual-design","human-review"],"description":"Guide to read. Omit to list the guides."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_example","description":"Return a valid starter example for one template family.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"templateId":{"type":"string","enum":["qa-ad","proof-walkthrough","announcement-brief","social-remix","finance-brief"],"description":"Template family whose starter VideoSpec to return."}},"required":["templateId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_render_instructions","description":"Return the clone, install, validate, preview, render, and QA workflow.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"client":{"type":"string","enum":["codex","claude-code","manual"],"default":"manual","description":"Who will run the workflow. It changes only the guidance text. Defaults to manual."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_template","description":"Get one template's purpose, aspect ratios, scene kinds, and example identifier.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"templateId":{"type":"string","enum":["qa-ad","proof-walkthrough","announcement-brief","social-remix","finance-brief"],"description":"Template family from list_templates."}},"required":["templateId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_video_render_status","description":"Check the requested private render and its output URL, errors and recovery guidance. Keep workspaceId from creation. When a video is available, call review_video_project to show playback. A queued or rendering state is not completion. Do not automatically submit another render on failure.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","description":"Optional workspace override. For a new plan, omit this field so the server resolves the account default. A workspace ID returned by an account read is not a user selection. Supply this field only for a user-selected workspace or the workspace of an existing saved project. Ask only when the server requires selection; never fall back after denied access."},"jobId":{"type":"string","format":"uuid","description":"The job ID returned by create_video_brief."}},"required":["jobId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_video_schema","description":"Return the published JSON Schema for VideoSpec version 1.0.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_carousel_templates","description":"List the account-free editorial carousel story structures.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_templates","description":"List the published video template families, each available in Remotion and HyperFrames, and optionally filter by output aspect ratio.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"aspect":{"type":"string","enum":["9:16","4:5","1:1"],"description":"Only list templates that support this aspect ratio. Omit to list them all."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_video_projects","description":"List recent private Instavar video projects after the user links their account. Returns the currently resolved workspace in accountContext; billing details are included only with billing.read permission. Follow billing.draftCreditCheck: for a shortfall, explain the missing credits, link to billing, preserve the accepted design and do not request creation confirmation until a fresh check shows enough credits. Recorded credits are a read-only snapshot, not a reservation or render eligibility guarantee. Use this before review_video_project when the user has not supplied a project ID. Do not infer current workspace or allowance from an older job.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","description":"Optional workspace override. For a new plan, omit this field on account reads and creation so the server resolves the account default, preferring an accessible bound personal workspace. A workspace ID returned by a read identifies the resolved workspace; it is not a user selection. Supply this field only for a user-selected workspace or the workspace of an existing saved project. Ask only if the server requires selection. Never fall back after denied access."},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10,"description":"How many recent projects to return. Defaults to 10."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"prepare_announcement","description":"Prepare one paired announcement-card-v1 template, continue its caller-held project, edit copy or switch frameworks. Returns source files for local rendering. For the paired announcement-card-v1 or a HyperFrames announcement request, use prepare_announcement. Never infer a framework from creative wording. Omit framework unless the user explicitly chooses one or says no preference. If needs-selection, ask the user. Continue with the latest returned project and expectedRevision; apply edits through edits before switching. Keep the returned project document for later calls. Never describe this caller-held document as a saved hosted project. VideoSpec templates use prepare_video_template in either framework.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"framework":{"type":"string","enum":["remotion","hyperframes","no-preference"],"description":"Only supply an explicit user choice. Omit for an ambiguous request or to inherit the existing project framework."},"copy":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":70},"body":{"type":"string","minLength":1,"maxLength":100},"cta":{"type":"string","minLength":1,"maxLength":40}},"required":["title","body","cta"],"additionalProperties":false,"description":"Accepted copy for a new project only."},"project":{"type":"object","properties":{"templateId":{"type":"string","const":"announcement-card-v1"},"framework":{"type":"string","enum":["remotion","hyperframes"]},"revision":{"type":"integer","minimum":1,"maximum":9007199254740990},"copy":{"$ref":"#/properties/copy"}},"required":["templateId","framework","revision","copy"],"additionalProperties":false,"description":"The latest project document returned by this tool. Caller-held, not a saved hosted project."},"expectedRevision":{"type":"integer","minimum":1,"description":"Required with project. Must match its revision. This checks the supplied document, not a server-side stored version."},"edits":{"type":"object","properties":{"title":{"$ref":"#/properties/copy/properties/title"},"body":{"$ref":"#/properties/copy/properties/body"},"cta":{"$ref":"#/properties/copy/properties/cta"}},"additionalProperties":false,"description":"Explicit copy edits to apply before switching. Other source or timeline edits cannot be preserved."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"prepare_video_template","description":"Validate one VideoSpec against the paired template contract and return local source for the chosen framework, or switch an existing project's framework. For a VideoSpec template in Remotion or HyperFrames, use prepare_video_template with the VideoSpec. Never infer a framework from creative wording; omit framework unless the user chose one or said no preference, and ask the user on needs-selection. Continue with the returned project: edit project.spec, then call again to regenerate or to switch frameworks. A rejected field is unsupported in both frameworks; fix it rather than dropping it. The tool returns local source and commands; it does not render, save or upload.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"framework":{"type":"string","enum":["remotion","hyperframes","no-preference"],"description":"Only supply an explicit user choice. Omit for an ambiguous request or to inherit the existing project framework."},"spec":{"type":"object","additionalProperties":{},"description":"A VideoSpec 1.0 document for a new project."},"project":{"type":"object","properties":{"contract":{"type":"string","const":"paired-videospec/v1"},"framework":{"type":"string","enum":["remotion","hyperframes"]},"spec":{"type":"object","additionalProperties":{}}},"required":["contract","framework","spec"],"additionalProperties":false,"description":"The latest project returned by this tool, with any edits made to project.spec. Caller-held, not a saved hosted project."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"propose_video_storyboard","description":"Turn an ordinary video request into a three-beat visual proposal and recommended template. Pass templateId to preserve an accepted template when changing only the aspect; omit it for a new direction. This tool does not generate images, save a project, render, or publish.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"brief":{"type":"string","minLength":8,"maxLength":600,"description":"The user's video request in their own words. It picks the recommended template and, without a title, the working title."},"templateId":{"type":"string","enum":["qa-ad","proof-walkthrough","announcement-brief","social-remix","finance-brief"],"description":"Accepted template family to keep, for example when only the aspect changes. Omit for a new direction."},"title":{"type":"string","minLength":1,"maxLength":160,"description":"Accepted title, if the user supplied one. Omit to derive one from the brief."},"body":{"type":"string","minLength":1,"maxLength":2000,"description":"Accepted body copy, kept exactly as supplied."},"cta":{"type":"string","minLength":1,"maxLength":500,"description":"Accepted call to action, kept exactly as supplied."},"acceptedDesign":{"type":"object","properties":{"style":{"type":"string","minLength":1,"maxLength":600},"durationSeconds":{"type":"number","exclusiveMinimum":0,"maximum":300},"audio":{"type":"string","enum":["silent","narration","music"]},"illustration":{"type":"string","minLength":1,"maxLength":600},"exclusions":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":20},"preview":{"type":"string","const":"dark-cafe"}},"required":["style","durationSeconds","audio","illustration","exclusions"],"additionalProperties":false,"description":"The design the user accepted: style, duration in seconds, audio, illustration and exclusions. Pass it on to scaffold_video_spec and hosted tools."},"aspect":{"type":"string","enum":["9:16","4:5","1:1"],"default":"9:16","description":"Output aspect ratio. Defaults to 9:16."}},"required":["brief"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"review_video_project","description":"Open a focused review of one private Instavar video after account linking. This tool does not edit, render, approve, or publish.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"jobId":{"type":"string","format":"uuid","description":"The project ID to review"},"workspaceId":{"type":"string","format":"uuid","description":"Optional workspace override. For a new plan, omit this field on account reads and creation so the server resolves the account default, preferring an accessible bound personal workspace. A workspace ID returned by a read identifies the resolved workspace; it is not a user selection. Supply this field only for a user-selected workspace or the workspace of an existing saved project. Ask only if the server requires selection. Never fall back after denied access."}},"required":["jobId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"scaffold_carousel_deck","description":"Build a deterministic editorial carousel deck from accepted copy. This does not render, save, or publish it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"templateId":{"type":"string","enum":["listicle","manifesto","before-after","value-first-reveal"],"description":"Story structure from list_carousel_templates."},"hook":{"type":"string","minLength":1,"maxLength":100,"description":"Cover line on the first slide."},"subtitle":{"type":"string","minLength":1,"maxLength":160,"description":"Optional cover subtitle under the hook."},"points":{"type":"array","items":{"type":"string","minLength":1,"maxLength":120},"minItems":1,"maxItems":5,"description":"Body beats in order. listicle lists them on one slide, manifesto gives each its own slide, before-after uses the first as the problem and the last as the contrast, and value-first-reveal uses the first three."},"payoff":{"type":"string","minLength":1,"maxLength":120,"description":"Closing takeaway on the final slide."},"cta":{"type":"string","minLength":1,"maxLength":140,"description":"Optional call to action on the final slide."},"handle":{"type":"string","minLength":1,"maxLength":40,"description":"Optional brand handle shown in the slide footer."},"aspect":{"type":"string","enum":["4:5","1:1","9:16"],"default":"4:5","description":"Slide aspect ratio. Defaults to 4:5."}},"required":["templateId","hook","points","payoff"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"scaffold_video_spec","description":"Return a deterministic VideoSpec skeleton. This tool does not generate creative copy or write files.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"templateId":{"type":"string","enum":["qa-ad","proof-walkthrough","announcement-brief","social-remix","finance-brief"],"description":"Template family from list_templates."},"title":{"type":"string","minLength":1,"maxLength":160,"description":"Video title, shown in the opening scene and used for the spec ID."},"brief":{"type":"string","minLength":1,"maxLength":600,"description":"Original intent and constraints to preserve through planning and handoff. This is not generated video copy."},"aspect":{"type":"string","enum":["9:16","4:5","1:1"],"default":"9:16","description":"Output aspect ratio. Defaults to 9:16."},"mediaSrc":{"type":"string","minLength":1,"maxLength":500,"description":"Source video path for the video window in qa-ad and social-remix. Other templates ignore it; without it the spec holds a placeholder path."},"body":{"type":"string","minLength":1,"maxLength":2000,"description":"Accepted body copy. It replaces the placeholder copy and appears once."},"cta":{"type":"string","minLength":1,"maxLength":500,"description":"Accepted call to action for the closing scene."},"acceptedDesign":{"type":"object","properties":{"style":{"type":"string","minLength":1,"maxLength":600},"durationSeconds":{"type":"number","exclusiveMinimum":0,"maximum":300},"audio":{"type":"string","enum":["silent","narration","music"]},"illustration":{"type":"string","minLength":1,"maxLength":600},"exclusions":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":20},"preview":{"type":"string","const":"dark-cafe"}},"required":["style","durationSeconds","audio","illustration","exclusions"],"additionalProperties":false,"description":"The design the user accepted. Returned in planningContext for later steps; it does not change the VideoSpec."}},"required":["templateId","title"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-10-29T18:48:09.133Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-29T18:48:09.075Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1990ms"]},"poisoning":{"score":15,"max":15,"notes":["20 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://instavar.com/api/mcp/templates","reachable":true,"authRequired":false,"latencyMs":1990,"serverInfo":{"name":"instavar-remotion","version":"1.7.0"}}],"packages":[{"registryType":"npm","identifier":"@instavar/mcp-server","version":"0.7.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-28T15:47:25.592Z","repositoryUrl":"git+https://github.com/instavar/mcp-server.git","weeklyDownloads":324}],"repo":{"found":true,"owner":"instavar","repo":"mcp-server","archived":false,"pushedAt":"2026-10-28T16:35:25Z","stars":0,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/271711664?v=4","ownerCreatedAt":"2026-03-28T07:34:07Z"},"icon":{"url":"https://instavar.com/logo/logo_accent_1024x1024.png","source":"registry","width":1024,"height":1024},"presence":{"stars":0,"forks":0,"downloadsWeek":324,"license":"MIT","lastPushAt":"2026-10-28T16:35:25.000Z","score":36}}}},"grade_history":[],"reviews":[]}