instantclips-mcp 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
"serverInfo": {
|
|
8
8
|
"name": "instantclips",
|
|
9
9
|
"title": "InstantClips",
|
|
10
|
-
"version": "0.6.
|
|
10
|
+
"version": "0.6.1",
|
|
11
11
|
"websiteUrl": "https://instantclips.ai"
|
|
12
12
|
},
|
|
13
|
-
"instructions": "InstantClips turns a product into a short vertical marketing video.\n\nEvery video is drafted against a BRAND — a voice, a target market and a\nset of keywords. Getting the brand right matters more than anything else\nhere: a product drafted under the wrong company's voice renders perfectly\nand is still unusable. Never assume a product belongs to whatever brand\nthe account already has.\n\
|
|
13
|
+
"instructions": "InstantClips turns a product into a short vertical marketing video.\n\nEvery video is drafted against a BRAND — a voice, a target market and a\nset of keywords. Getting the brand right matters more than anything else\nhere: a product drafted under the wrong company's voice renders perfectly\nand is still unusable. Never assume a product belongs to whatever brand\nthe account already has.\n\nThat does not mean opening with a question. If the user has given you a\nproduct link, start with it: `import_product_from_url` reads the page,\ndetects the brand behind the storefront and matches it against the\nbrands already on the account, so the usual case needs no question at\nall — and asking for a store URL when they have just handed you a\nproduct URL reads as not having looked. Ask only when the import comes\nback with `brand_decision_required`, which is this server saying it\ncould not settle the brand itself; `list_brands` then gives you the\naccount's brands by name so you can offer the choice. With photos and no\nlink there is nothing to detect from, so expect to ask there.\n\nThe workflow, in order:\n\n1. `import_product_from_url` with the product's page URL, or\n `create_product_from_images` with the product's photos: hosted\n `image_urls`, or `image_files` when the client hands you the photos\n the user attached to the conversation (ChatGPT does). A URL import\n returns immediately and runs in the background; attached photos are\n imported before the call answers. If the user already made the\n product on the website — dropped photos on the workbench, pasted a\n link there — find it with `list_products` (newest first) and\n continue from step 2.\n2. Poll `get_product` until `import_status` is \"imported\".\n - If it reports `brand_decision_required` with `drafting: false`, the\n brand could not be settled: the storefront does not match any brand\n on the account, or (photos) there was no page to detect one from.\n Stop and put the choice to the user: create a brand for it\n (`create_brand`) or attach it to one they already have\n (`set_product_brand`). Do not choose for them. For a photos product\n nothing was detected, so `create_brand` needs the name from the\n user, and the voice, target market and keywords they can give you.\n No direction is drafted until this is settled.\n - Otherwise the import also drafts a video direction — a six-section\n creative plan (Hook / Content Focus / Format / Suggesting Visual\n Aesthetic / Execution Guidelines /\n Strict Guidelines & Restrictions) — so keep polling until\n `video_direction.drafting` is false.\n3. Show the drafted direction to the user. Edit it with\n `update_video_direction`, or roll a completely different angle with\n `redraft_video_direction`. The direction is optional: an empty one is\n valid and generation still works. The render settings — ratio,\n resolution, duration_seconds, enable_audio — are parameters of\n `update_video_direction` too, and are never read from the direction\n text. So are the photos: `images` in `get_product` lists every one\n with `usable` and `selected`, and `selected_image_ids` chooses which\n the render uses. `format` and `format_options` name the angle a\n redraft can pin. `update_product` corrects the facts a draft is\n written from (name, description, price, the posted link, the photos)\n and `update_brand` the identity (voice, market, keywords); both feed\n the next draft, so redraft after.\n4. `generate_video`, passing `expected_credit_cost` — this SPENDS THE\n USER'S CREDITS. Get the user's explicit go-ahead first, and ask for\n it in ONE message that carries everything they are agreeing to: what\n the video does, its settings (length, ratio, resolution, audio), the\n credit cost `get_product` reports, and — when\n `video_direction.watermark_expected` is there — that the file will\n carry the InstantClips watermark. A go-ahead is only informed if the\n price and the watermark were in front of them when they gave it. The\n launch is refused, uncharged, if the cost no longer matches.\n5. The render is queued, not finished. Answer with what the user needs:\n it takes 5 to 15 minutes depending on queue depth,\n length and resolution; `workbench_url` shows the video they just\n directed; and `email_on_completion` is mailed the moment it is done,\n so they can go and work on something else. Offer to keep checking\n only if this client can actually keep polling — nothing here will\n wake you up, and the email arrives whether or not your session\n lasts. Then poll `get_video` until status is \"done\" and give them\n `output_url` (the finished MP4) and `share_url` (a public page).\n Inside that window the wait is expected: describe it as normal\n rather than slow. Past it, it is not, and `next_step` switches to\n what is actually known — still marked rendering, no revised finish\n time — and then to support. It has the clock; follow it rather than\n any blanket rule about how to describe the wait.\n\n On a free account the MP4 carries the InstantClips watermark, which\n is why the draft says `watermark_expected` before the render and the\n finished video says `watermarked` after it. Both appear only when\n true; buying credits removes the watermark from every video on the\n account. When they are absent there is no watermark: say nothing\n about watermarks at all.\n\nEvery get_product response carries `next_step`: what to do now and the\ntool to do it with. Read it before choosing a tool — it covers the\nstates this list does not: a failed import, a failed or stalled\ndirection draft, photos the video model will not take, a failed\nrender, a balance short of the cost.\n\nA product whose video has been generated is not finished with, but a\ngenerated video cannot be changed: its direction locks the moment\ngeneration starts, and re-importing the same URL returns the same\nproduct rather than a fresh one. Editing or redrafting such a product\nopens its next video's draft, seeded from the last one (the response\nsays `opened_new_video: true`), and `generate_video` with no draft\nrenders another take of the last plan as a new video. Continue from\nstep 3 either way.\n\n",
|
|
14
14
|
"tools": [
|
|
15
15
|
{
|
|
16
16
|
"name": "list_brands",
|
|
@@ -472,6 +472,9 @@
|
|
|
472
472
|
"affordable": {
|
|
473
473
|
"type": "boolean"
|
|
474
474
|
},
|
|
475
|
+
"watermark_expected": {
|
|
476
|
+
"type": "boolean"
|
|
477
|
+
},
|
|
475
478
|
"editable": {
|
|
476
479
|
"type": "boolean"
|
|
477
480
|
}
|
|
@@ -845,6 +848,9 @@
|
|
|
845
848
|
"affordable": {
|
|
846
849
|
"type": "boolean"
|
|
847
850
|
},
|
|
851
|
+
"watermark_expected": {
|
|
852
|
+
"type": "boolean"
|
|
853
|
+
},
|
|
848
854
|
"editable": {
|
|
849
855
|
"type": "boolean"
|
|
850
856
|
}
|
|
@@ -1171,6 +1177,9 @@
|
|
|
1171
1177
|
"affordable": {
|
|
1172
1178
|
"type": "boolean"
|
|
1173
1179
|
},
|
|
1180
|
+
"watermark_expected": {
|
|
1181
|
+
"type": "boolean"
|
|
1182
|
+
},
|
|
1174
1183
|
"editable": {
|
|
1175
1184
|
"type": "boolean"
|
|
1176
1185
|
}
|
|
@@ -1515,6 +1524,9 @@
|
|
|
1515
1524
|
"affordable": {
|
|
1516
1525
|
"type": "boolean"
|
|
1517
1526
|
},
|
|
1527
|
+
"watermark_expected": {
|
|
1528
|
+
"type": "boolean"
|
|
1529
|
+
},
|
|
1518
1530
|
"editable": {
|
|
1519
1531
|
"type": "boolean"
|
|
1520
1532
|
}
|
|
@@ -1874,6 +1886,9 @@
|
|
|
1874
1886
|
"affordable": {
|
|
1875
1887
|
"type": "boolean"
|
|
1876
1888
|
},
|
|
1889
|
+
"watermark_expected": {
|
|
1890
|
+
"type": "boolean"
|
|
1891
|
+
},
|
|
1877
1892
|
"editable": {
|
|
1878
1893
|
"type": "boolean"
|
|
1879
1894
|
}
|
|
@@ -2373,6 +2388,9 @@
|
|
|
2373
2388
|
"affordable": {
|
|
2374
2389
|
"type": "boolean"
|
|
2375
2390
|
},
|
|
2391
|
+
"watermark_expected": {
|
|
2392
|
+
"type": "boolean"
|
|
2393
|
+
},
|
|
2376
2394
|
"editable": {
|
|
2377
2395
|
"type": "boolean"
|
|
2378
2396
|
}
|
|
@@ -2453,7 +2471,7 @@
|
|
|
2453
2471
|
{
|
|
2454
2472
|
"name": "update_video_direction",
|
|
2455
2473
|
"title": "Edit the video direction and render settings",
|
|
2456
|
-
"description": "Edit the creative direction and render settings for a product's next\nvideo. Only the fields you pass are changed; everything else keeps its\ncurrent value. Supplied text replaces the saved text; an empty creative\ndirection clears it. A target_market change updates the shared brand\nand affects future videos for its other products.\n\n`creative_direction` is the plan the render is built from. It is free\ntext, but the drafts follow a six-section shape that works well and is\nworth preserving when editing:\n\n Hook: ...\n Content Focus: ...\n Format: ...\n Suggesting Visual Aesthetic: ...\n Execution Guidelines: ...\n Strict Guidelines & Restrictions: ...\n\nDo not invent a direction from nothing when one has not been drafted\nyet — call `redraft_video_direction` and edit what comes back. Leaving\nit empty is also valid: generation works without a direction.\n\n`creator_note` is different and smaller: the user's own short note to\nthe director (\"mention it is machine washable\", \"for Father's Day\"). It\nis carried through to the render verbatim, so put the user's words in\nit, not your paraphrase.\n\n`selected_image_ids` chooses which of the product's photos the render\nuses, in order, by the image_id `get_product` lists under `images`\n(usable ones only, at most 9); an empty list restores the\ndefault, the first usable ones. The poll's `selected_image_ids` shows\nwhat would go out now.\n\n`duration_seconds` is the render length — 15, 20, 25 or 30 — and a\nsetting, not part of the direction: writing \"20 seconds\" into the text\nchanges nothing. Longer costs more; the response's `credit_cost` is\nthe new price, and the user must hear it before `generate_video
|
|
2474
|
+
"description": "Edit the creative direction and render settings for a product's next\nvideo. Only the fields you pass are changed; everything else keeps its\ncurrent value. Supplied text replaces the saved text; an empty creative\ndirection clears it. A target_market change updates the shared brand\nand affects future videos for its other products.\n\n`creative_direction` is the plan the render is built from. It is free\ntext, but the drafts follow a six-section shape that works well and is\nworth preserving when editing:\n\n Hook: ...\n Content Focus: ...\n Format: ...\n Suggesting Visual Aesthetic: ...\n Execution Guidelines: ...\n Strict Guidelines & Restrictions: ...\n\nDo not invent a direction from nothing when one has not been drafted\nyet — call `redraft_video_direction` and edit what comes back. Leaving\nit empty is also valid: generation works without a direction.\n\n`creator_note` is different and smaller: the user's own short note to\nthe director (\"mention it is machine washable\", \"for Father's Day\"). It\nis carried through to the render verbatim, so put the user's words in\nit, not your paraphrase.\n\n`selected_image_ids` chooses which of the product's photos the render\nuses, in order, by the image_id `get_product` lists under `images`\n(usable ones only, at most 9); an empty list restores the\ndefault, the first usable ones. The poll's `selected_image_ids` shows\nwhat would go out now.\n\n`duration_seconds` is the render length — 15, 20, 25 or 30 — and a\nsetting, not part of the direction: writing \"20 seconds\" into the text\nchanges nothing. Longer costs more; the response's `credit_cost` is\nthe new price, and the user must hear it before `generate_video` —\n`next_step` states it for you, read after this edit, so quote it in\nthe same message you ask for their go-ahead in.\nAbove the plan's ceiling it clamps like resolution (free: 20s).\n\nA target_market change after a direction exists gets a `next_step` in\nthe response: the direction's wording sets the spoken language, so it\nneeds a redraft (or an edit) to match the new market.\n\nA setting above the account's ceiling is saved as the ceiling rather\nthan refused, and the response says so in `adjustments` — each one\nnaming the field, what was asked for, what was saved and why. \"Make it\n30 seconds in 1080P\" on a free account saves as 20 seconds at 480P.\nWhen `adjustments` is there, tell the user what changed before you ask\nthem to approve the video: otherwise their \"yes\" covers settings they\nnever chose.\n\nA launched video cannot change: if the product's last video has\nalready launched, this opens the next video's draft (seeded from that\nvideo) and edits that; the response says `opened_new_video: true` and\ncarries the new video_request_id.\n\nThis does not spend credits.\n",
|
|
2457
2475
|
"inputSchema": {
|
|
2458
2476
|
"type": "object",
|
|
2459
2477
|
"properties": {
|
|
@@ -2588,6 +2606,9 @@
|
|
|
2588
2606
|
"affordable": {
|
|
2589
2607
|
"type": "boolean"
|
|
2590
2608
|
},
|
|
2609
|
+
"watermark_expected": {
|
|
2610
|
+
"type": "boolean"
|
|
2611
|
+
},
|
|
2591
2612
|
"editable": {
|
|
2592
2613
|
"type": "boolean"
|
|
2593
2614
|
},
|
|
@@ -2597,6 +2618,32 @@
|
|
|
2597
2618
|
"opened_new_video": {
|
|
2598
2619
|
"type": "boolean"
|
|
2599
2620
|
},
|
|
2621
|
+
"adjustments": {
|
|
2622
|
+
"type": "array",
|
|
2623
|
+
"items": {
|
|
2624
|
+
"type": "object",
|
|
2625
|
+
"properties": {
|
|
2626
|
+
"field": {
|
|
2627
|
+
"type": "string"
|
|
2628
|
+
},
|
|
2629
|
+
"requested": {
|
|
2630
|
+
"type": "string"
|
|
2631
|
+
},
|
|
2632
|
+
"saved": {
|
|
2633
|
+
"type": "string"
|
|
2634
|
+
},
|
|
2635
|
+
"reason": {
|
|
2636
|
+
"type": "string"
|
|
2637
|
+
}
|
|
2638
|
+
},
|
|
2639
|
+
"required": [
|
|
2640
|
+
"field",
|
|
2641
|
+
"requested",
|
|
2642
|
+
"saved",
|
|
2643
|
+
"reason"
|
|
2644
|
+
]
|
|
2645
|
+
}
|
|
2646
|
+
},
|
|
2600
2647
|
"next_step": {
|
|
2601
2648
|
"type": "string"
|
|
2602
2649
|
}
|
|
@@ -2610,7 +2657,8 @@
|
|
|
2610
2657
|
"credit_cost",
|
|
2611
2658
|
"editable",
|
|
2612
2659
|
"product_id",
|
|
2613
|
-
"opened_new_video"
|
|
2660
|
+
"opened_new_video",
|
|
2661
|
+
"next_step"
|
|
2614
2662
|
],
|
|
2615
2663
|
"$schema": "https://json-schema.org/draft/2020-12/schema"
|
|
2616
2664
|
},
|
|
@@ -2624,7 +2672,7 @@
|
|
|
2624
2672
|
{
|
|
2625
2673
|
"name": "redraft_video_direction",
|
|
2626
2674
|
"title": "Draft a new creative direction",
|
|
2627
|
-
"description": "Ask InstantClips to draft a fresh creative direction for this product's\nnext video, using the product's facts, its images and the brand's\nidentity. Use it to get a first draft, or to try a different angle when\nthe user does not like the current one.\n\nThis OVERWRITES the current direction — including any edits. Confirm with\nthe user before re-rolling a direction they have already worked on.\n\nIf the product's last video has already launched, this opens the next\nvideo's draft (seeded from that video) and drafts into it; the response\nsays `opened_new_video: true` and carries the new video_request_id.\n\nThe draft runs in the background: this returns with `drafting` true, and\nyou poll `get_product` until `video_direction.drafting` is false (a few\nseconds). Rolling a fresh angle is the point, so calling it twice gives\ntwo different drafts, not the same one.\n\nDirection drafting sends product facts, photos and brand context to\nan external AI service when the product is ready and its brand is settled.\n\nThis does not spend credits.\n",
|
|
2675
|
+
"description": "Ask InstantClips to draft a fresh creative direction for this product's\nnext video, using the product's facts, its images and the brand's\nidentity. Use it to get a first draft, or to try a different angle when\nthe user does not like the current one.\n\nThis OVERWRITES the current direction — including any edits. Confirm with\nthe user before re-rolling a direction they have already worked on.\n\nIf the product's last video has already launched, this opens the next\nvideo's draft (seeded from that video) and drafts into it; the response\nsays `opened_new_video: true` and carries the new video_request_id.\n\nThe draft runs in the background: this returns with `drafting` true, and\nyou poll `get_product` until `video_direction.drafting` is false (a few\nseconds). Rolling a fresh angle is the point, so calling it twice gives\ntwo different drafts, not the same one.\n\n`next_step` also states what rendering this will cost. The user has to\nhear that number before `generate_video`, so say it in the same\nmessage you show them the direction in.\n\nDirection drafting sends product facts, photos and brand context to\nan external AI service when the product is ready and its brand is settled.\n\nThis does not spend credits.\n",
|
|
2628
2676
|
"inputSchema": {
|
|
2629
2677
|
"type": "object",
|
|
2630
2678
|
"properties": {
|
|
@@ -2711,6 +2759,9 @@
|
|
|
2711
2759
|
"affordable": {
|
|
2712
2760
|
"type": "boolean"
|
|
2713
2761
|
},
|
|
2762
|
+
"watermark_expected": {
|
|
2763
|
+
"type": "boolean"
|
|
2764
|
+
},
|
|
2714
2765
|
"editable": {
|
|
2715
2766
|
"type": "boolean"
|
|
2716
2767
|
},
|
|
@@ -2748,7 +2799,7 @@
|
|
|
2748
2799
|
{
|
|
2749
2800
|
"name": "generate_video",
|
|
2750
2801
|
"title": "Generate the video (spends credits)",
|
|
2751
|
-
"description": "Render the video. THIS SPENDS THE USER'S CREDITS.\nProduct photos, brand identity and direction are sent to external\ngeneration services. Results have public share pages; generation can\ntrigger account emails, including a first-generation welcome email.\n\nAsk the user before calling this, every time. Tell them the cost first —\n`get_product` reports it as `video_direction.credit_cost`, and the\nuser's balance as `credits_remaining` — and pass that cost as\n`expected_credit_cost`: if it no longer matches (settings changed, a\nresolution was clamped), nothing is charged and the response says the\ncurrent cost. Credits are charged at launch, not on completion; a\nfailed render is refunded automatically.\n\nShow the user the creative direction and let them approve or edit it\nbefore you call this. Do not call it to \"see what happens\", to retry a\nrender that is still in progress, or as part of a batch you decided on\nyour own.\n\nReturns as soon as the render is queued.
|
|
2802
|
+
"description": "Render the video. THIS SPENDS THE USER'S CREDITS.\nProduct photos, brand identity and direction are sent to external\ngeneration services. Results have public share pages; generation can\ntrigger account emails, including a first-generation welcome email.\n\nAsk the user before calling this, every time. Tell them the cost first —\n`get_product` reports it as `video_direction.credit_cost`, and the\nuser's balance as `credits_remaining` — and pass that cost as\n`expected_credit_cost`: if it no longer matches (settings changed, a\nresolution was clamped), nothing is charged and the response says the\ncurrent cost. Credits are charged at launch, not on completion; a\nfailed render is refunded automatically.\n\nShow the user the creative direction and let them approve or edit it\nbefore you call this. Do not call it to \"see what happens\", to retry a\nrender that is still in progress, or as part of a batch you decided on\nyour own.\n\nReturns as soon as the render is queued — the video is not ready yet.\nDo not answer with a bare \"generating\" and start polling silently.\nTell the user, in one reply: it is in the queue and takes\n5 to 15 minutes depending on queue depth, length and\nresolution; `workbench_url` is where they can see what they directed;\nand `email_on_completion` (present unless the account takes no mail)\ngets a message the moment it is done, so they can go and work on\nsomething else.\n\nSay you will keep checking only if you actually can — if this client\nkeeps you running long enough to poll, and your session survives the\nuser walking away. This server is request/response and holds no\nmonitoring of its own: nothing here will wake you up, and if your\nsession ends mid-render the video still finishes and the email still\ngoes. When you cannot promise it, say so, and leave them with the link\nand the email as the delivery. They are the reliable path; you are\nthe convenience.\n\nWhile you can, poll `get_video` with the returned video_request_id\nevery 30-60\nseconds until its status is \"done\", and give them `output_url` and\n`share_url`.\n\nA wait inside that window is the normal shape of this, not a fault:\ndescribe it as expected, and do not apologise for it. Beyond the\nwindow it is no longer expected, and `get_video`'s `next_step` says so\n— it tracks how long this render has actually been going, switching to\nwhat is known (still marked rendering, no revised finish time) and\nthen to support. Read it each poll rather than re-running this\nparagraph: it is the one with the clock.\n\nIf the account cannot afford it, nothing is charged and the response\nsays so — tell the user to top up at the credits page rather than\nretrying.\n\nIf the product's last video is finished (done or failed) and there is\nno draft, this renders another take of the same plan as a new video,\nat the same cost; the response says `opened_new_video: true`. While a\nrender is in flight it refuses.\n",
|
|
2752
2803
|
"inputSchema": {
|
|
2753
2804
|
"type": "object",
|
|
2754
2805
|
"properties": {
|
|
@@ -2821,6 +2872,27 @@
|
|
|
2821
2872
|
]
|
|
2822
2873
|
}
|
|
2823
2874
|
},
|
|
2875
|
+
"workbench_url": {
|
|
2876
|
+
"type": "string"
|
|
2877
|
+
},
|
|
2878
|
+
"typical_wait_minutes": {
|
|
2879
|
+
"type": "object",
|
|
2880
|
+
"properties": {
|
|
2881
|
+
"min": {
|
|
2882
|
+
"type": "integer"
|
|
2883
|
+
},
|
|
2884
|
+
"max": {
|
|
2885
|
+
"type": "integer"
|
|
2886
|
+
}
|
|
2887
|
+
},
|
|
2888
|
+
"required": [
|
|
2889
|
+
"min",
|
|
2890
|
+
"max"
|
|
2891
|
+
]
|
|
2892
|
+
},
|
|
2893
|
+
"email_on_completion": {
|
|
2894
|
+
"type": "string"
|
|
2895
|
+
},
|
|
2824
2896
|
"next_step": {
|
|
2825
2897
|
"type": "string"
|
|
2826
2898
|
},
|
|
@@ -2835,6 +2907,8 @@
|
|
|
2835
2907
|
"skipped_insufficient_credit",
|
|
2836
2908
|
"credits_charged",
|
|
2837
2909
|
"videos",
|
|
2910
|
+
"workbench_url",
|
|
2911
|
+
"typical_wait_minutes",
|
|
2838
2912
|
"next_step",
|
|
2839
2913
|
"credits_remaining"
|
|
2840
2914
|
],
|
|
@@ -2850,7 +2924,7 @@
|
|
|
2850
2924
|
{
|
|
2851
2925
|
"name": "get_video",
|
|
2852
2926
|
"title": "Check a video's render status",
|
|
2853
|
-
"description": "Check one video's render.\n\n`status` values:\n \"generating\" — still rendering
|
|
2927
|
+
"description": "Check one video's render.\n\n`status` values:\n \"generating\" — still rendering; poll every\n 30-60\n seconds.\n \"done\" — finished; `output_url` is the MP4 and `share_url` is a\n public page to send someone. `watermarked` appears, set to\n true, only when that MP4 carries the InstantClips\n watermark (free accounts) — buying credits switches every\n video on the account to the clean file, nothing is\n re-rendered. When the field is absent there is no\n watermark and nothing to say about one: do not raise the\n subject with a paying customer.\n \"failed\" — `failed_reason` says why and what to change. The credits\n were refunded automatically. To try again, make the change\n with `update_video_direction` or `redraft_video_direction`\n (either opens the next video's draft), then `generate_video`.\n \"insufficient_credit\" — never launched; nothing was charged.\n \"pending\" — not launched yet; call `generate_video`.\n\n`next_step` says which of those applies right now.\n\nA render takes 5 to 15 minutes, depending on queue depth,\nlength and resolution. Inside that window the wait is the normal shape\nof this and not a fault, so describe it as expected rather than slow.\nPast it, it is not: `next_step` switches to what is actually known —\nbeyond the usual window, still marked rendering, no revised finish\ntime — and at 45 minutes it says to\nstop polling and hand the user to support. Follow `next_step`; it is\nthe one that knows how long this render has been going.\n\nThey do not have to wait with you either — the workbench link shows\nthe same thing, and `generate_video`'s `email_on_completion` (when the\naccount takes mail) is written to the moment the video lands.\n",
|
|
2854
2928
|
"inputSchema": {
|
|
2855
2929
|
"type": "object",
|
|
2856
2930
|
"properties": {
|