@starreel/mcp 0.1.163 → 0.1.164

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/SKILL.md CHANGED
@@ -136,6 +136,14 @@ Right after `create_drama`, before any paid step:
136
136
  package's `effect`, live `estimate` (typical and upper bound), `warnings`,
137
137
  `substitutions` and the `not_included` list. `estimate: null` means live
138
138
  prices are unreachable — say so, don't invent numbers.
139
+ For a professional customer picking their own models, call it again with
140
+ `custom` (image model + video engine + resolution): the response gains a
141
+ `custom` preview (availability + live estimate) to relay before confirming.
142
+ `overrun_history` tells how often past dramas needed the overrun allowance
143
+ (from the billing ledger). Quote its percentages only when
144
+ `sufficient: true`, as history rather than a promise; when it is `false`,
145
+ give no percentage at all — just explain the allowance covers QC re-takes
146
+ and re-runs after vendor rejections, and is not charged if unused.
139
147
  3. Let the customer pick an execution mode (`pro` — they control every step;
140
148
  `auto` — one-click; `custom` — they pick which stages to delegate), a budget
141
149
  (`budget_points`, required for auto/custom) and an automatic overrun cap
@@ -143,7 +151,9 @@ Right after `create_drama`, before any paid step:
143
151
  4. Summarize everything; only after the customer explicitly agrees call
144
152
  `confirm_production_plan` with `customer_confirmed: true`, passing the
145
153
  chosen package's `combo` back as `expected_combo` and its
146
- `estimate.total.upper` as `expected_total_upper`. Never confirm on their
154
+ `estimate.total.upper` as `expected_total_upper` (for a custom combo, pass
155
+ `custom.estimate.total.upper`; without it you get
156
+ `409 CUSTOM_ESTIMATE_UNCONFIRMED`). Never confirm on their
147
157
  behalf. `409 PACKAGE_CHANGED` means the package changed after the menu was
148
158
  shown (fallback model or a price rise above 5%) — present the new combo and
149
159
  estimate from the response and ask again.
@@ -163,8 +163,8 @@
163
163
  "classify_cost_reason": "按明确证据登记某一账本行原因,保留操作者和说明。免费,不改变任何扣费或退款;不能仅凭未采用、重试或报错就判为供应商失败。",
164
164
  "get_cost_estimate": "查一部剧的整体成本(点数):已花费 + 还没做的部分的待花费区间 + 分类明细。免费。already_spent_points 与 get_budget_status 的 spent、网页「本剧已花费」同源(平台扣费账本净额,已减退款),是同一个数。spent_source=usage_mirror 表示账本暂不可达、回退到本地镜像(偏少,不含文本/配乐),向客户报数时须注明,稍后重试即恢复;spent_note 是口径说明。breakdown 各行 done_points 之和 = already_spent_points:账本分不出文本用在改写/拆镜/补全/提取哪一步,文本已花费合计只在 kind=text_spent 一行(text / text_rewrite 行的 done_points 恒为 0,别报成「文本没花钱」;回退时没有 text_spent 行);配乐、声音克隆等没有单列预估的类别在 other_spent(note 列出构成)。total = 已花费 + 待花费。★同样不含账号级语音(音色库克隆/设计/试听),核账用 get_drama_bill。",
165
165
  "get_budget_status": "查一部剧的预算状态(预算/已花费/剩余)。免费。spent 与网页「本剧已花费」同源(平台扣费账本净额,已减退款),by_kind 为按类分项(ai_image/ai_video/ai_text/ai_music/tts_local…)。spent_source=usage_mirror 表示账本暂不可达、回退到本地镜像(偏少,不含文本/配乐),向客户报数时须注明。★不含账号级语音扣费:音色库克隆、音色设计、音色试听不属于任何一部剧,只记在账号账单里——客户问「一共花了多少」时要说明这部分另计,不要把 spent 当成全部费用。",
166
- "get_production_menu": "★开场第二步(免费·只读·不需要剧号):按客户的基本视频参数,返回**当前可用**的三档模型套餐(省钱/标准/高品质)。每档给:图片模型+视频引擎+分辨率、效果说明(effect)、实时预估(estimate:每集与全剧的 typical 通常花费与 upper 上界,breakdown 分项)、warnings(所选模型近期繁忙/失败偏多)、substitutions(本档首选模型暂不可用、退到后备组合的原因)。某档 available=false 表示该档模型当前都不可用(unavailable_reason 说明),别推荐它。estimate=null 表示价格服务暂时取不到实时单价——如实告诉客户「暂时估不出」,别自己编数字。not_included 列出不在预估里的花费(文本步、配音配乐、质检重出),一并讲给客户;质检重出这部分正是「自动追加」兜底的。availability 是全部模型对该题材的可用性(专业客户自选模型时用,unavailable 的不能选)。★题材 content_class 决定可用性:同一引擎可能动漫可用、写实真人暂不可用——按剧情实际画面选,别为了用某个模型改题材。",
167
- "confirm_production_plan": "★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)。写入图片模型/视频引擎/分辨率/预算,并记录题材、执行模式、自动追加上限与确认快照。调用前必须把汇总完整讲给客户:所选套餐与效果、全剧预估(通常值与上界)、执行模式、预算、追加比例,以及「追加只在预算用完后才动用、到硬上限会停下来问」——客户点头才传 customer_confirmed:true。★确认后平台在每次收费派发前复核:①本剧模型对本剧题材仍可用,否则 409 MODEL_UNAVAILABLE;②报价上界+已花 ≤ 预算×(1+追加%),否则 402 BUDGET_WOULD_EXCEED(都未扣费)。被拦就停下问客户,别自己换模型、别自己调预算。★执行模式本期只记录:各层审查(review_*)与 agent 质检照旧,error 照旧要客户知情才能 acknowledge_review。★选套餐要带 expected_combo(该档 combo 原样)与 expected_total_upper:确认的必须是客户看到的那组模型与预估。409 PACKAGE_CHANGED = 菜单返回后该档换了组合或预估明显上涨,返回体里有新的组合与预估,重新讲给客户、同意后带新值再确认;409 PACKAGE_UNAVAILABLE / MODEL_UNAVAILABLE = 确认这一刻该模型不可用了,重新 get_production_menu 让客户改选。403 PRODUCTION_PLAN_NOT_OPEN = 本剧未开放(灰度),照原流程逐步确认。",
166
+ "get_production_menu": "★开场第二步(免费·只读·不需要剧号):按客户的基本视频参数,返回**当前可用**的三档模型套餐(省钱/标准/高品质)。每档给:图片模型+视频引擎+分辨率、效果说明(effect)、实时预估(estimate:每集与全剧的 typical 通常花费与 upper 上界,breakdown 分项)、warnings(所选模型近期繁忙/失败偏多)、substitutions(本档首选模型暂不可用、退到后备组合的原因)。某档 available=false 表示该档模型当前都不可用(unavailable_reason 说明),别推荐它。estimate=null 表示价格服务暂时取不到实时单价——如实告诉客户「暂时估不出」,别自己编数字。not_included 列出不在预估里的花费(文本步、配音配乐、质检重出),一并讲给客户;质检重出这部分正是「自动追加」兜底的。availability 是全部模型对该题材的可用性(专业客户自选模型时用,unavailable 的不能选)。★专业客户自选模型:带 custom(图片模型+视频引擎+分辨率)再调一次,返回体多一个 custom(可用性+实时预估);把 custom.estimate 讲给客户,确认时把 custom.estimate.total.upper 作为 expected_total_upper 原样带回。★overrun_history = 历史上多少剧会用到自动追加(按扣费账本统计):sufficient=true 时可告诉客户「历史上约 used_overrun_pct% 的剧会用到追加,平均多 avg_excess_pct_when_used%,选 10/20/30% 追加能兜住 covered_pct_by_overrun 里的比例」,并说明这是历史统计不是承诺;sufficient=false(暂无足够数据)时**不许**给客户任何比例或自己估一个数,只说追加用于兜底质检重出、审核拒绝后的重出,用不到不扣。★题材 content_class 决定可用性:同一引擎可能动漫可用、写实真人暂不可用——按剧情实际画面选,别为了用某个模型改题材。",
167
+ "confirm_production_plan": "★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)。写入图片模型/视频引擎/分辨率/预算,并记录题材、执行模式、自动追加上限与确认快照。调用前必须把汇总完整讲给客户:所选套餐与效果、全剧预估(通常值与上界)、执行模式、预算、追加比例,以及「追加只在预算用完后才动用、到硬上限会停下来问」——客户点头才传 customer_confirmed:true。★确认后平台在每次收费派发前复核:①本剧模型对本剧题材仍可用,否则 409 MODEL_UNAVAILABLE;②报价上界+已花 ≤ 预算×(1+追加%),否则 402 BUDGET_WOULD_EXCEED(都未扣费)。被拦就停下问客户,别自己换模型、别自己调预算。★执行模式本期只记录:各层审查(review_*)与 agent 质检照旧,error 照旧要客户知情才能 acknowledge_review。★选套餐要带 expected_combo(该档 combo 原样)与 expected_total_upper:确认的必须是客户看到的那组模型与预估。★自选组合(custom)要先调 get_production_menu 带同一组 custom 拿到预估讲给客户,确认时带 expected_total_upper=custom.estimate.total.upper;没带或重算后涨幅超 5% ⇒ 409 CUSTOM_ESTIMATE_UNCONFIRMED(未写入),返回体里有最新预估,讲给客户同意后带新值再确认。409 PACKAGE_CHANGED = 菜单返回后该档换了组合或预估明显上涨,返回体里有新的组合与预估,重新讲给客户、同意后带新值再确认;409 PACKAGE_UNAVAILABLE / MODEL_UNAVAILABLE = 确认这一刻该模型不可用了,重新 get_production_menu 让客户改选。403 PRODUCTION_PLAN_NOT_OPEN = 本剧未开放(灰度),照原流程逐步确认。",
168
168
  "get_production_plan": "查本剧已确认的开场方案(免费)。返回方案快照、当前模型、models_unavailable_now(本剧模型此刻已不可用时非空——出图/出视频前要先问客户怎么办)、budget(含 hard_cap 硬上限、overrun_in_use 是否已在动用追加额度)。confirmed=false 表示还没确认过方案。★budget.overrun_in_use 变成 true 时主动告诉客户「预算已用完、正在动用追加额度,还剩 cap_remaining 点」。",
169
169
  "assign_voices": "★给本集所有角色分配音色(配音导演 agent 按性别/性格/年龄/角色定位+项目语言选)。voiceStyle 不是提取时自动填的——不分配,generate_tts 就没音色。文本步(LLM)后付。已用 set_character_voice 绑了客户自己授权音色的角色会被锁定、不会被改成别的音色。后台异步,轮询 get_pipeline_status:assign_voices=done 即完成,再 generate_tts。",
170
170
  "generate_tts": "给整集所有对白批量配音(TTS)。成片前的音频步——不配音成片会缺对白。前置:先 assign_voices 给角色分配音色。后台异步,按用量后付不欠费。\n★【完成后质检·免费】出完等它落库(get_storyboards 看 video_status / get_pipeline_status),再调 review_videos 审视频与配音层(缺视频 / 旧帧出的视频 / 片尾硬切 / 意外人声 / 配音缺失 / 音色未分配 / 原声声线过期),修完复审;再按 agent_qc 亲自逐镜看视频、听配音(动作到位、不变脸、台词念全、嗓音对),submit_qc_report 提交;compose_episode 要带它的 review_token。",
@@ -1895,6 +1895,9 @@ export function registerProduceTools(server, client) {
1895
1895
  'estimate=null 表示价格服务暂时取不到实时单价——如实告诉客户「暂时估不出」,别自己编数字。' +
1896
1896
  'not_included 列出不在预估里的花费(文本步、配音配乐、质检重出),一并讲给客户;质检重出这部分正是「自动追加」兜底的。' +
1897
1897
  'availability 是全部模型对该题材的可用性(专业客户自选模型时用,unavailable 的不能选)。' +
1898
+ '★专业客户自选模型:带 custom(图片模型+视频引擎+分辨率)再调一次,返回体多一个 custom(可用性+实时预估);把 custom.estimate 讲给客户,确认时把 custom.estimate.total.upper 作为 expected_total_upper 原样带回。' +
1899
+ '★overrun_history = 历史上多少剧会用到自动追加(按扣费账本统计):sufficient=true 时可告诉客户「历史上约 used_overrun_pct% 的剧会用到追加,平均多 avg_excess_pct_when_used%,选 10/20/30% 追加能兜住 covered_pct_by_overrun 里的比例」,并说明这是历史统计不是承诺;' +
1900
+ 'sufficient=false(暂无足够数据)时**不许**给客户任何比例或自己估一个数,只说追加用于兜底质检重出、审核拒绝后的重出,用不到不扣。' +
1898
1901
  '★题材 content_class 决定可用性:同一引擎可能动漫可用、写实真人暂不可用——按剧情实际画面选,别为了用某个模型改题材。', {
1899
1902
  content_class: z.enum(['realistic_human', 'stylized', 'product']).describe('题材:realistic_human 写实真人 / stylized 动漫·风格化 / product 产品·空镜'),
1900
1903
  episodes: z.number().int().min(1).max(200).describe('集数'),
@@ -1905,6 +1908,11 @@ export function registerProduceTools(server, client) {
1905
1908
  scenes: z.number().int().min(0).max(200).optional(),
1906
1909
  props: z.number().int().min(0).max(200).optional(),
1907
1910
  }).optional().describe('资产图粗估的数量假设(默认 6 角色/8 场景/6 道具),知道大概数量就传,预估更准'),
1911
+ custom: z.object({
1912
+ image_model: z.string(),
1913
+ video_engine: z.string(),
1914
+ video_resolution: z.enum(['480p', '720p', '1080p']).optional(),
1915
+ }).optional().describe('专业客户自选的一组模型:传了就额外返回 custom 预览(可用性 + 实时预估),确认自选组合前必须先拿到它讲给客户'),
1908
1916
  }, async (args) => jsonResult(await client.producePost('/production-menu', args)));
1909
1917
  server.tool('confirm_production_plan', '★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)。写入图片模型/视频引擎/分辨率/预算,并记录题材、执行模式、自动追加上限与确认快照。' +
1910
1918
  '调用前必须把汇总完整讲给客户:所选套餐与效果、全剧预估(通常值与上界)、执行模式、预算、追加比例,以及「追加只在预算用完后才动用、到硬上限会停下来问」——客户点头才传 customer_confirmed:true。' +
@@ -1912,6 +1920,7 @@ export function registerProduceTools(server, client) {
1912
1920
  '被拦就停下问客户,别自己换模型、别自己调预算。' +
1913
1921
  '★执行模式本期只记录:各层审查(review_*)与 agent 质检照旧,error 照旧要客户知情才能 acknowledge_review。' +
1914
1922
  '★选套餐要带 expected_combo(该档 combo 原样)与 expected_total_upper:确认的必须是客户看到的那组模型与预估。' +
1923
+ '★自选组合(custom)要先调 get_production_menu 带同一组 custom 拿到预估讲给客户,确认时带 expected_total_upper=custom.estimate.total.upper;没带或重算后涨幅超 5% ⇒ 409 CUSTOM_ESTIMATE_UNCONFIRMED(未写入),返回体里有最新预估,讲给客户同意后带新值再确认。' +
1915
1924
  '409 PACKAGE_CHANGED = 菜单返回后该档换了组合或预估明显上涨,返回体里有新的组合与预估,重新讲给客户、同意后带新值再确认;' +
1916
1925
  '409 PACKAGE_UNAVAILABLE / MODEL_UNAVAILABLE = 确认这一刻该模型不可用了,重新 get_production_menu 让客户改选。403 PRODUCTION_PLAN_NOT_OPEN = 本剧未开放(灰度),照原流程逐步确认。', {
1917
1926
  drama_id: z.number().int().positive(),
@@ -1923,7 +1932,7 @@ export function registerProduceTools(server, client) {
1923
1932
  video_engine: z.string(),
1924
1933
  video_resolution: z.string(),
1925
1934
  }).optional().describe('选 package_key 时必填:把 get_production_menu 里该档的 combo 原样传回。确认这一刻若该档已换成别的组合,平台回 409 PACKAGE_CHANGED、不写入'),
1926
- expected_total_upper: z.number().positive().optional().describe('该档的 estimate.total.upper(客户看到的全剧预估上界)。重算后涨幅超过 5% 也会 409 PACKAGE_CHANGED'),
1935
+ expected_total_upper: z.number().positive().optional().describe('客户看到的全剧预估上界:选套餐时为该档 estimate.total.upper,自选组合时为 custom.estimate.total.upper(自选时必填)。重算后涨幅超过 5% 会 409'),
1927
1936
  assets: z.object({
1928
1937
  characters: z.number().int().min(0).max(200).optional(),
1929
1938
  scenes: z.number().int().min(0).max(200).optional(),
@@ -1933,7 +1942,7 @@ export function registerProduceTools(server, client) {
1933
1942
  image_model: z.string(),
1934
1943
  video_engine: z.string(),
1935
1944
  video_resolution: z.enum(['480p', '720p', '1080p']).optional(),
1936
- }).optional().describe('专业客户自选模型(须在 get_production_menu 的 availability 里是可用的);与 package_key 二选一'),
1945
+ }).optional().describe('专业客户自选模型(须在 get_production_menu 的 availability 里是可用的;先带同一组 custom 调 get_production_menu 拿预估);与 package_key 二选一'),
1937
1946
  execution_mode: z.enum(['pro', 'auto', 'custom']).describe('pro 每步客户把控 / auto 一键出片 / custom 按环节选托管'),
1938
1947
  stage_control: z.object({
1939
1948
  script: z.enum(['customer', 'agent']), storyboards: z.enum(['customer', 'agent']), assets: z.enum(['customer', 'agent']),
package/openapi.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "StarReel Production API",
5
- "version": "0.1.163",
6
- "description": "Turn a script into a finished, downloadable short-drama episode over REST.\n\nPipeline: script → AI rewrite → cast/scenes/props extraction → storyboards → portraits & sheets + scene plates → keyframes → video shots → TTS → final cut (.mp4).\n\n**Billing is prepaid and agent-safe**: big-ticket stages are quote-then-generate (`quote_*` returns a `quote_id`). For video, quote == actual charge. For images the quote is a *range* — models billed per reference image are priced before those are assembled, so `estimated_points` is the upper bound (size the balance by it and a run never dies half-way) and `typical_points` is the usual cost; fixed-price models return the two equal. Insufficient balance returns 402 — nothing half-runs and the account never goes negative.\n\nAuth: exchange your API key at `POST /v1/agent/token` for a 15-minute bearer token.\n\nGenerated from the @starreel/mcp v0.1.163 tool surface (operationIds match MCP tool names 1:1)."
5
+ "version": "0.1.164",
6
+ "description": "Turn a script into a finished, downloadable short-drama episode over REST.\n\nPipeline: script → AI rewrite → cast/scenes/props extraction → storyboards → portraits & sheets + scene plates → keyframes → video shots → TTS → final cut (.mp4).\n\n**Billing is prepaid and agent-safe**: big-ticket stages are quote-then-generate (`quote_*` returns a `quote_id`). For video, quote == actual charge. For images the quote is a *range* — models billed per reference image are priced before those are assembled, so `estimated_points` is the upper bound (size the balance by it and a run never dies half-way) and `typical_points` is the usual cost; fixed-price models return the two equal. Insufficient balance returns 402 — nothing half-runs and the account never goes negative.\n\nAuth: exchange your API key at `POST /v1/agent/token` for a 15-minute bearer token.\n\nGenerated from the @starreel/mcp v0.1.164 tool surface (operationIds match MCP tool names 1:1)."
7
7
  },
8
8
  "servers": [
9
9
  {
@@ -2960,7 +2960,7 @@
2960
2960
  "post": {
2961
2961
  "operationId": "confirm_production_plan",
2962
2962
  "summary": "★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)",
2963
- "description": "★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)。写入图片模型/视频引擎/分辨率/预算,并记录题材、执行模式、自动追加上限与确认快照。调用前必须把汇总完整讲给客户:所选套餐与效果、全剧预估(通常值与上界)、执行模式、预算、追加比例,以及「追加只在预算用完后才动用、到硬上限会停下来问」——客户点头才传 customer_confirmed:true。★确认后平台在每次收费派发前复核:①本剧模型对本剧题材仍可用,否则 409 MODEL_UNAVAILABLE;②报价上界+已花 ≤ 预算×(1+追加%),否则 402 BUDGET_WOULD_EXCEED(都未扣费)。被拦就停下问客户,别自己换模型、别自己调预算。★执行模式本期只记录:各层审查(review_*)与 agent 质检照旧,error 照旧要客户知情才能 acknowledge_review。★选套餐要带 expected_combo(该档 combo 原样)与 expected_total_upper:确认的必须是客户看到的那组模型与预估。409 PACKAGE_CHANGED = 菜单返回后该档换了组合或预估明显上涨,返回体里有新的组合与预估,重新讲给客户、同意后带新值再确认;409 PACKAGE_UNAVAILABLE / MODEL_UNAVAILABLE = 确认这一刻该模型不可用了,重新 get_production_menu 让客户改选。403 PRODUCTION_PLAN_NOT_OPEN = 本剧未开放(灰度),照原流程逐步确认。",
2963
+ "description": "★开场最后一步:把客户**明确同意**的整份方案写进本剧(免费)。写入图片模型/视频引擎/分辨率/预算,并记录题材、执行模式、自动追加上限与确认快照。调用前必须把汇总完整讲给客户:所选套餐与效果、全剧预估(通常值与上界)、执行模式、预算、追加比例,以及「追加只在预算用完后才动用、到硬上限会停下来问」——客户点头才传 customer_confirmed:true。★确认后平台在每次收费派发前复核:①本剧模型对本剧题材仍可用,否则 409 MODEL_UNAVAILABLE;②报价上界+已花 ≤ 预算×(1+追加%),否则 402 BUDGET_WOULD_EXCEED(都未扣费)。被拦就停下问客户,别自己换模型、别自己调预算。★执行模式本期只记录:各层审查(review_*)与 agent 质检照旧,error 照旧要客户知情才能 acknowledge_review。★选套餐要带 expected_combo(该档 combo 原样)与 expected_total_upper:确认的必须是客户看到的那组模型与预估。★自选组合(custom)要先调 get_production_menu 带同一组 custom 拿到预估讲给客户,确认时带 expected_total_upper=custom.estimate.total.upper;没带或重算后涨幅超 5% ⇒ 409 CUSTOM_ESTIMATE_UNCONFIRMED(未写入),返回体里有最新预估,讲给客户同意后带新值再确认。409 PACKAGE_CHANGED = 菜单返回后该档换了组合或预估明显上涨,返回体里有新的组合与预估,重新讲给客户、同意后带新值再确认;409 PACKAGE_UNAVAILABLE / MODEL_UNAVAILABLE = 确认这一刻该模型不可用了,重新 get_production_menu 让客户改选。403 PRODUCTION_PLAN_NOT_OPEN = 本剧未开放(灰度),照原流程逐步确认。",
2964
2964
  "tags": [
2965
2965
  "dramas"
2966
2966
  ],
@@ -10284,7 +10284,7 @@
10284
10284
  "post": {
10285
10285
  "operationId": "get_production_menu",
10286
10286
  "summary": "★开场第二步(免费·只读·不需要剧号):按客户的基本视频参数,返回**当前可用**的三档模型套餐(省钱/标准/高品质)",
10287
- "description": "★开场第二步(免费·只读·不需要剧号):按客户的基本视频参数,返回**当前可用**的三档模型套餐(省钱/标准/高品质)。每档给:图片模型+视频引擎+分辨率、效果说明(effect)、实时预估(estimate:每集与全剧的 typical 通常花费与 upper 上界,breakdown 分项)、warnings(所选模型近期繁忙/失败偏多)、substitutions(本档首选模型暂不可用、退到后备组合的原因)。某档 available=false 表示该档模型当前都不可用(unavailable_reason 说明),别推荐它。estimate=null 表示价格服务暂时取不到实时单价——如实告诉客户「暂时估不出」,别自己编数字。not_included 列出不在预估里的花费(文本步、配音配乐、质检重出),一并讲给客户;质检重出这部分正是「自动追加」兜底的。availability 是全部模型对该题材的可用性(专业客户自选模型时用,unavailable 的不能选)。★题材 content_class 决定可用性:同一引擎可能动漫可用、写实真人暂不可用——按剧情实际画面选,别为了用某个模型改题材。",
10287
+ "description": "★开场第二步(免费·只读·不需要剧号):按客户的基本视频参数,返回**当前可用**的三档模型套餐(省钱/标准/高品质)。每档给:图片模型+视频引擎+分辨率、效果说明(effect)、实时预估(estimate:每集与全剧的 typical 通常花费与 upper 上界,breakdown 分项)、warnings(所选模型近期繁忙/失败偏多)、substitutions(本档首选模型暂不可用、退到后备组合的原因)。某档 available=false 表示该档模型当前都不可用(unavailable_reason 说明),别推荐它。estimate=null 表示价格服务暂时取不到实时单价——如实告诉客户「暂时估不出」,别自己编数字。not_included 列出不在预估里的花费(文本步、配音配乐、质检重出),一并讲给客户;质检重出这部分正是「自动追加」兜底的。availability 是全部模型对该题材的可用性(专业客户自选模型时用,unavailable 的不能选)。★专业客户自选模型:带 custom(图片模型+视频引擎+分辨率)再调一次,返回体多一个 custom(可用性+实时预估);把 custom.estimate 讲给客户,确认时把 custom.estimate.total.upper 作为 expected_total_upper 原样带回。★overrun_history = 历史上多少剧会用到自动追加(按扣费账本统计):sufficient=true 时可告诉客户「历史上约 used_overrun_pct% 的剧会用到追加,平均多 avg_excess_pct_when_used%,选 10/20/30% 追加能兜住 covered_pct_by_overrun 里的比例」,并说明这是历史统计不是承诺;sufficient=false(暂无足够数据)时**不许**给客户任何比例或自己估一个数,只说追加用于兜底质检重出、审核拒绝后的重出,用不到不扣。★题材 content_class 决定可用性:同一引擎可能动漫可用、写实真人暂不可用——按剧情实际画面选,别为了用某个模型改题材。",
10288
10288
  "tags": [
10289
10289
  "production-menu"
10290
10290
  ],
@@ -10339,6 +10339,30 @@
10339
10339
  }
10340
10340
  },
10341
10341
  "additionalProperties": false
10342
+ },
10343
+ "custom": {
10344
+ "type": "object",
10345
+ "properties": {
10346
+ "image_model": {
10347
+ "type": "string"
10348
+ },
10349
+ "video_engine": {
10350
+ "type": "string"
10351
+ },
10352
+ "video_resolution": {
10353
+ "type": "string",
10354
+ "enum": [
10355
+ "480p",
10356
+ "720p",
10357
+ "1080p"
10358
+ ]
10359
+ }
10360
+ },
10361
+ "required": [
10362
+ "image_model",
10363
+ "video_engine"
10364
+ ],
10365
+ "additionalProperties": false
10342
10366
  }
10343
10367
  },
10344
10368
  "required": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starreel/mcp",
3
- "version": "0.1.163",
3
+ "version": "0.1.164",
4
4
  "mcpName": "ai.starreel/starreel",
5
5
  "description": "StarReel MCP server — drive the AI short-drama production pipeline (script → storyboards → frames → video → final cut) from Claude, Cursor, or any MCP client",
6
6
  "license": "MIT",
package/server.json CHANGED
@@ -2,13 +2,13 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
3
3
  "name": "ai.starreel/starreel",
4
4
  "description": "Turn a script into a finished, downloadable short-drama episode — via MCP or REST.",
5
- "version": "0.1.163",
5
+ "version": "0.1.164",
6
6
  "websiteUrl": "https://starreel.ai",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "@starreel/mcp",
11
- "version": "0.1.163",
11
+ "version": "0.1.164",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  },