Server definition
- Hash
- sha256:ae2d9d01ea2b28d6f80798057e8ebaed9e6bc75c74fb38d9887dc1b7e5bbe0fe
- What it is
- What a remote MCP server returned when asked what it offers: 3 tools
The blob, as servednamed by its sha256
{
"instructions": "Motion Text builds real, editable video projects: image scenes with camera moves, timed text, overlays, audio, and panelled comic pages. You cannot see what you build, so check it: get_story_frames returns a labelled contact sheet from the same compositor as the MP4, free and unqueued, and validate_story_project reports what geometry alone can catch — overflowing text, colliding captions, a camera that pans off its own picture, a panel with nothing beneath it. Build, then look, then fix. A project that validates has not been checked.\n\nStart from a template when one fits. list_story_templates names them; each lays out a whole project deterministically, so the layout maths runs here rather than in your head. Templates create a new project by default and take dryRun.\n\nTiming before pacing. Anything that SPREADS content across the timeline uses the project's current duration as-is, so set the real length with set_story_duration first — a three-minute lyric paced into a default 12s timeline gives every line a fraction of a second.\n\nFor panels and motion comics, establish a continuity bible before laying anything out: pick a master shot, note which side of frame each character occupies in it, and keep those sides on every later panel unless that panel declares reverseAngle. Express a change of scale as a change of PANEL, not as a moving crop — comics cut, they do not zoom. Pair an action with its consequence in reading order; on a cause/effect pair the cause must be the first panel, because left-to-right is what carries the causality. Everything you declare about a panel is stored as declared, never measured: that is what makes it checkable against the layout.\n\nImages must be public https:// URLs or asset urls returned by the image tools. A local file path is not reachable by the render server and renders as a plain background.",
"tools": [
{
"description": "Create a complete, editable lyric-video or story-video draft and get back an edit link for the user. Prefer script mode (one beat per line) unless exact timings are known. Drafts expire after 30 days unless the user saves them. Most ads use one or two effects for the whole piece. fade, rise and pop read as professional; scatter, slam and glitch read as novelty and get tiring past a line or two. Vary the type SIZE and the vertical POSITION between lines rather than the effect — that is what makes a piece look composed rather than captioned.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"duration": {
"maximum": 600,
"minimum": 3,
"type": "number"
},
"entries": {
"description": "Explicitly timed text, when you already know the timings.",
"items": {
"properties": {
"effect": {
"description": "How the line animates in. fade: The whole line fades from transparent to opaque without moving; on a word-timed line each word fades in separately over 0.3s at its own start. rise: The line fades in while travelling 18px (at 1080p, or an exact `distance`) from the `direction` side — up by default, so it starts below and settles upward. pop: The line scales up from 70% to full size while fading in, overshooting slightly past 100% before settling; set `fromScale` above 1 to settle down into place instead. slide: The line fades in while travelling 64px (at 1080p, or an exact `distance`) from the `direction` side — left by default, so it enters from the right. blur: The line resolves from a 14px defocus to sharp while fading in, then holds perfectly sharp and still; entrance only, never per-word. typewriter: Types the line one CHARACTER at a time at a constant rate, left to right, over `revealDuration` (default: the caption minus its hold). word-reveal: Reveals the line one whole WORD at a time with no motion — chunkier and more legible than typing; use `typewriter` for character-by-character. karaoke: The full line is visible from the first frame and the accent colour sweeps continuously through it, left to right, following measured word timings when the line has them. cascade: Words rise 18px and fade in one after another, 0.3s each and `stagger` (default 0.06s) apart, then hold still — a one-time ripple entrance, not a repeating wave. scatter: Breaks the line into separate words placed around the anchor at seeded offsets, tilts and sizes, each stamping in over 0.34s from 35% size; a lyric-card collage, best on 2–5 word lines. beat: The line snaps 5.5% larger on each detected music beat (9% on downbeats) and springs back within about a quarter second; with no beat grid it ticks steadily every 0.75s. breathe: The line oscillates smoothly and continuously between 97.5% and 102.5% scale, twice a second by default (`breathePeriod`), for as long as it is on screen. float: Each word drifts continuously in a slow figure-eight of about 4px vertically and 2px horizontally on a 2.2s loop, out of phase with its neighbours. slam: The line arrives at 190% size and accelerates down to full size in under 0.25s; set `fromScale` below 1 to punch UP from small instead, and `wobble` above 0 to add a decaying rattle. glitch: After the normal fade-in the line tears in 80ms bursts about a third of the time — red/cyan copies offset up to 6px plus a small jitter — for as long as it is on screen.",
"enum": [
"fade",
"rise",
"pop",
"slide",
"blur",
"typewriter",
"word-reveal",
"karaoke",
"cascade",
"scatter",
"beat",
"breathe",
"float",
"slam",
"glitch"
],
"type": "string"
},
"end": {
"exclusiveMinimum": 0,
"type": "number"
},
"start": {
"minimum": 0,
"type": "number"
},
"words": {
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"words",
"start",
"end"
],
"type": "object"
},
"maxItems": 300,
"type": "array"
},
"format": {
"default": "16:9",
"enum": [
"16:9",
"9:16",
"4:5",
"1:1"
],
"type": "string"
},
"mood": {
"enum": [
"cinematic",
"energetic",
"intimate",
"dark",
"dreamy",
"editorial"
],
"type": "string"
},
"pace": {
"enum": [
"slow",
"balanced",
"fast"
],
"type": "string"
},
"presetId": {
"description": "Visual preset; see list_visual_presets.",
"enum": [
"cinematic-noir",
"neon-pulse",
"paper-journal",
"dream-haze",
"horror-signal",
"clean-editorial",
"stage-spot",
"tape-deck",
"ice-cut",
"clean-slate"
],
"type": "string"
},
"scenes": {
"items": {
"properties": {
"background": {
"description": "CSS color or gradient only — images are added by the human in the editor.",
"maxLength": 300,
"type": "string"
},
"end": {
"exclusiveMinimum": 0,
"type": "number"
},
"name": {
"maxLength": 60,
"type": "string"
},
"start": {
"minimum": 0,
"type": "number"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"maxItems": 60,
"type": "array"
},
"script": {
"description": "One story beat per line; the Director paces scenes and captions to match mood and pace. Provide script OR entries.",
"maxLength": 8000,
"type": "string"
},
"title": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"name": "create_story_draft",
"outputSchema": null
},
{
"description": "Machine-readable capabilities, limits, draft schema, and integration endpoints.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_spec",
"outputSchema": null
},
{
"description": "Complete looks (treatment, typography, colors, motion) that can style a draft.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_visual_presets",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:ae2d9d01ea2b28d6f80798057e8ebaed9e6bc75c74fb38d9887dc1b7e5bbe0fe | sha256sum