@hubfluencer/mcp 0.8.2 → 0.9.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.
package/README.md CHANGED
@@ -84,8 +84,8 @@ instead draw a **free daily quota of 20 AI assists** (top up with `unlock_ai_ass
84
84
  | `generate_short` | Render an existing short — re-rolls the footage + music (fresh AI generation). If headline/subheadline/beats are all blank the server auto-writes the copy first (`skip_auto_text:true` for a deliberately bare clip). Safe to re-call (in-flight = reported, no double charge; a failed short can re-generate). | **15** |
85
85
  | `rerender_short` | **FREE re-render** — applies the short's current text/style/CTA/end-card state over the already-paid footage + music. Use after `update_short` for copy/style/CTA tweaks; footage or music changes need `generate_short` instead. Needs one completed generation first (422 `short_not_ready` otherwise); changed footage/music inputs return 422 `short_paid_regeneration_required`. A failed free re-render leaves the delivered video intact — retry `rerender_short`, it stays free. | **0** |
86
86
  | `generate_short_text` | AI-draft editable headline / subheadline / caption beats for a short. | 1 assist |
87
- | `create_editor_ad` | Create an editor project **and** run autopilot end-to-end. Style it with `creative_format` + `visual_language` + `theme`. Cast modes need prerequisite assets, so configure them through `create_editor_draft` instead. | credits (est. first) |
88
- | `start_autopilot` | Run autopilot on an **existing** editor draft (resume a `make_video` `dry_run`, or after a top-up). | credits |
87
+ | `create_editor_ad` | Create an editor project, attach optional local product/logo/closing assets, and return the live autopilot quote. Omit `max_credits` to stop free; provide an approved cap to launch. For a mascot/hero product that must remain identical with no humans, pass `cast_mode:"product_only"` plus `product_image_path`. | **0** until capped launch |
88
+ | `start_autopilot` | Quote autopilot on an **existing** editor draft when called with only `slug`; launch only with an explicit `max_credits` that covers the estimate and an adequate balance. | **0** quote; credits on capped launch |
89
89
  | `create_slider` | Create an image-carousel draft: one prompt → N still slides + a ready-to-post caption + hashtags. `mode` `creative` (story) or `ad_driven` (facts). | **0** |
90
90
  | `generate_slider` | Render a carousel (copy → AI backgrounds → composite). Poll `get_slider` until `completed`. | **1 / slide** (3–10) |
91
91
  | `get_slider` | Read a carousel's status and, when completed, the per-slide image URLs + caption + hashtags. | **0** |
@@ -118,17 +118,22 @@ instead draw a **free daily quota of 20 AI assists** (top up with `unlock_ai_ass
118
118
 
119
119
  Reads are confined to `HUBFLUENCER_INPUT_DIR`. All $0.
120
120
 
121
+ Size units are exact: videos are capped at **500 MB decimal (500,000,000 bytes)**; product
122
+ images at **8 MiB (8,388,608 bytes)**; closing/short/catalog images at **20 MiB
123
+ (20,971,520 bytes)**; logos at **1 MiB (1,048,576 bytes)**. Editor video multipart starts at
124
+ **50 MiB (52,428,800 bytes)**.
125
+
121
126
  | Tool | What it does |
122
127
  |---|---|
123
128
  | `upload_video` | Upload a local clip into an editor project (presign → PUT, resumable multipart for large files → confirm → poll to ready) and, by default, add it to the timeline. An uploaded clip keeps its native duration. |
124
129
  | `add_segment_from_upload` | Append a **ready** upload to the timeline as a new scene. |
125
- | `use_asset_for_segment` | Set a specific scene's video from a ready upload **or** a completed scene in the same project (pass exactly one). |
126
- | `set_product` | Upload a local product image and attach it as the project product. |
130
+ | `use_asset_for_segment` | Set a specific scene's video from a ready upload **or** a completed scene in the same project (pass exactly one). Returns downstream continuity impact plus narration/voice/music staleness that must be resolved before render. |
131
+ | `set_product` | Upload an editor product image (JPEG/PNG, ≤8 MiB) and attach it as the project product. |
127
132
  | `set_product_placement` | Set where the product appears on pending AI scenes: `throughout` or `end`. |
128
- | `set_closing_image` | Set the ~2s end-card image (upload a file, or reuse the product image with `from_product:true`). |
129
- | `set_logo` | Upload a brand logo overlay (editor only; optional treatment/position/duration). |
130
- | `set_short_product` | Attach a product image to a **short**. |
131
- | `set_short_poster` | Set a short's end-card poster (extends the render 12s → 14s). Pass `poster_includes_lockup:true` if the poster already carries brand name/CTA/badges — suppresses the overlaid claim/CTA so they don't collide. |
133
+ | `set_closing_image` | Set the ~2s end-card image (JPEG/PNG, ≤20 MiB; upload a file, or reuse the product image with `from_product:true`). |
134
+ | `set_logo` | Upload a brand logo overlay (JPEG/PNG, ≤1 MiB; editor only; optional treatment/position/duration). |
135
+ | `set_short_product` | Attach a product image (JPEG/PNG, ≤20 MiB) to a **short**. |
136
+ | `set_short_poster` | Set a short's end-card poster (JPEG/PNG, ≤20 MiB; extends the render 12s → 14s). Pass `poster_includes_lockup:true` if the poster already carries brand name/CTA/badges — suppresses the overlaid claim/CTA so they don't collide. |
132
137
 
133
138
  ### Status & delivery
134
139
 
@@ -140,6 +145,12 @@ Reads are confined to `HUBFLUENCER_INPUT_DIR`. All $0.
140
145
  | `get_credits` / `list_voices` / `list_projects` | Credit balance; narration voices; recent projects (`include_completed:true` to recover a finished short's slug). |
141
146
  | `get_ai_assists` / `unlock_ai_assists` | The free daily assist quota / spend 1 credit for +10. |
142
147
 
148
+ For editor projects, `video_url` may remain the last delivered MP4 after the timeline changes.
149
+ It is current only when `ready:true` and `stale:false`. `stale:true` means the delivered render
150
+ does not match the live timeline; regenerate the reported stale scenes/audio and render again.
151
+ An absent/`null` server `is_stale` is **unknown** (for example a legacy render), not proof that
152
+ the render is current. Failure stages take precedence over active stages and are terminal.
153
+
143
154
  ### Campaign engine — onboard a product, plan, and draft (the delegation surface)
144
155
 
145
156
  Everything here is **$0** (draft creates + planning against the free assist quota). Generation
@@ -211,7 +222,7 @@ Subscription-gated (a 402 `subscription_required` means the account needs an act
211
222
  |---|---|
212
223
  | `list_assets` | Your reusable asset catalog (images + videos) with presigned URLs + your storage quota; page with `limit`/`offset`. |
213
224
  | `get_asset_quota` | Your catalog storage quota (limit / used / pending / reserved / remaining bytes). |
214
- | `upload_asset` | Upload a local image (≤20 MiB) or video (≤500 MB; `duration_seconds` required, ≤60) into the catalog so it can be reused across projects. Reads confined to `HUBFLUENCER_INPUT_DIR`. Rate limit 30/min. |
225
+ | `upload_asset` | Upload a local image (≤20 MiB = 20,971,520 bytes) or video (≤500 MB decimal = 500,000,000 bytes; `duration_seconds` required, ≤60) into the catalog so it can be reused across projects. Reads confined to `HUBFLUENCER_INPUT_DIR`. Rate limit 30/min. |
215
226
 
216
227
  ### Credit prices (reference)
217
228
 
@@ -245,7 +256,7 @@ If it returns `terminal:false`, the render is still going — call `wait_for_com
245
256
 
246
257
  **Granular (control/recovery):**
247
258
  `create_short` → optional `generate_hook_variations` (test hook angles free) / `generate_short_text` → `generate_short` → `wait_for_completion {kind:"short"}` → `download_result`, or
248
- `create_editor_ad` → `wait_for_completion {kind:"editor"}` → `download_result`.
259
+ `create_editor_ad` (free configure + quote) obtain spend approval → `start_autopilot {slug, max_credits}` → `wait_for_completion {kind:"editor"}` → `download_result`.
249
260
 
250
261
  **Iterate a short for free (never re-roll):** the first `generate_short` (15 credits) buys the footage +
251
262
  music; after that, every text/style/CTA/end-card tweak re-renders over them for **0 credits** —
@@ -253,8 +264,8 @@ music; after that, every text/style/CTA/end-card tweak re-renders over them for
253
264
  footage/music-affecting edits (`product_prompt`, product image, `creative_format`, `visual_language`,
254
265
  `theme`, `music_vibe`, `music_instruments`, `language`) need another `generate_short`. Edits that
255
266
  add/remove the end card (poster, `end_card`) can shift the video between 12s and 14s; the pinned music
256
- bed is faded to fit rather than regenerated for perfectly synced music after such a change, use
257
- `generate_short`.
267
+ bed loops through the added CTA window and fades at export end rather than leaving a silent card.
268
+ For a newly composed bed timed specifically to the longer cut, use `generate_short`.
258
269
 
259
270
  **Image carousel:**
260
271
  `create_slider({ prompt: "5 tips for…", mode: "ad_driven", slide_count: 5 })` → `generate_slider` →