{"name":"headless_content","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["guide","inspect","create","create_spec","create_stills","act","style_draft","recompose","status"],"description":"guide: what create accepts (angles, personas, approved people, places and products, concepts, effects, templates, layouts, edits, shortcuts). inspect: the typed graph (view). create: the brand's director writes reels or stills from guidance. create_spec: a reel you authored shot by shot. create_stills: statics or a carousel you authored. act: a graph action (Elements, characters, opening frames, save, generate, run, review). style_draft: draft a brand style. recompose: change a made reel's motion overlay at no cost. status: a run and, once rendered, its reel."},"portfolio_id":{"description":"guide: an Optimizer portfolio, to list its personas and winning angles.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"schema":{"description":"guide: also return the create_spec, create_stills and style_draft schemas and rules (large).","type":"boolean"},"view":{"description":"inspect: elements (named Character/Scene/Product Elements), facts (approved brand facts), seeds (proven seeds), schema (graph payload schemas), content / compile (a saved content spec, with id and revision), run (a run, with id), poses (floor position ids for poseId).","type":"string","enum":["schema","elements","facts","seeds","content","compile","run","poses"]},"id":{"description":"inspect: the content or run id the view reads.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"description":"inspect: the content revision.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"guidance":{"description":"create: ids and choices from action=guide; the director writes every hook, line and CTA from the brand's data.","type":"object","properties":{"reels":{"type":"integer","minimum":0,"maximum":2,"description":"How many vertical reels to make."},"stills":{"type":"integer","minimum":0,"maximum":2,"description":"How many still sets (a static or a small carousel) to make."},"language":{"type":"string","pattern":"^[a-z]{2}$","description":"ISO 639-1 code every spoken and written word is in: \"es\", \"en\"."},"portfolioId":{"description":"Paid: the Optimizer portfolio whose audience and winning ads ground the work.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"recommendationId":{"description":"Paid: an Optimizer recommendation; the work sells that recommendation's offer.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"persona":{"description":"Who the creative speaks to: a persona id listed by view=guidance.","type":"string","minLength":1,"maxLength":40},"gender":{"description":"Casting constraint: the gender everyone cast shares (the approved actresses → female). Personas are derived within it.","type":"string","enum":["female","male"]},"angleIds":{"description":"The winning angles to sell on: angle ids listed by view=guidance.","maxItems":4,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"characterElementIds":{"description":"The identity lock: approved people the director casts from, and only from; each reel is one of them, the same person in every shot. Ids from view=guidance only.","maxItems":4,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"sceneElementIds":{"description":"Approved places to shoot in. Ids from view=guidance only.","maxItems":4,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"productElementIds":{"description":"The product lock: approved products every reel and still shows, the same product in every shot it appears in. Ids from view=guidance only.","maxItems":4,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"referenceAssetIds":{"description":"Library image assets to use as visual references; role says what each image controls.","maxItems":2,"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string","enum":["product","scene","style","pose"]}},"required":["assetId","role"],"additionalProperties":false}},"unsplashPhotos":{"description":"Optional Unsplash photo ids selected from unsplash_search; source photos guide the scene, style or pose only.","maxItems":2,"type":"array","items":{"type":"object","properties":{"photoId":{"type":"string","minLength":1,"maxLength":100},"role":{"type":"string","enum":["scene","style","pose"]}},"required":["photoId","role"],"additionalProperties":false}},"grammar":{"description":"Every reel's story shape: a concept id from view=guidance concepts (offer-direct, the default, is the offer in the hook). With vary=grammar, the concept to move the base to.","type":"string","enum":["offer-direct","problem-solution","street-interview","street-price-guess","reply-to-comment","car-storytime","expectation-vs-reality","pov","unpopular-opinion","busy-day-routine","tour","lookbook"]},"baseRecommendationId":{"description":"Paid: double down on this winning recommendation's creative, changing one thing (vary). Give at most one base.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"baseRunId":{"description":"An accepted headless output to double down on: its run id, with baseOutputId.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"baseOutputId":{"description":"The accepted output id inside baseRunId.","type":"string","minLength":1,"maxLength":200},"vary":{"description":"The ONE thing each variant changes against its base (hook, face, location, grammar or effect). The base is baseRecommendationId, baseRunId+baseOutputId, or else the one winning angle in angleIds. With a base and no vary, the ad's own numbers pick it.","type":"string","enum":["hook","face","location","grammar","effect"]},"effectId":{"description":"An effect over the footage, never the type (view=guidance effects, or the brand's approved styles). With vary=effect and a base, the effect to re-style the base's own takes in, at no generation cost.","type":"string","maxLength":40,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"templateId":{"description":"The reel's type and motion template (view=guidance templates); absent, the director picks.","type":"string","enum":["ugc-native","bold-punch","karaoke-clean","product-proof","editorial","cinematic-occlusion"]},"stillLayout":{"description":"A still's layout family (view=guidance layouts); absent, the director picks.","type":"string","maxLength":40},"pacing":{"description":"Locks the reel's edit (view=guidance edits). none: spoken beats only. steady, build, stutter or drop-hit: a fast-cut montage of silent action shots cut on the beat of a music bed between the spoken hook and the spoken CTA; build runs 1 s cuts down to 0.05 s into the drop. Absent, the director picks.","type":"string","enum":["none","steady","build","stutter","drop-hit"]},"layout":{"description":"Locks how the montage draws its cuts (view=guidance edits). cut: each fills the frame. collage: each snaps in as a tile in its own section of one canvas and stays, the photo-wall open of an event recap. collage with no pacing locks build. Absent, cut.","type":"string","enum":["cut","collage"]},"conceptVariantId":{"description":"A brand's approved concept variant (view=guidance); its base concept is the grammar.","type":"string","maxLength":40,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"motionOverlay":{"description":"Locks an editable motion overlay: the reel's CTA, type cards, burst words and display words are drawn as motion a later spoken change (\"stagger the CTA\") re-composes at no cost. Absent, the type is burned in.","type":"boolean"},"referenceUrl":{"description":"A reference reel (an Instagram reel or a video link): its tempo, its average shot length and a few of its frames guide the edit and the shots. Its footage, people, audio and text are never used.","type":"string","maxLength":500,"format":"uri"},"music":{"description":"What a montage reel's music bed sounds like: genre, instruments, energy. Its tempo is the reference's when one is given.","type":"string","minLength":1,"maxLength":300},"cta":{"description":"The closing call to action in the brief's own words, at most 24 characters (e.g. \"Shop the jacket\"). Absent, it comes from the brand's winning copy.","type":"string","minLength":1,"maxLength":24},"withoutCta":{"description":"true: the reel ends with no call to action (it wins over cta).","type":"boolean"},"storyboard":{"description":"Your own shot list for a montage concept (lookbook): one shot per entry, in order, at most 8 distinct places. Absent, the director writes it (a reference reel's keyframes, shot for shot, when there is one); with a reference reel, the reel keeps only its tempo.","minItems":2,"maxItems":24,"type":"array","items":{"type":"object","properties":{"place":{"type":"string","minLength":1,"maxLength":200,"description":"Where, written to be seen: the light, the time of day, the weather, the scale (\"a salt flat at blue hour under a vast sky\")."},"action":{"type":"string","minLength":1,"maxLength":200,"description":"What the shot shows happening."},"camera":{"description":"The framing and move (\"drone push over the ridge\", \"waist-up orbit\").","type":"string","maxLength":120}},"required":["place","action"],"additionalProperties":false}},"reviewStoryboard":{"description":"true: stop at the storyboard. Each reel is directed and only its opening stills are made (512px for a lookbook), returned as a contact sheet and a shot list with a storyboardId; no video. Reels only.","type":"boolean"},"storyboardId":{"description":"Make a reviewed storyboard exactly as it was shown, on its own stills: every other field is ignored. Change it instead by calling again with reviewStoryboard and an edited storyboard.","type":"string","pattern":"^[a-f0-9]{16}$"},"direction":{"description":"Optional steer on emphasis or tone, at most 400 characters. Never copy, a claim, a price or an offer: those come from the data.","type":"string","maxLength":400}},"required":["reels","stills","language"],"additionalProperties":false},"request_json":{"description":"create_spec: the reel request as JSON (delivery.edit makes it a fast cut or a collage). create_stills: the still request as JSON. Their schemas: action=guide with schema=true.","type":"string","minLength":2,"maxLength":100000},"graph_action":{"description":"act: which graph action; its payload schema is inspect view=schema.","type":"string","enum":["create_element","revise_element","approve_element","prepare_reference","prepare_character","approve_character","save_content","generate","prepare_start_frame","review","run"]},"payload_json":{"description":"act: the graph action payload as JSON. style_draft: the style draft as JSON.","type":"string","minLength":2,"maxLength":100000},"shortcuts":{"description":"Catalog shortcut slugs without the slash (goldenhour, 35mmfilm, noir) or a brand skill slug, only when the user asked for them: each adds its light, camera or finish direction to every shot or slide. Of two conflicting shortcuts the later wins. The result lists which applied and which are unknown.","maxItems":6,"type":"array","items":{"type":"string","pattern":"^\\/?[a-z0-9][a-z0-9-]*$"}},"brandBook":{"default":true,"description":"On by default: the brand book's imagery, personality and saved generation defaults direct every shot or slide. The saved logo preference guides inclusion; any logo needs an approved reference. Set false only when the brief is deliberately off-brand, and tell the user.","type":"boolean"},"max_usd":{"description":"Required on every call that can spend (create, create_spec, create_stills, and act prepare_reference / prepare_character / generate / prepare_start_frame / run): the most it may spend in USD, refused before any spend when its own budget is higher.","type":"number","exclusiveMinimum":0,"maximum":150},"dry_run":{"description":"create: direct only and return the plans; nothing is generated or spent beyond model tokens.","type":"boolean"},"run_id":{"description":"status: a run id from a create result.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reel_asset_id":{"description":"recompose: the made reel (status asset_id), rendered with motionOverlay=true.","type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"ops_json":{"description":"A JSON array of 1 to 50 HyperFrames motion ops on the reel overlay, in reel seconds, naming its animations (cta, cta-words, card-1, card-1-title, card-1-lines, burst-1, display-word-1 …), e.g. [{\"type\":\"stagger\",\"animationId\":\"cta-words\",\"eachSec\":0.08}]","type":"string","minLength":2,"maxLength":50000}},"required":["action"],"additionalProperties":false}}
