[{"slug":"ZV-2026-1957","server_name":"shorti.ai","severity":"breaking","title":"shorti.ai: Type of kind on shorti_arena changed unset → string.","summary":"[risky] Description of shorti_arena changed (38% word delta). [breaking] Type of kind on shorti_arena changed unset → string. [breaking] kind on shorti_arena narrowed to a closed enum (move, vary, mix, about, found); previously valid values may now be rejected. [risky] Default of kind on shorti_arena changed null → unset. [breaking] Type of cursor on shorti_arena changed unset → string. [risky] Default of cursor on shorti_arena changed null → unset. [breaking] Type of entrant on shorti_arena changed unset → string. [risky] Default of entrant on shorti_arena changed null → unset. [breaking] Type of lineage on shorti_arena changed unset → string. [risky] Default of lineage on shorti_arena changed null → unset. [breaking] Field arena_view was removed from shorti_arena output; consumers reading it will break. [safe] Description of shorti_check_link changed (14% word delta). [breaking] Type of token on shorti_check_link changed unset → string. [risky] Default of token on shorti_check_link changed null → unset. [breaking] Type of format on shorti_check_link changed unset → string. [risky] Default of format on shorti_check_link changed null → unset. [breaking] Type of recipe_ref on shorti_check_link changed unset → string. [risky] Default of recipe_ref on shorti_check_link changed null → unset. [risky] Description of shorti_edit_recipe changed (28% word delta). [risky] Optional field cursor was added to shorti_edit_recipe; may shift model behaviour. [breaking] Type of url on shorti_edit_recipe changed unset → string. [risky] Default of url on shorti_edit_recipe changed null → unset. [breaking] Type of video_id on shorti_edit_recipe changed unset → string. [risky] Default of video_id on shorti_edit_recipe changed null → unset. [breaking] Type of family_id on shorti_edit_recipe changed unset → string. [risky] Default of family_id on shorti_edit_recipe changed null → unset. [breaking] Type of format_id on shorti_edit_recipe changed unset → string. [risky] Default of format_id","changes":[{"kind":"description_changed","tool":"shorti_arena","after":"Shorti(쇼티) for «what has nobody shot yet?» or «아직 아무도 안 찍은 거 뭐 있어?». The arena's open spots, first recorded takes, later breakouts and entrant standings. view='spots': open spots, their words, dates and how to shoot; 'board': first recorded takes and finds; 'entrant': one opted-in entrant's standing; `kind` filters. Unread: not_run, never an empty board.","before":"The arena's open spots, first recorded takes, later breakouts and entrant standings. view='spots': open spots, their words, dates and how to shoot; 'board': first recorded takes and finds; 'entrant': one opted-in entrant's standing. kind filters by move, vary, mix, about or found; limit and cursor page (keyless: the first 50). Counts name their denominators. Unread: not_run, never an empty board.","detail":"Description of `shorti_arena` changed (38% word delta).","severity":"risky","descriptionDelta":0.38181818181818183},{"kind":"input_type_changed","path":"inputSchema.properties.kind","tool":"shorti_arena","after":"string","before":"unset","detail":"Type of `kind` on `shorti_arena` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.kind","tool":"shorti_arena","after":"enum[move,vary,mix,about,found]","before":"open","detail":"`kind` on `shorti_arena` narrowed to a closed enum (move, vary, mix, about, found); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.kind","tool":"shorti_arena","before":null,"detail":"Default of `kind` on `shorti_arena` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.cursor","tool":"shorti_arena","after":"string","before":"unset","detail":"Type of `cursor` on `shorti_arena` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.cursor","tool":"shorti_arena","before":null,"detail":"Default of `cursor` on `shorti_arena` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.entrant","tool":"shorti_arena","after":"string","before":"unset","detail":"Type of `entrant` on `shorti_arena` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.entrant","tool":"shorti_arena","before":null,"detail":"Default of `entrant` on `shorti_arena` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.lineage","tool":"shorti_arena","after":"string","before":"unset","detail":"Type of `lineage` on `shorti_arena` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.lineage","tool":"shorti_arena","before":null,"detail":"Default of `lineage` on `shorti_arena` changed null → unset.","severity":"risky"},{"kind":"output_property_removed","path":"outputSchema.properties.arena_view","tool":"shorti_arena","before":{"type":"object"},"detail":"Field `arena_view` was removed from `shorti_arena` output; consumers reading it will break.","severity":"breaking"},{"kind":"description_changed","tool":"shorti_check_link","after":"Shorti(쇼티) for «check my take» or «내가 찍은 거 봐줘». A link where the person checks their own take against a format's hits, and what they send back. `format` (a format_id): a link to open on their phone and upload; you never see the video. Then call with `token` alone until `shared`: their summary, its cue check first. Call it feedback (피드백); a likeness is not a forecast of views.","before":"A link where the person checks their own take against a format's hits, and what they send back. `format` (a format_id; `recipe_ref` ties a recipe's take): a link to open on their phone and upload; you never see the video. Then call with the `token` alone until `shared`: the summary they sent, its cue check first. Call it feedback (피드백); a likeness is not a forecast of views.","detail":"Description of `shorti_check_link` changed (14% word delta).","severity":"safe","descriptionDelta":0.1428571428571429},{"kind":"input_type_changed","path":"inputSchema.properties.token","tool":"shorti_check_link","after":"string","before":"unset","detail":"Type of `token` on `shorti_check_link` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.token","tool":"shorti_check_link","before":null,"detail":"Default of `token` on `shorti_check_link` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.format","tool":"shorti_check_link","after":"string","before":"unset","detail":"Type of `format` on `shorti_check_link` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.format","tool":"shorti_check_link","before":null,"detail":"Default of `format` on `shorti_check_link` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.recipe_ref","tool":"shorti_check_link","after":"string","before":"unset","detail":"Type of `recipe_ref` on `shorti_check_link` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.recipe_ref","tool":"shorti_check_link","before":null,"detail":"Default of `recipe_ref` on `shorti_check_link` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_edit_recipe","after":"Shorti(쇼티) for «edit my clips like this» or «내 영상 이렇게 편집하려면?». The person's own clips edited to a hit's clock, with their editing tool. `video_id` or `url`: that hit's own cuts, beats, hook and sound. `format_id`: its plan on its reference hit's clock (anchors, free cuts, captions). Cut where their action or phrase ends nearest the hit's cuts; then shorti_check_link.","before":"The person's own clips edited to a hit's clock, with their editing tool. `video_id` or `url`: that hit's own cuts, beats, hook and sound. `format_id`: its plan on its reference hit's clock (anchors, free cuts, captions); with a hit, that hit in that format. detail='full' adds what each part shows. Cut where the person's action or phrase ends nearest the hit's cuts; then shorti_check_link.","detail":"Description of `shorti_edit_recipe` changed (28% word delta).","severity":"risky","descriptionDelta":0.2777777777777778},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_edit_recipe","after":{"type":"string","maxLength":12,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_edit_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.url","tool":"shorti_edit_recipe","after":"string","before":"unset","detail":"Type of `url` on `shorti_edit_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.url","tool":"shorti_edit_recipe","before":null,"detail":"Default of `url` on `shorti_edit_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.video_id","tool":"shorti_edit_recipe","after":"string","before":"unset","detail":"Type of `video_id` on `shorti_edit_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.video_id","tool":"shorti_edit_recipe","before":null,"detail":"Default of `video_id` on `shorti_edit_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.family_id","tool":"shorti_edit_recipe","after":"string","before":"unset","detail":"Type of `family_id` on `shorti_edit_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.family_id","tool":"shorti_edit_recipe","before":null,"detail":"Default of `family_id` on `shorti_edit_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.format_id","tool":"shorti_edit_recipe","after":"string","before":"unset","detail":"Type of `format_id` on `shorti_edit_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.format_id","tool":"shorti_edit_recipe","before":null,"detail":"Default of `format_id` on `shorti_edit_recipe` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_find","after":"Shorti(쇼티) for «find videos of…» or «… 영상 찾아줘». Formats for words, a category or a pasted link. `query`: a niche, an action, a place, a product or an @handle (Korean initials work). `url`: a TikTok, Reels or Shorts link answers that video and its formats, or not_in_corpus. Strongest example first; groups sharing only a song are left out unless `include_sound_groups`.","before":"Formats for words, a category or a pasted link. `query`: a niche, an action, a place, a product or a creator's @handle (Korean initials work). `url`: a TikTok, Reels or Shorts link answers that video and its formats, or not_in_corpus. Strongest example first; groups that share only a song are left out unless `include_sound_groups`.","detail":"Description of `shorti_find` changed (17% word delta).","severity":"safe","descriptionDelta":0.17021276595744683},{"kind":"input_type_changed","path":"inputSchema.properties.url","tool":"shorti_find","after":"string","before":"unset","detail":"Type of `url` on `shorti_find` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.url","tool":"shorti_find","before":null,"detail":"Default of `url` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.cursor","tool":"shorti_find","after":"string","before":"unset","detail":"Type of `cursor` on `shorti_find` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.cursor","tool":"shorti_find","before":null,"detail":"Default of `cursor` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.category","tool":"shorti_find","after":"string","before":"unset","detail":"Type of `category` on `shorti_find` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.category","tool":"shorti_find","after":"enum[beauty,food,fashion,daily,comedy,dance,music,pets,fitness,travel,art,gaming,product,info,ai,household,tech,parenting]","before":"open","detail":"`category` on `shorti_find` narrowed to a closed enum (beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.category","tool":"shorti_find","before":null,"detail":"Default of `category` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_flow","after":"Shorti(쇼티) for «how did this trend change?» or «이 유행 어떻게 변해 왔어?». One way of shooting across the sounds it ran under. By `id` (`flow.lineage.id` from shorti_format) or `format` (a format_id): its milestones oldest first, each with the change it made; how many took each kind of change; the worlds it moved into; up to three changes nobody has made yet. What videos did, never a forecast.","before":"One way of shooting across the sounds it ran under. By `id` (`flow.lineage.id` from shorti_format) or `format` (a format_id): its milestones oldest first, each with the change it made; how many took each kind of change, in words; the worlds it moved into; up to three changes nobody has made yet. What videos did, never a forecast.","detail":"Description of `shorti_flow` changed (11% word delta).","severity":"safe","descriptionDelta":0.1132075471698113},{"kind":"input_type_changed","path":"inputSchema.properties.id","tool":"shorti_flow","after":"string","before":"unset","detail":"Type of `id` on `shorti_flow` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.id","tool":"shorti_flow","before":null,"detail":"Default of `id` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.format","tool":"shorti_flow","after":"string","before":"unset","detail":"Type of `format` on `shorti_flow` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.format","tool":"shorti_flow","before":null,"detail":"Default of `format` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_property_removed","path":"outputSchema.properties.flow_view","tool":"shorti_flow","before":{"type":"object","description":"The site flow section in an MCP App. Words are in lang; the host locale changes chrome only. Clips are the 720p rendition or null. Unknown ladder counts keep key and count null and draw no count label; only measured zero uses the empty word."},"detail":"Field `flow_view` was removed from `shorti_flow` output; consumers reading it will break.","severity":"breaking"},{"kind":"description_changed","tool":"shorti_format","after":"Shorti(쇼티) for «how do I shoot one like this?» or «나도 이렇게 찍으려면?». One format as a creator shoots it: its plan, its hits, its spread. `how_to_shoot`: its reference hit step by step on that hit's own clock, what its videos keep and what is the person's to change; its strongest hits; where viewers reacted; `flow`, how it moved. By `format_id`, or `video_id`/`url` of one of its videos.","before":"One format as a creator shoots it: its plan, its hits, its spread. `how_to_shoot`: its reference hit step by step on that hit's own clock, what its videos keep and what is the person's to change; its strongest hits; where viewers reacted; `flow`, how it moved and the spots nobody has taken. By `format_id`, or `video_id`/`url` of one of its videos.","detail":"Description of `shorti_format` changed (21% word delta).","severity":"safe","descriptionDelta":0.2075471698113207},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_format","after":{"type":"string","maxLength":12,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_format`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.url","tool":"shorti_format","after":"string","before":"unset","detail":"Type of `url` on `shorti_format` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.url","tool":"shorti_format","before":null,"detail":"Default of `url` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.video_id","tool":"shorti_format","after":"string","before":"unset","detail":"Type of `video_id` on `shorti_format` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.video_id","tool":"shorti_format","before":null,"detail":"Default of `video_id` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.format_id","tool":"shorti_format","after":"string","before":"unset","detail":"Type of `format_id` on `shorti_format` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.format_id","tool":"shorti_format","before":null,"detail":"Default of `format_id` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_my_field","after":"Shorti(쇼티) for «what should my shop, clinic or brand post?» or «우리 가게는 숏폼 뭐 찍지?». A person's field in their own words, and its short-form week. `field`: a profession (피부과, 약사, 변호사), a brand team, a shop (카페, 미용실), a 체험단 reviewer, an actor or a niche. Ideas with how to shoot them, the field's breakouts with links and views, formats rising near it, and for professions what to check before posting.","before":"A person's field in their own words, and its short-form week. `field`: a profession (피부과, 약사, 변호사, 세무사), a brand team, a shop (카페, 미용실), a 체험단 reviewer, an actor or a creator's niche. Ideas with how to shoot them, the field's breakouts with links and views, formats rising near it, and for professions what to check before posting, with its statute.","detail":"Description of `shorti_my_field` changed (14% word delta).","severity":"safe","descriptionDelta":0.1428571428571429},{"kind":"description_changed","tool":"shorti_remake_recipe","after":"Shorti(쇼티) for «make this with AI video» or «AI로 이 영상 만들려면?». A hit remade with the person's own AI video model, the original clip as its reference. `video_id` or `url` (or `format_id`: its reference hit) and a `mode`. One plan per model, each prompt written for the original clip and cut at the hit's cuts; `model`'s first request. Nothing generates here.","before":"A hit remade with the person's own AI video model, the original clip as its reference. `video_id` or `url` (or `format_id`: its reference hit); `mode`: swap_person, swap_place, swap_product, restyle_3d, character, episode. One plan per model, each prompt written for the original clip and cut at the hit's cuts; one model's first request (`model`), all with detail='full'. Nothing generates here.","detail":"Description of `shorti_remake_recipe` changed (24% word delta).","severity":"safe","descriptionDelta":0.24489795918367352},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_remake_recipe","after":{"type":"string","maxLength":12,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_remake_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.url","tool":"shorti_remake_recipe","after":"string","before":"unset","detail":"Type of `url` on `shorti_remake_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.url","tool":"shorti_remake_recipe","before":null,"detail":"Default of `url` on `shorti_remake_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.model","tool":"shorti_remake_recipe","after":"string","before":"unset","detail":"Type of `model` on `shorti_remake_recipe` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.model","tool":"shorti_remake_recipe","after":"enum[seedance-2.5,minimax-h3,kling-3.0-motion-control,wan-3.0]","before":"open","detail":"`model` on `shorti_remake_recipe` narrowed to a closed enum (seedance-2.5, minimax-h3, kling-3.0-motion-control, wan-3.0); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.model","tool":"shorti_remake_recipe","before":null,"detail":"Default of `model` on `shorti_remake_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.video_id","tool":"shorti_remake_recipe","after":"string","before":"unset","detail":"Type of `video_id` on `shorti_remake_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.video_id","tool":"shorti_remake_recipe","before":null,"detail":"Default of `video_id` on `shorti_remake_recipe` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.format_id","tool":"shorti_remake_recipe","after":"string","before":"unset","detail":"Type of `format_id` on `shorti_remake_recipe` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.format_id","tool":"shorti_remake_recipe","before":null,"detail":"Default of `format_id` on `shorti_remake_recipe` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_scene_get","after":"Shorti(쇼티) for «where was the camera?» or «폰 어디 두고 찍었어?». Where the phone stood in a hit, from its published scene. By `video` (a video_id or post link): its length and each phone set-up (Korean lines with lang='ko'), and the page that opens the scene in 3D; `none` when no scene is published.","before":"Where the phone stood in a hit, from its published scene. By `video` (a video_id or post link): its length and each phone set-up (Korean lines with lang='ko'), and the page that opens the scene in 3D; `none` when no scene is published.","detail":"Description of `shorti_scene_get` changed (10% word delta).","severity":"safe","descriptionDelta":0.10256410256410253},{"kind":"description_changed","tool":"shorti_scene_kit","after":"Shorti(쇼티) for «build this scene in 3D» or «이 장면 3D로 만들려면?». A hit's scene for a 3D or video generator. By `video` (a video_id or post link): what to keep and what is free, a clay glTF, each model's plan and one model's first request (`model`). detail='full' adds each shot's clock, camera, lens, depth and light where measured, every request and the geometry. Nothing is generated.","before":"A hit's scene for a 3D or video generator. By `video` (a video_id or post link): what to keep and what is free, a clay glTF, each model's plan and one model's first request (`model`). detail='full' adds each shot's clock, camera, lens, depth and light where measured, every request and the geometry. Reads only; nothing is generated.","detail":"Description of `shorti_scene_kit` changed (12% word delta).","severity":"safe","descriptionDelta":0.12244897959183676},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_scene_kit","after":{"type":"string","maxLength":12,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_scene_kit`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.model","tool":"shorti_scene_kit","after":"string","before":"unset","detail":"Type of `model` on `shorti_scene_kit` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.model","tool":"shorti_scene_kit","after":"enum[seedance-2.5,minimax-h3,kling-3.0-motion-control,wan-3.0]","before":"open","detail":"`model` on `shorti_scene_kit` narrowed to a closed enum (seedance-2.5, minimax-h3, kling-3.0-motion-control, wan-3.0); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.model","tool":"shorti_scene_kit","before":null,"detail":"Default of `model` on `shorti_scene_kit` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_trend_radar","after":"Shorti(쇼티) for «what's big overseas before Korea?» or «해외에서 먼저 뜨는 거 뭐야?». Formats breaking out in the West that no Korean video holds yet, and those arriving. Each: what its videos do, its strongest video, how many Western videos and creators broke out with it and when last, its Korean videos so far, and how much of it needs no language. Then shorti_format(format_id).","before":"Formats breaking out in the West that no Korean video holds yet, and those arriving. Each: what its videos do, its strongest video, how many Western videos and creators broke out with it and when last, its Korean videos so far, and how much of it needs no language. Narrow by `category` or `state`; then shorti_format(format_id).","detail":"Description of `shorti_trend_radar` changed (22% word delta).","severity":"safe","descriptionDelta":0.21568627450980393},{"kind":"input_type_changed","path":"inputSchema.properties.state","tool":"shorti_trend_radar","after":"string","before":"unset","detail":"Type of `state` on `shorti_trend_radar` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.state","tool":"shorti_trend_radar","after":"enum[not_in_korea,arriving,entered]","before":"open","detail":"`state` on `shorti_trend_radar` narrowed to a closed enum (not_in_korea, arriving, entered); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.state","tool":"shorti_trend_radar","before":null,"detail":"Default of `state` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.category","tool":"shorti_trend_radar","after":"string","before":"unset","detail":"Type of `category` on `shorti_trend_radar` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.category","tool":"shorti_trend_radar","after":"enum[beauty,food,fashion,daily,comedy,dance,music,pets,fitness,travel,art,gaming,product,info,ai,household,tech,parenting]","before":"open","detail":"`category` on `shorti_trend_radar` narrowed to a closed enum (beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.category","tool":"shorti_trend_radar","before":null,"detail":"Default of `category` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_video","after":"Shorti(쇼티) for a TikTok, Reels or Shorts link with «how was this shot?», «이 영상 어떻게 찍었어?» or «분석해줘». One video: what happens in it, its beats, its numbers and its formats. By post `url` or `video_id`: its hook, turn and beats; the moments worth copying and how; what it takes to shoot it again; views and length; its formats. not_in_corpus when Shorti has not read it. detail='full' adds every field.","before":"One video: what happens in it, its beats, its numbers and its formats. By post `url` or `video_id`: what happens, its hook, turn and beats; the moments worth copying with what to do; what it takes to shoot it again; views and length; its formats, the one every tool names for it first. not_in_corpus when Shorti has not read it. detail='full' adds every field.","detail":"Description of `shorti_video` changed (24% word delta).","severity":"safe","descriptionDelta":0.2407407407407407},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_video","after":{"type":"string","maxLength":12,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_video`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.url","tool":"shorti_video","after":"string","before":"unset","detail":"Type of `url` on `shorti_video` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.url","tool":"shorti_video","before":null,"detail":"Default of `url` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.video_id","tool":"shorti_video","after":"string","before":"unset","detail":"Type of `video_id` on `shorti_video` changed unset → string.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.video_id","tool":"shorti_video","before":null,"detail":"Default of `video_id` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_what_to_shoot","after":"Shorti(쇼티) for «what should I shoot this week?» or «이번 주 뭐 찍지?». The formats to shoot this week: the week's picks, then the rest of the week. Each format: what its videos do, its strongest video (link, views, poster), how it has spread and its page; a pick also names the recent hit behind it (`this_week`). Signed in, the person's own week leads. Then shorti_format(format_id).","before":"The formats to shoot this week: the week's picks, then the rest of the week. Each format: what its videos do, its strongest video (link, views, poster), how it has spread and its page; a pick also names the recent hit behind it (`this_week`). Narrow by `category` or `platform`. Signed in, the person's own week leads. Then shorti_format(format_id) for how to shoot one.","detail":"Description of `shorti_what_to_shoot` changed (15% word delta).","severity":"safe","descriptionDelta":0.15094339622641506},{"kind":"input_type_changed","path":"inputSchema.properties.category","tool":"shorti_what_to_shoot","after":"string","before":"unset","detail":"Type of `category` on `shorti_what_to_shoot` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.category","tool":"shorti_what_to_shoot","after":"enum[beauty,food,fashion,daily,comedy,dance,music,pets,fitness,travel,art,gaming,product,info,ai,household,tech,parenting]","before":"open","detail":"`category` on `shorti_what_to_shoot` narrowed to a closed enum (beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.category","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `category` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.platform","tool":"shorti_what_to_shoot","after":"string","before":"unset","detail":"Type of `platform` on `shorti_what_to_shoot` changed unset → string.","severity":"breaking"},{"kind":"enum_narrowed","path":"inputSchema.properties.platform","tool":"shorti_what_to_shoot","after":"enum[tiktok,instagram,youtube]","before":"open","detail":"`platform` on `shorti_what_to_shoot` narrowed to a closed enum (tiktok, instagram, youtube); previously valid values may now be rejected.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.platform","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `platform` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"}],"published_at":"2026-10-08T07:35:18.078Z"},{"slug":"ZV-2026-1946","server_name":"shorti.ai","severity":"breaking","title":"shorti.ai: Field coach_view was removed from shorti_video output; consumers reading it will break.","summary":"[breaking] Field coach_view was removed from shorti_video output; consumers reading it will break. [safe] Resource ui://shorti/app@1 was added.","changes":[{"kind":"output_property_removed","path":"outputSchema.properties.coach_view","tool":"shorti_video","before":{"type":"object","description":"The MCP coaching player. Text is reduced to lang. Legacy answer fields may accompany the view; the player consumes only these named fields."},"detail":"Field `coach_view` was removed from `shorti_video` output; consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://shorti/app@1","after":"ui://shorti/app@1","detail":"Resource `ui://shorti/app@1` was added.","severity":"safe"}],"published_at":"2026-10-08T02:24:17.077Z"},{"slug":"ZV-2026-1937","server_name":"shorti.ai","severity":"breaking","title":"shorti.ai: Tool shorti_campaign_draft was removed.","summary":"[breaking] Tool shorti_campaign_draft was removed. [safe] Description of shorti_arena changed (12% word delta). [risky] Optional field cursor was added to shorti_arena; may shift model behaviour. [risky] Optional field limit was added to shorti_arena; may shift model behaviour.","changes":[{"kind":"tool_removed","tool":"shorti_campaign_draft","detail":"Tool `shorti_campaign_draft` was removed.","severity":"breaking"},{"kind":"description_changed","tool":"shorti_arena","after":"The arena's open spots, first recorded takes, later breakouts and entrant standings. view='spots': open spots, their words, dates and how to shoot; 'board': first recorded takes and finds; 'entrant': one opted-in entrant's standing. kind filters by move, vary, mix, about or found; limit and cursor page (keyless: the first 50). Counts name their denominators. Unread: not_run, never an empty board.","before":"The arena's open spots, first recorded takes, later breakouts and entrant standings. view='spots': open spots with their words, dates and how to shoot; 'board': first recorded takes and finds; 'entrant': one opted-in entrant's standing. kind filters by move, vary, mix, about or found. Counts name their denominators; keyless reads show the first 50. Unread: not_run, never an empty board.","detail":"Description of `shorti_arena` changed (12% word delta).","severity":"safe","descriptionDelta":0.11764705882352944},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"shorti_arena","after":{"anyOf":[{"type":"string","pattern":"^\\d{1,6}$"},{"type":"null"}],"default":null,"description":"A previous answer's next_cursor."},"detail":"Optional field `cursor` was added to `shorti_arena`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.limit","tool":"shorti_arena","after":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"How many rows a page."},"detail":"Optional field `limit` was added to `shorti_arena`; may shift model behaviour.","severity":"risky"}],"published_at":"2026-10-07T23:02:19.318Z"},{"slug":"ZV-2026-1934","server_name":"shorti.ai","severity":"breaking","title":"shorti.ai: Tool shorti_campaign_board was removed.","summary":"[breaking] Tool shorti_campaign_board was removed. [breaking] Tool shorti_campaigns_for_me was removed. [risky] Description of shorti_arena changed (30% word delta). [risky] Description of shorti_check_link changed (77% word delta). [risky] Description of shorti_edit_recipe changed (71% word delta). [risky] Optional field detail was added to shorti_edit_recipe; may shift model behaviour. [risky] Optional field lang was added to shorti_edit_recipe; may shift model behaviour. [risky] Description of shorti_find changed (43% word delta). [breaking] Type of hint on shorti_find changed unset → null|string. [risky] Default of hint on shorti_find changed null → unset. [breaking] Type of none on shorti_find changed unset → null|object. [risky] Default of none on shorti_find changed null → unset. [breaking] Type of note on shorti_find changed unset → null|string. [risky] Default of note on shorti_find changed null → unset. [breaking] Type of as_of on shorti_find changed unset → null|string. [risky] Default of as_of on shorti_find changed null → unset. [breaking] Type of field on shorti_find changed unset → null|object. [risky] Default of field on shorti_find changed null → unset. [breaking] Type of query on shorti_find changed unset → null|string. [risky] Default of query on shorti_find changed null → unset. [breaking] Type of state on shorti_find changed unset → null|string. [risky] Default of state on shorti_find changed null → unset. [breaking] Type of video on shorti_find changed unset → null|object. [risky] Default of video on shorti_find changed null → unset. [breaking] Type of formats on shorti_find changed unset → array|null. [risky] Default of formats on shorti_find changed null → unset. [breaking] Type of matches on shorti_find changed unset → integer|null. [risky] Default of matches on shorti_find changed null → unset. [breaking] Type of refusal on shorti_find changed unset → null|string. [risky] Default of refusal on shorti_find changed null → unset. [breaking] Ty","changes":[{"kind":"tool_removed","tool":"shorti_campaign_board","detail":"Tool `shorti_campaign_board` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"shorti_campaigns_for_me","detail":"Tool `shorti_campaigns_for_me` was removed.","severity":"breaking"},{"kind":"description_changed","tool":"shorti_arena","after":"The arena's open spots, first recorded takes, later breakouts and entrant standings. view='spots': open spots with their words, dates and how to shoot; 'board': first recorded takes and finds; 'entrant': one opted-in entrant's standing. kind filters by move, vary, mix, about or found. Counts name their denominators; keyless reads show the first 50. Unread: not_run, never an empty board.","before":"The arena's open spots, first recorded takes, later breakouts and entrant standings. Read spots with their words, dates and how to shoot; the board of first recorded takes and finds; or one currently opted-in entrant's standing. Filter kind by move, vary, mix, about or found. Counts keep their denominators before the first-50 keyless cap. Names are read live. Missing or unread publication answers not_run, never an empty board.","detail":"Description of `shorti_arena` changed (30% word delta).","severity":"risky","descriptionDelta":0.29508196721311475},{"kind":"description_changed","tool":"shorti_check_link","after":"A link where the person checks their own take against a format's hits, and what they send back. `format` (a format_id; `recipe_ref` ties a recipe's take): a link to open on their phone and upload; you never see the video. Then call with the `token` alone until `shared`: the summary they sent, its cue check first. Call it feedback (피드백); a likeness is not a forecast of views.","before":"A check link with optional recipe reference, and the summary the person sends back. No argument, or `format` (a format_id): a link at once — `check_link` (`check_link_en` for the English page), `token`, `expires_at` (24 h) and `says` — that the person opens on their phone to upload their own video and get feedback on it against that format's hits. Nothing is read of theirs, written or queued, and you never see their video. Then call again with the `token` alone: `waiting` (ask again after `poll_after_s`) until the person taps «Send this result to the AI chat» («이 결과를 AI 대화에 보내기» on the Korean page) on their result, then `shared` with the summary they sent. Lead with its `cue_check`, as their result screen does: the cues the format's hits share, each with what this video does with it (kept · partly · missed · changed · unclear), a note, its fix, its moment `at_s` and a hit that shows it; one line that sums it up; up to three fixes in order; what the video does well (`strengths`); what it made its own (`own`); and `credits`, what it does that the hits of other trends do too, as counts. `reads_as: another_trend` means it is another kind of video than this format: `near` then names the way of shooting it stands closer to and, in `near.check`, the format to check it against. Beside the cue check, where the measuring check ran: fidelity with its interval and how many axes were measured (`measured` of `of`, `weighted`; its value stays null with reason `not_validated` until its registered validity look passes, with `followed`, k of n directions repeated across formats that the video follows, in its place), up to three measured fixes at their moment (`at_s`, `what_ko`, `how_ko`, the hit video's public still; where a fix was drawn, its `layers`, which hosts that draw show in the check's view), `compared` (the video's value on an axis beside the middle half of the hits'), what they broke and kept, and their result's link (`link`, `link_en`); each line in English beside the Korean where Shorti wrote one. To the person, call it feedback («피드백»). A token this door did not sign, or one past its 24 h with nothing sent, is refused as `handoff_invalid`; a summary sent after the 24 h is still read. 증거가 붙은 관찰로 말하고, 원인은 검증된 것만. 닮은 정도는 조회수 예측이 아니다. — Speak in observations that carry their evidence, and name a cause only where one was verified; a likeness is not a forecast of views.","detail":"Description of `shorti_check_link` changed (77% word delta).","severity":"risky","descriptionDelta":0.77},{"kind":"description_changed","tool":"shorti_edit_recipe","after":"The person's own clips edited to a hit's clock, with their editing tool. `video_id` or `url`: that hit's own cuts, beats, hook and sound. `format_id`: its plan on its reference hit's clock (anchors, free cuts, captions); with a hit, that hit in that format. detail='full' adds what each part shows. Cut where the person's action or phrase ends nearest the hit's cuts; then shorti_check_link.","before":"A format's edit for an agent's editor: slots, cuts on the beat, captions, the check. `video_id` or `url`: a hit's own cuts, beats, hook and sound; `format_id` or `family_id`: its plan on its reference hit's clock. A hit wins when both are given. `recipe` is `shorti.edit_recipe.v1`: `basis` is `this_hit` for a member's own clock or `format_reference` for the format plan (also kept when the requested hit is its reference). Both carry `canvas`, `length_ms`, `cuts`, `beats`, `hook`, `keep`, `sound`, `withheld` and `apply`. A non-reference hit borrows no slots or timed anchors; its cuts have rule `source`, and its format keep lines stay labelled `format_*`. The format plan also carries `slots`, `anchors`, `free`, `captions`, `vary` and `limits`. Cut where the creator's action or phrase ends nearest the hit's cuts. Beside it `formula` holds the format's counted cues, where available, and `check` is where the edit goes back: the person uploads and confirms on Shorti, or calls shorti_check_link with `format`. What the hit did, never why it spread; not a forecast of views.","detail":"Description of `shorti_edit_recipe` changed (71% word delta).","severity":"risky","descriptionDelta":0.7130434782608696},{"kind":"input_property_added","path":"inputSchema.properties.detail","tool":"shorti_edit_recipe","after":{"enum":["summary","full"],"type":"string","default":"summary","description":"summary (the default): the compact answer, a model's prompts marked for_model=true. full: every field, with the original bilingual and model text."},"detail":"Optional field `detail` was added to `shorti_edit_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.lang","tool":"shorti_edit_recipe","after":{"enum":["ko","en"],"type":"string","default":"ko","description":"The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."},"detail":"Optional field `lang` was added to `shorti_edit_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"shorti_find","after":"Formats for words, a category or a pasted link. `query`: a niche, an action, a place, a product or a creator's @handle (Korean initials work). `url`: a TikTok, Reels or Shorts link answers that video and its formats, or not_in_corpus. Strongest example first; groups that share only a song are left out unless `include_sound_groups`.","before":"Formats for words, a category or a pasted link. Search by words — a niche, an action, a place, a creator's @handle (Korean initials work) — by `category`, or by a pasted TikTok, Instagram or YouTube link (the video and its formats, or `not_in_corpus` for a video Shorti has not read). Strongest example first; groups whose videos share only a song are left out unless `include_sound_groups`. With no match the answer lists the categories that have formats. For a brand's product line, shorti_campaign_draft finds the formats a product fits.","detail":"Description of `shorti_find` changed (43% word delta).","severity":"risky","descriptionDelta":0.4307692307692308},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_find","before":null,"detail":"Default of `hint` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.none","tool":"shorti_find","after":"null|object","before":"unset","detail":"Type of `none` on `shorti_find` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.none","tool":"shorti_find","before":null,"detail":"Default of `none` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_find","before":null,"detail":"Default of `note` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_find","before":null,"detail":"Default of `as_of` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.field","tool":"shorti_find","after":"null|object","before":"unset","detail":"Type of `field` on `shorti_find` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.field","tool":"shorti_find","before":null,"detail":"Default of `field` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.query","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `query` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.query","tool":"shorti_find","before":null,"detail":"Default of `query` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.state","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `state` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.state","tool":"shorti_find","before":null,"detail":"Default of `state` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.video","tool":"shorti_find","after":"null|object","before":"unset","detail":"Type of `video` on `shorti_find` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.video","tool":"shorti_find","before":null,"detail":"Default of `video` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats","tool":"shorti_find","after":"array|null","before":"unset","detail":"Type of `formats` on `shorti_find` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats","tool":"shorti_find","before":null,"detail":"Default of `formats` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.matches","tool":"shorti_find","after":"integer|null","before":"unset","detail":"Type of `matches` on `shorti_find` changed unset → integer|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.matches","tool":"shorti_find","before":null,"detail":"Default of `matches` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_find","before":null,"detail":"Default of `refusal` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.next_cursor","tool":"shorti_find","after":"null|string","before":"unset","detail":"Type of `next_cursor` on `shorti_find` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.next_cursor","tool":"shorti_find","before":null,"detail":"Default of `next_cursor` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.product_fits","tool":"shorti_find","after":"array|null","before":"unset","detail":"Type of `product_fits` on `shorti_find` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.product_fits","tool":"shorti_find","before":null,"detail":"Default of `product_fits` on `shorti_find` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_flow","after":"One way of shooting across the sounds it ran under. By `id` (`flow.lineage.id` from shorti_format) or `format` (a format_id): its milestones oldest first, each with the change it made; how many took each kind of change, in words; the worlds it moved into; up to three changes nobody has made yet. What videos did, never a forecast.","before":"One way of shooting across sounds: the trends it ran under, its milestones, its ladder of changes, the worlds it moved into, the ways of shooting it meets and the spots nobody has taken. By `id` (a lineage: `flow.lineage.id` from shorti_format, or the slug of its page) or by `format` (a format_id: the lineage its way of shooting belongs to, else that format's own flow). `line` is the way of shooting; `sources` the trends it ran under, in the order it reached them (`since`, and `format_id` for shorti_format); `rail` its milestones oldest first, each video with its rung of the ladder (`kind`), the world it moved into, the change's name (`label`), what it did (`twist`) and its link; `ladder` how many videos took each rung, in words; `worlds` where it moved; `meets` the ways of shooting it splits into or meets in one video (`id` for shorti_flow); `open` up to three changes nobody has made yet, each with how to shoot it, as advice. `spread` lists observed platform arrivals (`platform`, `after_days`: whole elapsed days from the lineage's first posted video); `spread_line` says them in the answer's language. Both are absent for one platform. Ladder counts are words, never numbers or shares. It says what videos did, never what will get views or why one spread.","detail":"Description of `shorti_flow` changed (56% word delta).","severity":"risky","descriptionDelta":0.5636363636363637},{"kind":"output_type_changed","path":"outputSchema.properties.id","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `id` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.id","tool":"shorti_flow","before":null,"detail":"Default of `id` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.now","tool":"shorti_flow","after":"null|object","before":"unset","detail":"Type of `now` on `shorti_flow` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.now","tool":"shorti_flow","before":null,"detail":"Default of `now` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_flow","before":null,"detail":"Default of `hint` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.line","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `line` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.line","tool":"shorti_flow","before":null,"detail":"Default of `line` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.link","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `link` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.link","tool":"shorti_flow","before":null,"detail":"Default of `link` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_flow","before":null,"detail":"Default of `note` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.open","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `open` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.open","tool":"shorti_flow","before":null,"detail":"Default of `open` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.rail","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `rail` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.rail","tool":"shorti_flow","before":null,"detail":"Default of `rail` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_flow","before":null,"detail":"Default of `as_of` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.meets","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `meets` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.meets","tool":"shorti_flow","before":null,"detail":"Default of `meets` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.ladder","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `ladder` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.ladder","tool":"shorti_flow","before":null,"detail":"Default of `ladder` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.spread","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `spread` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.spread","tool":"shorti_flow","before":null,"detail":"Default of `spread` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.worlds","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `worlds` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.worlds","tool":"shorti_flow","before":null,"detail":"Default of `worlds` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_flow","before":null,"detail":"Default of `refusal` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.sources","tool":"shorti_flow","after":"array|null","before":"unset","detail":"Type of `sources` on `shorti_flow` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.sources","tool":"shorti_flow","before":null,"detail":"Default of `sources` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.spread_line","tool":"shorti_flow","after":"null|string","before":"unset","detail":"Type of `spread_line` on `shorti_flow` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.spread_line","tool":"shorti_flow","before":null,"detail":"Default of `spread_line` on `shorti_flow` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_format","after":"One format as a creator shoots it: its plan, its hits, its spread. `how_to_shoot`: its reference hit step by step on that hit's own clock, what its videos keep and what is the person's to change; its strongest hits; where viewers reacted; `flow`, how it moved and the spots nobody has taken. By `format_id`, or `video_id`/`url` of one of its videos.","before":"One format as a creator shoots it: its plan, its hits, its spread. What its videos do; `how_to_shoot` — its reference hit step by step on that video's own clock, its length, what the format's videos keep and what a creator may make their own (where the format has a counted formula, `formula` lists what its breakouts do alike: each cue, how to do it, how widely in Shorti's words, and a breakout that shows it at a moment); `idea_card`, the format's own hook, turn and how a brand's product sits in it; its strongest hits with links and views (`why`: Shorti's line on a hit the format names as its own example); `moments`, what viewers reacted to and where; `flow`, how its way of shooting moved: what its newest breakouts did (`now`), its ladder of changes with how many took each rung in words, the worlds it moved into, up to three spots nobody has taken yet (`open`) and the same way of shooting under other sounds (`lineage`: its `id` for shorti_flow); `flow.spread` lists that lineage's observed platforms and elapsed days, with `flow.spread_line` in the answer's language (both absent for one platform); its page and the check with it filled. Address it by `format_id` (from shorti_what_to_shoot or shorti_find, or the slug of its page), or by `video_id` or `url` of one of its videos. The default summary keeps the shoot clock and keep/change, with three hits; detail='full' returns the unchanged legacy answer.","detail":"Description of `shorti_format` changed (67% word delta).","severity":"risky","descriptionDelta":0.6666666666666667},{"kind":"output_property_added","path":"outputSchema.properties.context","tool":"shorti_format","after":{"type":["null","object"],"description":"shorti.context.v1: the hit this answer names by its own measure, its format's rules about it with how many of the format's breakouts keep each, and what each grade means; the answer's text is its brief"},"detail":"Field `context` was added to `shorti_format` output.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.flow","tool":"shorti_format","after":"null|object","before":"unset","detail":"Type of `flow` on `shorti_format` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.flow","tool":"shorti_format","before":null,"detail":"Default of `flow` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_format","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_format` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_format","before":null,"detail":"Default of `hint` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.hits","tool":"shorti_format","after":"array|null","before":"unset","detail":"Type of `hits` on `shorti_format` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hits","tool":"shorti_format","before":null,"detail":"Default of `hits` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.next","tool":"shorti_format","after":"null|string","before":"unset","detail":"Type of `next` on `shorti_format` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.next","tool":"shorti_format","before":null,"detail":"Default of `next` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_format","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_format` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_format","before":null,"detail":"Default of `note` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_format","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_format` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_format","before":null,"detail":"Default of `as_of` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.format","tool":"shorti_format","after":"null|object","before":"unset","detail":"Type of `format` on `shorti_format` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.format","tool":"shorti_format","before":null,"detail":"Default of `format` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.moments","tool":"shorti_format","after":"array|null","before":"unset","detail":"Type of `moments` on `shorti_format` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.moments","tool":"shorti_format","before":null,"detail":"Default of `moments` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_format","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_format` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_format","before":null,"detail":"Default of `refusal` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.idea_card","tool":"shorti_format","after":"null|object","before":"unset","detail":"Type of `idea_card` on `shorti_format` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.idea_card","tool":"shorti_format","before":null,"detail":"Default of `idea_card` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.how_to_shoot","tool":"shorti_format","after":"null|object","before":"unset","detail":"Type of `how_to_shoot` on `shorti_format` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.how_to_shoot","tool":"shorti_format","before":null,"detail":"Default of `how_to_shoot` on `shorti_format` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_my_field","after":"A person's field in their own words, and its short-form week. `field`: a profession (피부과, 약사, 변호사, 세무사), a brand team, a shop (카페, 미용실), a 체험단 reviewer, an actor or a creator's niche. Ideas with how to shoot them, the field's breakouts with links and views, formats rising near it, and for professions what to check before posting, with its statute.","before":"A profession's or a brand team's short-form week: ideas, how its breakouts are made, what to check before posting. For doctors (피부과, 성형외과 …), dentists, Korean medicine, pharmacists, lawyers, tax accountants, labor attorneys, accountants, realtors and brand teams: this week's ideas (a title, the way, the first line, how to shoot it); the ways the field's breakout videos are made, with their links and views; what its breakouts share; one creator's breakout beside their own usual video; memes, and this week's formats with the field's twist (`format_id` for shorti_format); what to check before posting, each line with the Korean statute behind it; for brand teams a week's posting plan. Also for creators by field (뷰티, 패션, 리빙, 푸드, 밈·코미디, 일상, 반려동물, 운동, 여행, 댄스), 체험단 reviewers (뷰티 · 맛집 · 생활용품 체험단), shop owners (식당·카페, 미용실·네일, 운동 센터) and actors: the persona's breakouts with their links and views, the formats many in it shoot and, in Korean, the formats rising in the West near it with no Korean video yet. `field` in the person's own words; one Shorti does not read answers the fields and personas it does. lang='en' reads the English-speaking market's videos.","detail":"Description of `shorti_my_field` changed (63% word delta).","severity":"risky","descriptionDelta":0.6274509803921569},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_my_field","before":null,"detail":"Default of `hint` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.name","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `name` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.name","tool":"shorti_my_field","before":null,"detail":"Default of `name` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_my_field","before":null,"detail":"Default of `note` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.page","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `page` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.page","tool":"shorti_my_field","before":null,"detail":"Default of `page` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.role","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `role` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.role","tool":"shorti_my_field","before":null,"detail":"Default of `role` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.ways","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `ways` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.ways","tool":"shorti_my_field","before":null,"detail":"Default of `ways` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_my_field","before":null,"detail":"Default of `as_of` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.asked","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `asked` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.asked","tool":"shorti_my_field","before":null,"detail":"Default of `asked` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.field","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `field` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.field","tool":"shorti_my_field","before":null,"detail":"Default of `field` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.memes","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `memes` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.memes","tool":"shorti_my_field","before":null,"detail":"Default of `memes` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.state","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `state` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.state","tool":"shorti_my_field","before":null,"detail":"Default of `state` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.fields","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `fields` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.fields","tool":"shorti_my_field","before":null,"detail":"Default of `fields` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.market","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `market` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.market","tool":"shorti_my_field","before":null,"detail":"Default of `market` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.persona","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `persona` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.persona","tool":"shorti_my_field","before":null,"detail":"Default of `persona` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_my_field","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_my_field` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_my_field","before":null,"detail":"Default of `refusal` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.personas","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `personas` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.personas","tool":"shorti_my_field","before":null,"detail":"Default of `personas` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.breakouts","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `breakouts` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.breakouts","tool":"shorti_my_field","before":null,"detail":"Default of `breakouts` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.this_week","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `this_week` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.this_week","tool":"shorti_my_field","before":null,"detail":"Default of `this_week` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.week_plan","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `week_plan` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.week_plan","tool":"shorti_my_field","before":null,"detail":"Default of `week_plan` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.same_person","tool":"shorti_my_field","after":"null|object","before":"unset","detail":"Type of `same_person` on `shorti_my_field` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.same_person","tool":"shorti_my_field","before":null,"detail":"Default of `same_person` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.most_watched","tool":"shorti_my_field","after":"null|object","before":"unset","detail":"Type of `most_watched` on `shorti_my_field` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.most_watched","tool":"shorti_my_field","before":null,"detail":"Default of `most_watched` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.trend_twists","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `trend_twists` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.trend_twists","tool":"shorti_my_field","before":null,"detail":"Default of `trend_twists` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.before_you_post","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `before_you_post` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.before_you_post","tool":"shorti_my_field","before":null,"detail":"Default of `before_you_post` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.creator_reviews","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `creator_reviews` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.creator_reviews","tool":"shorti_my_field","before":null,"detail":"Default of `creator_reviews` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.what_breakouts_share","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `what_breakouts_share` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.what_breakouts_share","tool":"shorti_my_field","before":null,"detail":"Default of `what_breakouts_share` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats_many_creators","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `formats_many_creators` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats_many_creators","tool":"shorti_my_field","before":null,"detail":"Default of `formats_many_creators` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats_many_are_shooting","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `formats_many_are_shooting` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats_many_are_shooting","tool":"shorti_my_field","before":null,"detail":"Default of `formats_many_are_shooting` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.rising_abroad_not_in_korea","tool":"shorti_my_field","after":"array|null","before":"unset","detail":"Type of `rising_abroad_not_in_korea` on `shorti_my_field` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.rising_abroad_not_in_korea","tool":"shorti_my_field","before":null,"detail":"Default of `rising_abroad_not_in_korea` on `shorti_my_field` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_remake_recipe","after":"A hit remade with the person's own AI video model, the original clip as its reference. `video_id` or `url` (or `format_id`: its reference hit); `mode`: swap_person, swap_place, swap_product, restyle_3d, character, episode. One plan per model, each prompt written for the original clip and cut at the hit's cuts; one model's first request (`model`), all with detail='full'. Nothing generates here.","before":"A hit's remake for the AI video model an agent holds: keep, per-model prompts, the check. `video_id` or `url` of a hit, or `format_id` (its reference hit): `recipe` is `shorti.remake_recipe.v1`, the hit's own clock (cuts, beats, hook, turn) as a recipe for the person to make with their own video model. `mode`: swap_person (the creator in the hit's own shot), swap_place, swap_product, restyle_3d (a 3D animated version), character (every performer becomes one character), episode (a new episode of an AI-made format). `prompts` holds one plan per model — Seedance 2.5, MiniMax H3, Kling 3.0 Motion Control, Wan 3.0 — with its references in order and what each needs prepared, its requests cut at the hit's own cuts inside the model's limits (each with a timestamped prompt and parameters); then `keep`, `fit`, `steps`, the `sound` to post with and the `check` the result goes back to. Nothing here generates or spends. What the hit did, never why it spread; not a forecast of views. The default summary keeps the source clock, keep, links and each model's segment_count and first request (for_model=true). Read detail='full' for all requests.","detail":"Description of `shorti_remake_recipe` changed (66% word delta).","severity":"risky","descriptionDelta":0.6639999999999999},{"kind":"input_property_added","path":"inputSchema.properties.model","tool":"shorti_remake_recipe","after":{"anyOf":[{"enum":["seedance-2.5","minimax-h3","kling-3.0-motion-control","wan-3.0"],"type":"string"},{"type":"null"}],"default":null,"description":"Whose first request the default answer carries: seedance-2.5, minimax-h3, kling-3.0-motion-control, wan-3.0 (else the first)."},"detail":"Optional field `model` was added to `shorti_remake_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"shorti_scene_get","after":"Where the phone stood in a hit, from its published scene. By `video` (a video_id or post link): its length and each phone set-up (Korean lines with lang='ko'), and the page that opens the scene in 3D; `none` when no scene is published.","before":"A served league video's phone positions from its published scene. A served league video's id or post link: reads its duration and phone setups, with Korean camera and light lines under lang='ko'. English omits those lines. Returns ready with the scene's date, version and page opening in 3D, or none when no scene is published. Nothing is analysed or spent in this request.","detail":"Description of `shorti_scene_get` changed (59% word delta).","severity":"risky","descriptionDelta":0.5932203389830508},{"kind":"description_changed","tool":"shorti_scene_kit","after":"A hit's scene for a 3D or video generator. By `video` (a video_id or post link): what to keep and what is free, a clay glTF, each model's plan and one model's first request (`model`). detail='full' adds each shot's clock, camera, lens, depth and light where measured, every request and the geometry. Reads only; nothing is generated.","before":"A served league video's generator scene kit: JSON, clay glTF, camera, light, beats, ledger buckets and C35 model adapters. A served league video's id or post link: reads its precompiled scene kit. The default summary keeps every source shot clock, keep/lift/free with evidence, export links, and each model's segment_count and first request (for_model=true). Read detail='full' for the unchanged complete legacy kit and all model requests. The full scene_kit.v0 has versioned OpenCV cameras, lens, trajectories, depth, light, beats, cuts and ledger buckets, a clay glTF export and four C35 adapters. Public identity is nr; the private twin joint uses only the owner's own likeness-consented assets, never league likeness. No analysis, generation, identity IO or spending runs in this request.","detail":"Description of `shorti_scene_kit` changed (70% word delta).","severity":"risky","descriptionDelta":0.7047619047619047},{"kind":"input_property_added","path":"inputSchema.properties.model","tool":"shorti_scene_kit","after":{"anyOf":[{"enum":["seedance-2.5","minimax-h3","kling-3.0-motion-control","wan-3.0"],"type":"string"},{"type":"null"}],"default":null,"description":"Whose first request the default answer carries: seedance-2.5, minimax-h3, kling-3.0-motion-control, wan-3.0 (else the first)."},"detail":"Optional field `model` was added to `shorti_scene_kit`; may shift model behaviour.","severity":"risky"},{"kind":"description_changed","tool":"shorti_trend_radar","after":"Formats breaking out in the West that no Korean video holds yet, and those arriving. Each: what its videos do, its strongest video, how many Western videos and creators broke out with it and when last, its Korean videos so far, and how much of it needs no language. Narrow by `category` or `state`; then shorti_format(format_id).","before":"Formats breaking out in the West that no Korean video holds yet, and those arriving. Formats breaking out in the West (the US, Europe, other English-speaking countries) that no Korean video holds yet, then those just reaching Korea, in Shorti's radar order. Each says what its videos do, its strongest video (link, views), how many Western videos and creators broke out with it and when last, how many Korean videos it has, and how much of it needs no language (`language_light`). `to_korea` is the measured time from a Western hit to the first Korean video across this release's formats. Use it when a creator asks what to shoot before it reaches Korea; narrow by `category` or `state`; then shorti_format(format_id) for how to shoot one.","detail":"Description of `shorti_trend_radar` changed (49% word delta).","severity":"risky","descriptionDelta":0.4878048780487805},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_trend_radar","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_trend_radar` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_trend_radar","before":null,"detail":"Default of `hint` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.none","tool":"shorti_trend_radar","after":"null|object","before":"unset","detail":"Type of `none` on `shorti_trend_radar` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.none","tool":"shorti_trend_radar","before":null,"detail":"Default of `none` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_trend_radar","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_trend_radar` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_trend_radar","before":null,"detail":"Default of `note` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_trend_radar","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_trend_radar` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_trend_radar","before":null,"detail":"Default of `as_of` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.counts","tool":"shorti_trend_radar","after":"null|object","before":"unset","detail":"Type of `counts` on `shorti_trend_radar` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.counts","tool":"shorti_trend_radar","before":null,"detail":"Default of `counts` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats","tool":"shorti_trend_radar","after":"array|null","before":"unset","detail":"Type of `formats` on `shorti_trend_radar` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats","tool":"shorti_trend_radar","before":null,"detail":"Default of `formats` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_trend_radar","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_trend_radar` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_trend_radar","before":null,"detail":"Default of `refusal` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.to_korea","tool":"shorti_trend_radar","after":"null|object","before":"unset","detail":"Type of `to_korea` on `shorti_trend_radar` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.to_korea","tool":"shorti_trend_radar","before":null,"detail":"Default of `to_korea` on `shorti_trend_radar` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_video","after":"One video: what happens in it, its beats, its numbers and its formats. By post `url` or `video_id`: what happens, its hook, turn and beats; the moments worth copying with what to do; what it takes to shoot it again; views and length; its formats, the one every tool names for it first. not_in_corpus when Shorti has not read it. detail='full' adds every field.","before":"One video: what happens in it, its beats, its numbers and its formats. By a post's link or Shorti's video_id: what happens in it, its hook, turn and beats (Shorti's reading), its `cues` where a director read it (the moments worth copying, each with what to do and what its drawing points at, `look_at`), the director's `checklist` in the order one shoots, `to_shoot` (what it takes to shoot it again: `needs` in Shorti's words — how many people, where, how the camera is held, with what, how much editing — its closed `codes`, and where the asked language has them the `props`, the `camera` set-ups and what the presenter `does`), views and views per day, length, its page and the formats it belongs to. A video Shorti has not read answers `not_in_corpus`. The default detail='summary' is the compact reading; detail='full' answers every compiled field (large). The previous detail='brief' remains accepted.","detail":"Description of `shorti_video` changed (60% word delta).","severity":"risky","descriptionDelta":0.6},{"kind":"output_property_added","path":"outputSchema.properties.clip","tool":"shorti_video","after":{"type":["null","string"],"description":"with detail='full': the video to play, its best rung of 720p or more"},"detail":"Field `clip` was added to `shorti_video` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.context","tool":"shorti_video","after":{"type":["null","object"],"description":"shorti.context.v1: the hit this answer names by its own measure, its format's rules about it with how many of the format's breakouts keep each, and what each grade means; the answer's text is its brief"},"detail":"Field `context` was added to `shorti_video` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.url","tool":"shorti_video","after":{"type":["null","string"],"description":"with detail='full': the post on its platform"},"detail":"Field `url` was added to `shorti_video` output.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.full","tool":"shorti_video","after":"null|object","before":"unset","detail":"Type of `full` on `shorti_video` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.full","tool":"shorti_video","before":null,"detail":"Default of `full` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_video","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_video` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_video","before":null,"detail":"Default of `hint` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_video","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_video` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_video","before":null,"detail":"Default of `note` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_video","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_video` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_video","before":null,"detail":"Default of `as_of` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.state","tool":"shorti_video","after":"null|string","before":"unset","detail":"Type of `state` on `shorti_video` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.state","tool":"shorti_video","before":null,"detail":"Default of `state` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.video","tool":"shorti_video","after":"null|object","before":"unset","detail":"Type of `video` on `shorti_video` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.video","tool":"shorti_video","before":null,"detail":"Default of `video` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats","tool":"shorti_video","after":"array|null","before":"unset","detail":"Type of `formats` on `shorti_video` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats","tool":"shorti_video","before":null,"detail":"Default of `formats` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_video","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_video` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_video","before":null,"detail":"Default of `refusal` on `shorti_video` changed null → unset.","severity":"risky"},{"kind":"description_changed","tool":"shorti_what_to_shoot","after":"The formats to shoot this week: the week's picks, then the rest of the week. Each format: what its videos do, its strongest video (link, views, poster), how it has spread and its page; a pick also names the recent hit behind it (`this_week`). Narrow by `category` or `platform`. Signed in, the person's own week leads. Then shorti_format(format_id) for how to shoot one.","before":"The formats to shoot this week: the week's picks, then the week's feed. The short-form formats breaking out now (TikTok, Reels, Shorts): this week's picks first, each with Shorti's line on the recent hit behind the pick (`this_week.why`) and that hit's link, then the rest of the week's feed, in the order Shorti's home shows it. Each format says what its videos do, its strongest video (link, views, poster), how it has spread, its page and the check with it filled. Narrow by `category` (the creator's niche) and `platform`. Signed in, the person's own week leads (`for_you`: why each came to them). Use it when a creator or a brand asks what to make now; then shorti_format(format_id) for how to shoot one.","detail":"Description of `shorti_what_to_shoot` changed (41% word delta).","severity":"risky","descriptionDelta":0.41463414634146345},{"kind":"output_type_changed","path":"outputSchema.properties.hint","tool":"shorti_what_to_shoot","after":"null|string","before":"unset","detail":"Type of `hint` on `shorti_what_to_shoot` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.hint","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `hint` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.none","tool":"shorti_what_to_shoot","after":"null|object","before":"unset","detail":"Type of `none` on `shorti_what_to_shoot` changed unset → null|object.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.none","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `none` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.note","tool":"shorti_what_to_shoot","after":"null|string","before":"unset","detail":"Type of `note` on `shorti_what_to_shoot` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.note","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `note` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.week","tool":"shorti_what_to_shoot","after":"null|string","before":"unset","detail":"Type of `week` on `shorti_what_to_shoot` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.week","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `week` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.as_of","tool":"shorti_what_to_shoot","after":"null|string","before":"unset","detail":"Type of `as_of` on `shorti_what_to_shoot` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.as_of","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `as_of` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.for_you","tool":"shorti_what_to_shoot","after":"boolean|null","before":"unset","detail":"Type of `for_you` on `shorti_what_to_shoot` changed unset → boolean|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.for_you","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `for_you` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.formats","tool":"shorti_what_to_shoot","after":"array|null","before":"unset","detail":"Type of `formats` on `shorti_what_to_shoot` changed unset → array|null.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.formats","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `formats` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.refusal","tool":"shorti_what_to_shoot","after":"null|string","before":"unset","detail":"Type of `refusal` on `shorti_what_to_shoot` changed unset → null|string.","severity":"breaking"},{"kind":"default_changed","path":"outputSchema.properties.refusal","tool":"shorti_what_to_shoot","before":null,"detail":"Default of `refusal` on `shorti_what_to_shoot` changed null → unset.","severity":"risky"}],"published_at":"2026-10-07T21:25:18.651Z"},{"slug":"ZV-2026-1904","server_name":"shorti.ai","severity":"breaking","title":"shorti.ai: Field campaign was removed from shorti_find output; consumers reading it will break.","summary":"[safe] Description of shorti_campaigns_for_me changed (5% word delta). [risky] Description of shorti_edit_recipe changed (63% word delta). [risky] Optional field url was added to shorti_edit_recipe; may shift model behaviour. [risky] Optional field video_id was added to shorti_edit_recipe; may shift model behaviour. [breaking] Field campaign was removed from shorti_find output; consumers reading it will break. [breaking] Field campaign was removed from shorti_flow output; consumers reading it will break. [breaking] Field campaign was removed from shorti_format output; consumers reading it will break. [breaking] Field campaign was removed from shorti_my_field output; consumers reading it will break. [safe] Description of shorti_remake_recipe changed (13% word delta). [breaking] Field campaign was removed from shorti_trend_radar output; consumers reading it will break. [breaking] Field campaign was removed from shorti_video output; consumers reading it will break. [breaking] Field campaign was removed from shorti_what_to_shoot output; consumers reading it will break.","changes":[{"kind":"description_changed","tool":"shorti_campaigns_for_me","after":"Read published brand campaign.offer.v1 summaries. This reads no personal matches or private brief. Legacy handoff tokens are refused.","before":"Read published campaign.offer.v1 summaries. This reads no personal matches or private brief. Legacy handoff tokens are refused.","detail":"Description of `shorti_campaigns_for_me` changed (5% word delta).","severity":"safe","descriptionDelta":0.050000000000000044},{"kind":"description_changed","tool":"shorti_edit_recipe","after":"A format's edit for an agent's editor: slots, cuts on the beat, captions, the check. `video_id` or `url`: a hit's own cuts, beats, hook and sound; `format_id` or `family_id`: its plan on its reference hit's clock. A hit wins when both are given. `recipe` is `shorti.edit_recipe.v1`: `basis` is `this_hit` for a member's own clock or `format_reference` for the format plan (also kept when the requested hit is its reference). Both carry `canvas`, `length_ms`, `cuts`, `beats`, `hook`, `keep`, `sound`, `withheld` and `apply`. A non-reference hit borrows no slots or timed anchors; its cuts have rule `source`, and its format keep lines stay labelled `format_*`. The format plan also carries `slots`, `anchors`, `free`, `captions`, `vary` and `limits`. Cut where the creator's action or phrase ends nearest the hit's cuts. Beside it `formula` holds the format's counted cues, where available, and `check` is where the edit goes back: the person uploads and confirms on Shorti, or calls shorti_check_link with `format`. What the hit did, never why it spread; not a forecast of views.","before":"A format's edit for an agent's editor: slots, cuts on the beat, captions, the check. `format_id` (from shorti_what_to_shoot, shorti_find or shorti_format): the format's compiled plan as the creator's editing agent takes it, for any editing tool or MCP it calls (trim, split, reorder, speed, captions, export). `recipe` is `shorti.edit_recipe.v1`: `canvas` (9:16) and `length_ms`; `slots` in order on the reference hit's own clock — what each `shows` (`ko` and `en`) and its `frame` where the plan carries one — one way the format was cut, not a timeline to copy to the frame; `anchors`, the reference's hook, rhythm, sound and framing values its format's members do not vary on, each with the `band` inside which a viewer cannot tell the edit from it (`never`: the reference never reaches it, e.g. one continuous take); `free`, what the format's own members vary on, with their usual span; `cuts`, each with the `rule` that binds it (`first_cut`, `drop`, `beat` with its `window_ms`, else `free`); `beats`, `captions`, `hook`, `keep`, `vary`, `sound` (its clock, a measured `drop`), `limits` (how much faster speech and motion may run before a viewer notices), `withheld` and `apply`, the steps to fit the creator's own pacing: cut where their action or phrase ends, hold the anchors, let the free cuts move. Beside it `formula`, where the format has a counted one: what its breakouts do alike (`cue`, `do` and `share` in `ko` and `en`, a breakout and its moment) and what its makers vary: the check the edit goes back to is held to these cues. Then send the edit to `check` (the person uploads and confirms on Shorti) or call shorti_check_link with `format` for a result this chat can read back — several edits can each be checked. What the hit did, never why it spread, and not a forecast of views.","detail":"Description of `shorti_edit_recipe` changed (63% word delta).","severity":"risky","descriptionDelta":0.634020618556701},{"kind":"input_property_added","path":"inputSchema.properties.url","tool":"shorti_edit_recipe","after":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"default":null,"description":"The hit, by the post's link."},"detail":"Optional field `url` was added to `shorti_edit_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.video_id","tool":"shorti_edit_recipe","after":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"default":null,"description":"The hit, by Shorti's id."},"detail":"Optional field `video_id` was added to `shorti_edit_recipe`; may shift model behaviour.","severity":"risky"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_find","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_find` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_flow","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_flow` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_format","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_format` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_my_field","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_my_field` output; consumers reading it will break.","severity":"breaking"},{"kind":"description_changed","tool":"shorti_remake_recipe","after":"A hit's remake for the AI video model an agent holds: keep, per-model prompts, the check. `video_id` or `url` of a hit, or `format_id` (its reference hit): `recipe` is `shorti.remake_recipe.v1`, the hit's own clock (cuts, beats, hook, turn) as a recipe for the person to make with their own video model. `mode`: swap_person (the creator in the hit's own shot), swap_place, swap_product, restyle_3d (a 3D animated version), character (every performer becomes one character), episode (a new episode of an AI-made format). `prompts` holds one plan per model — Seedance 2.5, MiniMax H3, Kling 3.0 Motion Control, Wan 3.0 — with its references in order and what each needs prepared, its requests cut at the hit's own cuts inside the model's limits (each with a timestamped prompt and parameters); then `keep`, `fit`, `steps`, the `sound` to post with and the `check` the result goes back to. Nothing here generates or spends. What the hit did, never why it spread; not a forecast of views. The default summary keeps the source clock, keep, links and each model's segment_count and first request (for_model=true). Read detail='full' for all requests.","before":"A hit's remake for the AI video model an agent holds: keep, per-model prompts, the check. `video_id` or `url` of a hit, or `format_id` (its reference hit): `recipe` is `shorti.remake_recipe.v1`, the hit's own clock (cuts, beats, hook, turn) written as AI video models take it, for the creator's own generation tool (a Higgsfield, fal or gateway MCP). `mode`: swap_person (the creator in the hit's own shot), swap_place, swap_product, restyle_3d (a 3D animated version), character (every performer becomes one character), episode (a new episode of an AI-made format). `prompts` holds one plan per model — Seedance 2.5, MiniMax H3, Kling 3.0 Motion Control, Wan 3.0 — with its references in order and what each needs prepared, its requests cut at the hit's own cuts inside the model's limits (each with a timestamped prompt and parameters) and its list price; then `keep`, `fit`, `steps`, the `sound` to post with and the `check` the result goes back to. Nothing here generates or spends. What the hit did, never why it spread; not a forecast of views. The default summary keeps the source clock, keep, links and each model's segment_count and first request (for_model=true). Read detail='full' for all requests: it preserves the unchanged legacy answer.","detail":"Description of `shorti_remake_recipe` changed (13% word delta).","severity":"safe","descriptionDelta":0.13235294117647056},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_trend_radar","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_trend_radar` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_video","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_video` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.campaign","tool":"shorti_what_to_shoot","before":{"anyOf":[{"type":"object","properties":{"how":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"how a creator takes part and earns, in their language"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Shorti's own 체험단 (campaign), in the creator's language"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"the campaign's page on Shorti"},"mission":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"its one mission, in the creator's language: the video opens on Shorti's coaching of a hit, then the creator's take shot that way"},"referral":{"anyOf":[{"type":"object","properties":{"signup":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits that person gets for joining"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"the credits a creator earns for each person who joins through their referral link and gets their first feedback"},"per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"how many such people a month earn the creator credits"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"what it pays: only the sign-ups a video brings through the creator's referral link, never a post"}},"additionalProperties":true},{"type":"null"}],"default":null,"description":"present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`"},"detail":"Field `campaign` was removed from `shorti_what_to_shoot` output; consumers reading it will break.","severity":"breaking"}],"published_at":"2026-10-07T04:58:16.945Z"}]