{"server":"ai.cueframe/cueframe","count":50,"changes":[{"tool":"create_brand_kit","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"ccba367921a460f068944cc504bfffbb","after_hash":"23fc92b333320ff5867257cc549db1e3"},{"tool":"retry_render","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"001171980a6f75a5f73d59e72258d616","after_hash":"19e2ca0c01aae4d79679893b1ed88278"},{"tool":"update_webhook","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f26c07d271be0ba771d9e2b47385aaed","after_hash":"a1edae704939c965a0a8a6cdcee11323"},{"tool":"repin_component","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["description","inputSchema","outputSchema"],"description_before":"Move clips that pin a retired TSX (version 3) component to its native (version 4) successor: the `successorSourceVersionId` that get_composition's `needsUpgrade` (or a `component_source_retired` refusal) names. Pass projectId and, in `body`, optional `clip_ids` (omit them to move every clip that has a successor) and `composition_id` (the active composition when omitted). Saved inputs are kept. The answer lists `moved` and `withoutSuccessor`; rebuild the latter as native components (create_component, then apply_composition at the same timing and placement).","description_after":"Move clips stored in a retired form to their native (version 4) successors: a clip pinning a retired TSX (version 3) component, or one stored before execution pins (`needsUpgrade` kind `unpinned-component`), moves to the `successorSourceVersionId` that get_composition's `needsUpgrade` (or a `component_source_retired` refusal) names. Pass projectId and, in `body`, optional `clip_ids` (omit them to move every clip that has a successor) and `composition_id` (the active composition when omitted). Saved inputs are kept. The answer lists `moved` and `withoutSuccessor`; rebuild the latter as native components (create_component, then apply_composition at the same timing and placement). A retired clip with no successor must be rebuilt or removed in the same write that upgrades the others: a write never leaves one in place.","description_similarity":0.69,"before_hash":"d44e6d018652b92fa52a30583458ae6f","after_hash":"42706736384fc64e6a2c833433ac46d6"},{"tool":"update_component","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"61f08d65f8fce6fd1fc9edb847a8f235","after_hash":"bad23e6abb644e89dd35e497ca7196fd"},{"tool":"update_project","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"9d3c0633ad1576972f6fc0fa81638754","after_hash":"bd6750d4b7152e7199189e0585fb0e5a"},{"tool":"register_critic","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"33c6d8cd92638f734cfebc5c128f5a24","after_hash":"411a167cd37f564bc7790b179d9fa230"},{"tool":"create_webhook","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"dd2ca877cf76d40c3a8f46f6f667d542","after_hash":"18dc043a994ab2bd1296590d83ca1786"},{"tool":"import_resource","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"38601fe5bc49db15c8a63284f1964737","after_hash":"336b3748098de2bd90b8ba4c92a0197e"},{"tool":"create_upload","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"7fb9962aa8f673d8758b1dbe656da013","after_hash":"b3bf597e19aa02de92e07c15299e34e5"},{"tool":"generate_media","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"989e30a365d6501ade3175b85cb335ba","after_hash":"e50f3149be8c54cfc7bc29e93ca82b84"},{"tool":"derive_composition","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"0fb1f5c522c9bf86f768871e6f7aaed0","after_hash":"76c824d9bf850479a0c0f64821ec3a80"},{"tool":"get_composition","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["description"],"description_before":"READ BACK a composition as JSON — the edit itself: tracks, clips, card HTML, reframe segments, captions, markers, format. This is what create_render encodes, so it is also what you hand to validate_composition (which needs a full inline composition body), what you diff after an edit, and what you archive/share so someone else can re-render the SAME video. Read-only and free. Authoring stays op-based (apply_composition) — do not round-trip this object back as a write. A composition too large to fit one MCP result degrades to a STRUCTURAL SUMMARY (every track and clip still listed; card html and caption words elided as lengths) with a header saying so — read it over REST if you need the verbatim body. Defaults to the project's ACTIVE composition; pass `compositionId` to read a specific one (the same id apply_composition takes as `composition_id`, and preview_frame / create_render take as compositionId) so an A/B variant can be read back, not just written. Pass includeDependencies=\"true\" on a v1 guarded endpoint to read composition_id, revision and dependency tokens. With componentExecutionVersions=[\"3\",\"4\"], this envelope also returns expectedBrandIdentity from the persisted project authority; carry it unchanged into the matching negotiated write. Preserve those observed tokens when authoring; never refresh the basis to hide a conflict.","description_after":"READ BACK a composition as JSON — the edit itself: tracks, clips, card HTML, reframe segments, captions, markers, format. This is what create_render encodes, so it is also what you hand to validate_composition (which needs a full inline composition body), what you diff after an edit, and what you archive/share so someone else can re-render the SAME video. Read-only and free. Authoring stays op-based (apply_composition) — do not round-trip this object back as a write. A composition too large to fit one MCP result degrades to a STRUCTURAL SUMMARY (every track and clip still listed; card html and caption words elided as lengths) with a header saying so — read it over REST if you need the verbatim body. Defaults to the project's ACTIVE composition; pass `compositionId` to read a specific one (the same id apply_composition takes as `composition_id`, and preview_frame / create_render take as compositionId) so an A/B variant can be read back, not just written. The result includes the exact HTTP etag string; copy it to apply_composition.body.if_match (the numeric revision is not an ETag). Pass includeDependencies=\"true\" on a v1 guarded endpoint to read composition_id, revision and dependency tokens. With componentExecutionVersions=[\"3\",\"4\"], this envelope also returns expectedBrandIdentity from the persisted project authority; carry it unchanged into the matching negotiated write. Preserve those observed tokens when authoring; never refresh the basis to hide a conflict. BOTH shapes carry `needsUpgrade` when clips are stored in a retired form (unpinned or TSX component placements, removed primitives): each entry names the clipId, the kind and, when one exists, the native successor pin — move those with repin_component and rebuild the rest with create_component; such a composition will not save or render as-is. Absent when nothing needs upgrading.","description_similarity":0.768,"before_hash":"ac34553b266c87379e7b8b00cdd4c53a","after_hash":"6d5c2cded2fdd9be50cf1b7ad701d25e"},{"tool":"new_composition","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"5c5c983996bfa25cb6b3d944cd3de52e","after_hash":"7071c5394d224de121c7984371778395"},{"tool":"create_project","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"1005338b4fe65ae40d2429d8b94d075d","after_hash":"3c22d00f290e9191b9428d27094057a0"},{"tool":"refresh_render_url","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Re-sign a COMPLETE render's output URL. A render's presigned MP4 link lasts ~7 days, so wait_job / getRender on an old render hands back a link that 403s; this mints a fresh one for the same file and returns { outputUrl, outputExpiresAt }. Needs projectId + renderId (from create_render). 422 render_not_complete while the render is still running or failed — wait_job for it first. Requires renders:write (the row's stored URL is updated).","description_similarity":null,"before_hash":null,"after_hash":"3dfe74952ad7b4af601d13cdaba912dc"},{"tool":"get_render","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read ONE render's record without waiting on it: status, progress while it runs, outputUrl + outputExpiresAt once complete, the typed failure (errorCode / category / retryable) if it failed, and WHAT RENDERED — compositionId (the composition it froze), format (aspect/fps/resolution it encoded at), engine, createdAt / completedAt, outputDurationSec, and the preview window for a preview_clip. Free, read-only, instant — use it to audit or correlate a past render (which composition, when, how long) where wait_job would block; wait_job remains the way to block until a running render finishes. An expired outputUrl is refreshed with refresh_render_url.","description_similarity":null,"before_hash":null,"after_hash":"e3ce7076190a3bdc901b867e0754ffe1"},{"tool":"download_media","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Get a presigned download URL for a media item's stored SOURCE file — the bytes CueFrame composes from (the raw upload, or its conformed transcode). This is how you copy media OUT of a library: fetch the URL directly (no auth header) and PUT the bytes elsewhere with create_upload, or hand it to import_media on another account. Works as soon as the upload or import is stored, before processing completes. The URL expires at `expiresAt` (about an hour) — call again for a fresh one rather than caching it. Read-only and free; nothing is persisted. For a render's MP4 use refresh_render_url instead.","description_similarity":null,"before_hash":null,"after_hash":"aab450a32a9e9407930b2990bcf3dd35"},{"tool":"list_media","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"b950a6f027a69d66e75b1f18eae5d26f","after_hash":"6baa1853fa01b79536891813d9bdf9e7"},{"tool":"get_transcript","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["description"],"description_before":"Read exact source-time transcript words in bounded utterance pages. Word start/end values are seconds from the source media start. Pass limit (20 recommended), then pagination.nextCursor as after; the formatter omits the unbounded fullText duplicate.","description_after":"Read exact source-time transcript words in bounded utterance pages. Word start/end values are seconds from the source media start. Default limit is 20; pass pagination.nextCursor as after for later pages. The formatter omits the unbounded fullText duplicate.","description_similarity":0.838,"before_hash":"48945d9bb9c736675baa73a08ce1fbb3","after_hash":"bb8875c26c15afd7766aba4575a36b29"},{"tool":"get_media_context","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["description","inputSchema","outputSchema"],"description_before":"Fetch bounded authoring context for a media item: dimensions/thumbnail, compact face roster, transcript counts/sample, temporal grids, and fact readiness. The full transcript body is deliberately elided so this read cannot overflow MCP; follow with get_transcript for exact paginated word timings.","description_after":"Fetch bounded authoring context for a media item: dimensions/thumbnail, compact face roster, transcript counts/sample, temporal grids, and fact readiness. Transcript and word-grid counts cover one page only (default 20 utterances); pass transcript.data.pagination.nextCursor as after to get_media_context for the next context page, or use get_transcript for exact paginated word timings.","description_similarity":0.466,"before_hash":"8585eb226f87f879534e3ecdea998454","after_hash":"89a92d12cdfab82eb8ab1ecc01bbb66e"},{"tool":"get_component_source","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"8421a07851062532b480815fbbcdedb9","after_hash":"90e0335976721ceccd75a71d345c1689"},{"tool":"apply_template","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"0a9db9e3168dce906b4e4f1cbb269095","after_hash":"be35314091bee931b865bb95fd0fcda0"},{"tool":"get_template","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read a saved organization template by id or a known public catalog template by slug. Use the returned document and exact reference to inspect required media parameters, presets, brand kit and rubric before start_template or apply_template. Do not invent a slug from a component-library card.","description_similarity":null,"before_hash":null,"after_hash":"262e5e56572708b73509be68758e0c9c"},{"tool":"list_templates","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"List this organization's saved templates. Follow pagination.nextCursor with after to read further pages. Public catalog slugs are not enumerated here; read a known public slug with get_template.","description_similarity":null,"before_hash":null,"after_hash":"77f331b8d831f74b8e04e2d91df913bb"},{"tool":"create_component","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e1f9b936934e0834018053ac204b184e","after_hash":"03269ad323b62120620caae3c43f09ac"},{"tool":"update_brief","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"9c049674984338436d98f5b6e0b417ce","after_hash":"4b5d6fe48bfcd40493bc2e9bfcd60db7"},{"tool":"create_brief","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"74b8fefcaf9b9dac1ceded890d2f8749","after_hash":"b992d5ecf28fa137c1d31e324b1c9c97"},{"tool":"resume","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"07229a8ad94a73931eed0c22dcc19d8e","after_hash":"58db191e80a36740ab123ac146f62895"},{"tool":"score_composition","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e0cd3f4df038d0f410d7d2ffbc28c619","after_hash":"204961fe723bd2b2653b2bdcab60b850"},{"tool":"preview_clip","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"ec66bf53ad6c3118769b88d6771aa2ab","after_hash":"a142374abed9ddaf2fd6ee97e848d6b2"},{"tool":"preview_component","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"3dcb97bb05f7d0886ef9f071ee9fbb88","after_hash":"04effd8750ea5bf9adfebbfc9ca1fa81"},{"tool":"preview_frame","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"1b0d2d6f5cfc02722731637dfe81e331","after_hash":"f15f17dd9bea00fd17ada23496305902"},{"tool":"create_render","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"85b6d7502b4e0b7c423c15c4ecea0ceb","after_hash":"efb56d70b9f53ccd92ed876480e98533"},{"tool":"compose","kind":"changed","observed_at":"2026-10-19T01:04:20.203Z","fields":["inputSchema","outputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"078dbfbd1ce6220519cb85a6d230f524","after_hash":"2a8c4daf09e4c5b9670d14364a82216c"},{"tool":"editorial_apply","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Commit an integrated editorial edit to the saved project composition with both runExpectedRevision and guarded composition fields. Preserve the observed concurrency basis and the composition journal identity: nested composition.commandId must equal composition.clientId + \":\" + composition.sequence. The session call commandId is a separate HTTP request identity.","description_similarity":null,"before_hash":null,"after_hash":"c830c4453952bb857b037ea2642df6f9"},{"tool":"editorial_integrate","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Save selected finding IDs, explicit omitted reasons and unresolved gaps with the observed run revision. Read the run and findings before deciding.","description_similarity":null,"before_hash":null,"after_hash":"eb4935e49499ca5a9f8c191f98301c78"},{"tool":"editorial_findings_append","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Persist one evidence-backed observation. A nothing_useful outcome may cover only what the cited evidence actually inspected; sparse stills do not certify an unsampled interval.","description_similarity":null,"before_hash":null,"after_hash":"5c2df579b9c01dd23b1d78b2c4427747"},{"tool":"editorial_inspect_transcript","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Deliver at most 100 verified transcript words with their mapped certified decode interval and save a transcript evidence receipt.","description_similarity":null,"before_hash":null,"after_hash":"54f5051e4cf40ea1e4378f02d5a5ec90"},{"tool":"editorial_inspect_audio","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Deliver a bounded 16 kHz source audio interval and save an audio evidence receipt. The interval must lie inside a certified run input.","description_similarity":null,"before_hash":null,"after_hash":"ea11826122ccc5c0c3cc9e43d1f5260c"},{"tool":"editorial_sample_motion","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Deliver bounded sampled motion frames and save their evidence receipt. The sampled frames do not certify continuous visual coverage.","description_similarity":null,"before_hash":null,"after_hash":"627022d40a6f308dbe5beb1f5c3f7986"},{"tool":"editorial_inspect_source","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Deliver one exact decoded source frame as JPEG and save its evidence receipt. Only that sampled frame is visually inspected; preserve the returned evidenceId and coverage.","description_similarity":null,"before_hash":null,"after_hash":"87dcfbf2f295d2fe0d014eddbc82aac2"},{"tool":"editorial_create_run","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Start an editorial run from a persisted brief and explicitly selected certified source ranges. Read editorial_run_source for each project media source first; use its exact identity, revision, frame count and fps ratio. Never invent a source pin or infer inspection from an index.","description_similarity":null,"before_hash":null,"after_hash":"8e666c4e976ec77d643a6a38373f7e74"},{"tool":"editorial_create_brief","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Persist an authored brief for the selected project. The projectId belongs in body.brief; use the returned briefId to start an editorial run.","description_similarity":null,"before_hash":null,"after_hash":"944b3114c824bf2eac33caf0f74ded68"},{"tool":"editorial_findings_list","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read durable observations, including useful, nothing-useful and uncertain outcomes, in bounded pages. Pass nextCursor as cursor until done; retain evidence IDs, supersession and uncertainty when recovering decisions.","description_similarity":null,"before_hash":null,"after_hash":"c09ad4b4babf1b43ba5ba353f5cc7118"},{"tool":"editorial_list_evidence","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read delivered evidence and inspection coverage for a run in bounded pages. Pass nextCursor as cursor until done; an empty page does not prove the whole source was inspected.","description_similarity":null,"before_hash":null,"after_hash":"c2ee08a90732aed8c3efcd99f9fc7c19"},{"tool":"editorial_get_run","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read a persisted editorial run, including its revision, state, inputs, outline, selected finding IDs, omitted reasons and unresolved integration gaps. Read findings and evidence separately for complete coverage.","description_similarity":null,"before_hash":null,"after_hash":"be3120b36bcba107713344543f473b7a"},{"tool":"editorial_list_runs","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Recover persisted editorial runs for a project in bounded pages. Pass nextCursor as cursor until done, then read each relevant run for its integration decisions and unresolved gaps.","description_similarity":null,"before_hash":null,"after_hash":"754d13a8cb057e52a0212525e55af9a8"},{"tool":"editorial_list_briefs","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Recover persisted authored briefs for a project. Read bounded pages; pass nextCursor as cursor until done. Brief IDs link to editorial runs.","description_similarity":null,"before_hash":null,"after_hash":"2234e7ce14823032f5018e8ae8599fa6"},{"tool":"editorial_run_source","kind":"added","observed_at":"2026-10-19T01:04:20.203Z","fields":[],"description_before":null,"description_after":"Read the certified decode representation for media selected in this project before starting an editorial run. Supply projectId and mediaId; a null representation means this source cannot be pinned. The response omits internal storage paths. Select a bounded range from the returned frameCount and exact fps ratio; do not invent a source identity.","description_similarity":null,"before_hash":null,"after_hash":"a76a8e9af007ff29b2888e06cac6e0b4"}],"next_before":null,"next_actions":[]}