{"openapi":"3.1.0","info":{"title":"Transitionlib API","version":"0.1.0","description":"A fully local, hand-curated video-editing transition and effects glossary: named transitions and cuts (cut, dissolve, fade to black, wipe, iris, match cut, jump cut, whip pan, J-cut, L-cut, cross-cutting, match on action) with when-to-use guidance, category browsing, a use-case matcher, and dedicated explainers for commonly confused pairs.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://transitionlib.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/transitionlib/docs"},"termsOfService":"https://connectorbay.com/transitionlib/terms"},"servers":[{"url":"https://transitionlib.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/transitionlib/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/transition_info":{"post":{"operationId":"transition_info","summary":"Full explanation of one named transition or cut: description, when to use it, and mood/effect. Use for","description":"Full explanation of one named transition or cut: description, when to use it, and mood/effect. Use for\n    \"what's a match cut\", \"explain a whip pan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A transition or cut name.","examples":["match_cut","l_cut","whip_pan"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"transition_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/transition_list":{"post":{"operationId":"transition_list","summary":"All twelve named transitions/cuts with a one-line description and category. Use for \"what transitions do","description":"All twelve named transitions/cuts with a one-line description and category. Use for \"what transitions do\n    you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"transition_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/category_list":{"post":{"operationId":"category_list","summary":"The five transition categories (cut-based, dissolve/fade-based, graphic/wipe-based, movement-based,","description":"The five transition categories (cut-based, dissolve/fade-based, graphic/wipe-based, movement-based,\n    sound-led) with how many techniques are in each. Use for \"what categories of transitions are there\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/transitions_by_category":{"post":{"operationId":"transitions_by_category","summary":"Every technique in one category. Use category_list to see valid category names. Use for \"what sound-led","description":"Every technique in one category. Use category_list to see valid category names. Use for \"what sound-led\n    transitions do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["cut_based","sound_based"],"title":"Category","type":"string"}},"required":["category"],"title":"transitions_by_categoryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/when_to_use":{"post":{"operationId":"when_to_use","summary":"Suggests 1-3 techniques for a described editorial goal, keyword-matched against each technique's stated","description":"Suggests 1-3 techniques for a described editorial goal, keyword-matched against each technique's stated\n    when-to-use and mood. Use for \"what transition should I use to show time passing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"goal":{"description":"An editorial goal, in plain language.","examples":["show a passage of time","hide a jump in time within continuous action","heighten tension between two simultaneous events"],"minLength":1,"title":"Goal","type":"string"}},"required":["goal"],"title":"when_to_useArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/jl_cut_explainer":{"post":{"operationId":"jl_cut_explainer","summary":"Dedicated deep-dive on the commonly confused J-cut vs L-cut: which one leads with audio, which one trails","description":"Dedicated deep-dive on the commonly confused J-cut vs L-cut: which one leads with audio, which one trails\n    audio, the letter-shape mnemonic, and a memory aid. Use for \"what's the difference between a J-cut and an\n    L-cut\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"jl_cut_explainerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/match_cut_vs_jump_cut":{"post":{"operationId":"match_cut_vs_jump_cut","summary":"Clarifies match cut (connects two DIFFERENT things through similarity) vs. jump cut (disrupts continuity","description":"Clarifies match cut (connects two DIFFERENT things through similarity) vs. jump cut (disrupts continuity\n    within the SAME scene). Use for \"what's the difference between a match cut and a jump cut\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"match_cut_vs_jump_cutArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/transition_duration_guide":{"post":{"operationId":"transition_duration_guide","summary":"Typical duration ranges for a quick/standard/slow dissolve, a fade to black, and a wipe, each with when","description":"Typical duration ranges for a quick/standard/slow dissolve, a fade to black, and a wipe, each with when\n    that length fits. Use for \"how long should a dissolve be\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"transition_duration_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/transition_glossary":{"post":{"operationId":"transition_glossary","summary":"Defines editing terms: cutaway, insert shot, montage, continuity editing, invisible cut, eyeline match, the","description":"Defines editing terms: cutaway, insert shot, montage, continuity editing, invisible cut, eyeline match, the\n    180-degree rule, diegetic sound, b-roll, smash cut. Use for \"what's the 180-degree rule\", \"what's b-roll\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"transition_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}