@productmaker/mcp 12.3.0 → 12.4.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/dist/http.js +164 -102
- package/dist/stdio.js +164 -102
- package/package.json +3 -3
package/dist/http.js
CHANGED
|
@@ -2380,6 +2380,12 @@ var DEFAULT_PRICING = {
|
|
|
2380
2380
|
ourCostCents: 7,
|
|
2381
2381
|
userPriceCents: 10.5
|
|
2382
2382
|
},
|
|
2383
|
+
// Sync 2.0 on Fal: $3/minute, standard lipsync-2. Used only after PixVerse
|
|
2384
|
+
// moderation; recovery settlement caps retail at the frozen primary price.
|
|
2385
|
+
"fal:lipsync-sync-v2-persec": {
|
|
2386
|
+
ourCostCents: 5,
|
|
2387
|
+
userPriceCents: 10
|
|
2388
|
+
},
|
|
2383
2389
|
"sync_so:lipsync": {
|
|
2384
2390
|
ourCostCents: 8.3,
|
|
2385
2391
|
userPriceCents: 10
|
|
@@ -6100,6 +6106,11 @@ var LANDING_STRATEGIES = [
|
|
|
6100
6106
|
"lifestyle_identity"
|
|
6101
6107
|
];
|
|
6102
6108
|
var LandingStrategySchema = z14.enum(LANDING_STRATEGIES);
|
|
6109
|
+
var SELECTABLE_LANDING_STRATEGIES = [
|
|
6110
|
+
"classic",
|
|
6111
|
+
"social_proof"
|
|
6112
|
+
];
|
|
6113
|
+
var SelectableLandingStrategySchema = z14.enum(SELECTABLE_LANDING_STRATEGIES);
|
|
6103
6114
|
var EffectiveLandingStrategySchema = LandingStrategySchema.exclude([
|
|
6104
6115
|
"auto"
|
|
6105
6116
|
]);
|
|
@@ -11482,6 +11493,16 @@ var CreativeEngineCompositionRepairSchema = z38.object({
|
|
|
11482
11493
|
manifestHash: hash,
|
|
11483
11494
|
compositionOperationId: id2
|
|
11484
11495
|
}).strict();
|
|
11496
|
+
var CreativeEngineRetainedSceneCandidateBindingSchema = z38.object({
|
|
11497
|
+
owner: CreativeEngineOwnerSchema,
|
|
11498
|
+
context: CreativeEngineContextBindingSchema,
|
|
11499
|
+
planHash: hash,
|
|
11500
|
+
planRevision: z38.number().int().positive(),
|
|
11501
|
+
scene: CreativeEngineSceneSchema,
|
|
11502
|
+
preparedInputs: CreativeEnginePreparedInputsSchema,
|
|
11503
|
+
candidates: z38.array(CreativeEngineCandidateSchema),
|
|
11504
|
+
reviews: z38.array(CreativeEngineReviewSchema)
|
|
11505
|
+
}).strict();
|
|
11485
11506
|
var CreativeEngineStateSchema = z38.object({
|
|
11486
11507
|
schemaVersion: z38.union([
|
|
11487
11508
|
z38.literal(1),
|
|
@@ -11512,6 +11533,8 @@ var CreativeEngineStateSchema = z38.object({
|
|
|
11512
11533
|
reviews: z38.array(CreativeEngineReviewSchema),
|
|
11513
11534
|
preparedInputs: z38.array(CreativeEnginePreparedInputsSchema),
|
|
11514
11535
|
candidates: z38.array(CreativeEngineCandidateSchema),
|
|
11536
|
+
/** Domain-minted same-owner custody across an unchanged sibling repair. */
|
|
11537
|
+
retainedSceneCandidates: z38.array(CreativeEngineRetainedSceneCandidateBindingSchema).optional(),
|
|
11515
11538
|
inheritedSceneOutputs: z38.array(CreativeEngineInheritedSceneOutputSchema).optional(),
|
|
11516
11539
|
speechRoutings: z38.array(CreativeEngineSpeechRoutingSchema).optional(),
|
|
11517
11540
|
speechWindowRepair: z38.object({
|
|
@@ -22494,6 +22517,23 @@ var ProductControlDailyCountsSchema = z100.object({
|
|
|
22494
22517
|
"dropi"
|
|
22495
22518
|
])
|
|
22496
22519
|
});
|
|
22520
|
+
var ProductControlCampaignEvidenceSchema = z100.object({
|
|
22521
|
+
provider: z100.literal("meta"),
|
|
22522
|
+
accountId: z100.string(),
|
|
22523
|
+
campaignId: z100.string(),
|
|
22524
|
+
date: z100.string(),
|
|
22525
|
+
currency: z100.string().nullable(),
|
|
22526
|
+
spend: z100.number().finite().nonnegative().nullable(),
|
|
22527
|
+
purchases: z100.number().finite().nonnegative().nullable(),
|
|
22528
|
+
dailyBudget: z100.number().finite().positive().nullable(),
|
|
22529
|
+
timeZone: z100.string().nullable(),
|
|
22530
|
+
budgetSource: z100.enum([
|
|
22531
|
+
"campaign",
|
|
22532
|
+
"adsets"
|
|
22533
|
+
]).nullable(),
|
|
22534
|
+
/** Exact current provider day, compatible currency and operation timezone. */
|
|
22535
|
+
budgetVerified: z100.boolean()
|
|
22536
|
+
});
|
|
22497
22537
|
var ProductControlRowSchema = z100.object({
|
|
22498
22538
|
/** `null` hasta que la vendedora toca el producto por primera vez. */
|
|
22499
22539
|
productControlId: z100.string().nullable(),
|
|
@@ -22533,6 +22573,7 @@ var ProductControlRowSchema = z100.object({
|
|
|
22533
22573
|
accountId: z100.string(),
|
|
22534
22574
|
campaignId: z100.string()
|
|
22535
22575
|
})),
|
|
22576
|
+
campaignEvidence: z100.array(ProductControlCampaignEvidenceSchema).optional(),
|
|
22536
22577
|
status: DailyControlStatusSchema,
|
|
22537
22578
|
statusMessage: z100.string().nullable(),
|
|
22538
22579
|
light: DailyControlLightSchema,
|
|
@@ -22601,6 +22642,9 @@ var ProductControlRateDefaultsSchema = z100.object({
|
|
|
22601
22642
|
var ProductControlListResponseSchema = z100.object({
|
|
22602
22643
|
since: z100.string(),
|
|
22603
22644
|
until: z100.string(),
|
|
22645
|
+
/** Server calendar; absent on older API revisions. Today is always partial. */
|
|
22646
|
+
today: z100.string().optional(),
|
|
22647
|
+
timeZone: z100.string().nullable().optional(),
|
|
22604
22648
|
rows: z100.array(ProductControlRowSchema),
|
|
22605
22649
|
/** Nullable, NO opcional: ausente y «no hay de dónde heredar» tienen que
|
|
22606
22650
|
* distinguirse, o la pantalla no sabe si preguntar o esperar. */
|
|
@@ -23164,7 +23208,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
23164
23208
|
// MCP 8.6.0: + storyteller narrative family and animationStyle axis.
|
|
23165
23209
|
// MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
|
|
23166
23210
|
// MCP 9.1.0: combine current animated-video controls and initial GIF choice.
|
|
23167
|
-
|
|
23211
|
+
// MCP 12.4.0: landingStrategy narrowed to classic + social_proof.
|
|
23212
|
+
"c35f8c65762db3ea077b09f5f165e5571abea0f40250e4c096d1ef7cad7e5f7a",
|
|
23168
23213
|
"credit_consuming",
|
|
23169
23214
|
"creative",
|
|
23170
23215
|
[
|
|
@@ -23607,105 +23652,117 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
23607
23652
|
]
|
|
23608
23653
|
}
|
|
23609
23654
|
]),
|
|
23610
|
-
defineCapability(
|
|
23655
|
+
defineCapability(
|
|
23656
|
+
"generate_landing",
|
|
23657
|
+
// MCP 12.4.0: guided landingStrategy narrowed to classic + social_proof.
|
|
23658
|
+
"d3ef2376273a5a1b987c79182e63ff00a03de322e1a13e0dc69f7ffa8330536e",
|
|
23611
23659
|
"credit_consuming",
|
|
23612
|
-
"
|
|
23613
|
-
|
|
23614
|
-
|
|
23615
|
-
"
|
|
23616
|
-
|
|
23617
|
-
|
|
23618
|
-
"
|
|
23619
|
-
|
|
23620
|
-
|
|
23621
|
-
|
|
23622
|
-
|
|
23623
|
-
|
|
23624
|
-
|
|
23625
|
-
|
|
23626
|
-
|
|
23627
|
-
|
|
23628
|
-
|
|
23629
|
-
|
|
23630
|
-
|
|
23631
|
-
"
|
|
23632
|
-
|
|
23633
|
-
|
|
23634
|
-
|
|
23635
|
-
|
|
23636
|
-
|
|
23637
|
-
|
|
23638
|
-
|
|
23639
|
-
|
|
23640
|
-
|
|
23641
|
-
|
|
23642
|
-
|
|
23643
|
-
|
|
23644
|
-
|
|
23645
|
-
|
|
23646
|
-
|
|
23647
|
-
|
|
23648
|
-
"
|
|
23649
|
-
|
|
23650
|
-
|
|
23651
|
-
|
|
23652
|
-
|
|
23653
|
-
|
|
23654
|
-
|
|
23655
|
-
|
|
23656
|
-
"
|
|
23657
|
-
|
|
23658
|
-
|
|
23659
|
-
|
|
23660
|
-
|
|
23661
|
-
|
|
23662
|
-
|
|
23663
|
-
|
|
23664
|
-
|
|
23665
|
-
"
|
|
23666
|
-
|
|
23667
|
-
|
|
23668
|
-
|
|
23669
|
-
|
|
23670
|
-
|
|
23671
|
-
|
|
23672
|
-
|
|
23673
|
-
|
|
23674
|
-
|
|
23675
|
-
|
|
23676
|
-
|
|
23677
|
-
|
|
23678
|
-
|
|
23679
|
-
|
|
23680
|
-
|
|
23681
|
-
|
|
23682
|
-
|
|
23683
|
-
|
|
23684
|
-
|
|
23685
|
-
|
|
23686
|
-
|
|
23687
|
-
|
|
23688
|
-
|
|
23689
|
-
|
|
23690
|
-
|
|
23691
|
-
|
|
23692
|
-
|
|
23693
|
-
|
|
23694
|
-
|
|
23695
|
-
|
|
23696
|
-
|
|
23697
|
-
|
|
23698
|
-
|
|
23699
|
-
"
|
|
23700
|
-
|
|
23701
|
-
|
|
23702
|
-
|
|
23703
|
-
|
|
23704
|
-
|
|
23705
|
-
|
|
23706
|
-
|
|
23707
|
-
|
|
23708
|
-
|
|
23660
|
+
"creative",
|
|
23661
|
+
[
|
|
23662
|
+
"credit_consuming",
|
|
23663
|
+
"state_change"
|
|
23664
|
+
],
|
|
23665
|
+
[
|
|
23666
|
+
slot("product_reference", true, [
|
|
23667
|
+
"images",
|
|
23668
|
+
"winnerReference"
|
|
23669
|
+
], [
|
|
23670
|
+
"imageMessageIds",
|
|
23671
|
+
"imageAssetIds",
|
|
23672
|
+
"projectId",
|
|
23673
|
+
"productUrl"
|
|
23674
|
+
]),
|
|
23675
|
+
slot("locale", true, [
|
|
23676
|
+
"language",
|
|
23677
|
+
"country"
|
|
23678
|
+
]),
|
|
23679
|
+
slot("initial_landing_gif", false, [
|
|
23680
|
+
"includeInitialLandingGif"
|
|
23681
|
+
], []),
|
|
23682
|
+
slot("sales_context", false, [
|
|
23683
|
+
"salesAngle",
|
|
23684
|
+
"buyerPersona"
|
|
23685
|
+
]),
|
|
23686
|
+
slot("commercial_offer", false, [
|
|
23687
|
+
"price",
|
|
23688
|
+
"compareAtPrice",
|
|
23689
|
+
"offer"
|
|
23690
|
+
], [
|
|
23691
|
+
"price",
|
|
23692
|
+
"offer",
|
|
23693
|
+
"compareAtPrice",
|
|
23694
|
+
"paymentMethods"
|
|
23695
|
+
]),
|
|
23696
|
+
slot("product_context", false, [
|
|
23697
|
+
"productLabel",
|
|
23698
|
+
"isCombo"
|
|
23699
|
+
], [
|
|
23700
|
+
"productContext",
|
|
23701
|
+
"productLabel",
|
|
23702
|
+
"isCombo"
|
|
23703
|
+
]),
|
|
23704
|
+
slot("brand_direction", false, [
|
|
23705
|
+
"brandId"
|
|
23706
|
+
], [
|
|
23707
|
+
"brandId",
|
|
23708
|
+
"creativeDirection",
|
|
23709
|
+
"headline",
|
|
23710
|
+
"subheadline"
|
|
23711
|
+
]),
|
|
23712
|
+
slot(
|
|
23713
|
+
"landing_options",
|
|
23714
|
+
// Required by the direct MCP schema, optional for the WhatsApp adapter.
|
|
23715
|
+
false,
|
|
23716
|
+
[
|
|
23717
|
+
"creativeSetup"
|
|
23718
|
+
],
|
|
23719
|
+
[
|
|
23720
|
+
"competitorScanEnabled",
|
|
23721
|
+
"landingStrategy",
|
|
23722
|
+
"landingImageFormat",
|
|
23723
|
+
"pauseForAngleReview"
|
|
23724
|
+
]
|
|
23725
|
+
)
|
|
23726
|
+
],
|
|
23727
|
+
[
|
|
23728
|
+
"product_reference"
|
|
23729
|
+
],
|
|
23730
|
+
[
|
|
23731
|
+
"task",
|
|
23732
|
+
"product",
|
|
23733
|
+
"landing"
|
|
23734
|
+
],
|
|
23735
|
+
SHARED_CHANNEL_EXPOSURE,
|
|
23736
|
+
[
|
|
23737
|
+
{
|
|
23738
|
+
slot: "product_reference",
|
|
23739
|
+
askBeforePaidExecution: true,
|
|
23740
|
+
explicitOmissionAllowed: false,
|
|
23741
|
+
fieldCompletion: "any"
|
|
23742
|
+
},
|
|
23743
|
+
{
|
|
23744
|
+
slot: "locale",
|
|
23745
|
+
askBeforePaidExecution: true,
|
|
23746
|
+
explicitOmissionAllowed: false,
|
|
23747
|
+
fieldCompletion: "all"
|
|
23748
|
+
},
|
|
23749
|
+
{
|
|
23750
|
+
slot: "sales_context",
|
|
23751
|
+
askBeforePaidExecution: true,
|
|
23752
|
+
explicitOmissionAllowed: true,
|
|
23753
|
+
fieldCompletion: "any",
|
|
23754
|
+
completionFields: [
|
|
23755
|
+
"salesAngle"
|
|
23756
|
+
]
|
|
23757
|
+
},
|
|
23758
|
+
{
|
|
23759
|
+
slot: "commercial_offer",
|
|
23760
|
+
askBeforePaidExecution: true,
|
|
23761
|
+
explicitOmissionAllowed: true,
|
|
23762
|
+
fieldCompletion: "all"
|
|
23763
|
+
}
|
|
23764
|
+
]
|
|
23765
|
+
),
|
|
23709
23766
|
defineCapability(
|
|
23710
23767
|
"generate_video_creative",
|
|
23711
23768
|
// MCP 8.6.0: + storyteller narrative family and animationStyle axis.
|
|
@@ -30923,7 +30980,7 @@ var ApiClient = class {
|
|
|
30923
30980
|
};
|
|
30924
30981
|
|
|
30925
30982
|
// src/index.ts
|
|
30926
|
-
var MCP_VERSION = "12.
|
|
30983
|
+
var MCP_VERSION = "12.4.0";
|
|
30927
30984
|
|
|
30928
30985
|
// src/meta-upload-app.ts
|
|
30929
30986
|
import { readFileSync } from "fs";
|
|
@@ -31917,7 +31974,7 @@ __name(resolveMediaRef, "resolveMediaRef");
|
|
|
31917
31974
|
import { z as z133 } from "zod";
|
|
31918
31975
|
var Lang = z133.string().regex(/^[a-z]{2}(?:[-_][a-zA-Z]{2})?$/, "Usa un c\xF3digo de idioma BCP-47, por ejemplo es, en-US o pt-BR").max(10);
|
|
31919
31976
|
var Country = z133.string().min(2).max(3);
|
|
31920
|
-
var LandingStrategyEnum =
|
|
31977
|
+
var LandingStrategyEnum = SelectableLandingStrategySchema;
|
|
31921
31978
|
var LandingImageFormatEnum = LandingImageFormatSchema;
|
|
31922
31979
|
var VideoPresetEnum = VideoPreset.extract([
|
|
31923
31980
|
"auto",
|
|
@@ -32260,6 +32317,9 @@ var McpErrorCode = {
|
|
|
32260
32317
|
// Auth / API key
|
|
32261
32318
|
INVALID_API_KEY: "INVALID_API_KEY",
|
|
32262
32319
|
REVOKED_API_KEY: "REVOKED_API_KEY",
|
|
32320
|
+
// The session id has no account row (a linked account moved it); signing
|
|
32321
|
+
// in again runs the user sync that restores it.
|
|
32322
|
+
USER_NOT_PROVISIONED: "USER_NOT_PROVISIONED",
|
|
32263
32323
|
// Rate limit / quota
|
|
32264
32324
|
RATE_LIMITED: "RATE_LIMITED",
|
|
32265
32325
|
CREDIT_ADMISSION_UNAVAILABLE: "CREDIT_ADMISSION_UNAVAILABLE",
|
|
@@ -32540,6 +32600,7 @@ var CODE_MESSAGES = {
|
|
|
32540
32600
|
PRODUCT_RESEARCH_IDEMPOTENCY_CONFLICT: "A product research run with the same country and category is already running. Check it with `list_product_research_runs` instead of starting a new paid run.",
|
|
32541
32601
|
// API key
|
|
32542
32602
|
INVALID_API_KEY: "Invalid API key. Check your PM_API_KEY in the MCP client configuration.",
|
|
32603
|
+
USER_NOT_PROVISIONED: "This ProductMaker session points to an account that moved to another sign-in method. Sign in to ProductMaker again (reconnect the MCP or log in at productmaker.app), then retry. Do not change the API key.",
|
|
32543
32604
|
REVOKED_API_KEY: "API key revoked. Generate a new one at https://productmaker.app/account/api-keys.",
|
|
32544
32605
|
// Rate
|
|
32545
32606
|
RATE_LIMITED: "Too many requests. Wait a few seconds.",
|
|
@@ -32698,6 +32759,7 @@ var INVALID_PARAM_CODES = /* @__PURE__ */ new Set([
|
|
|
32698
32759
|
McpErrorCode.NO_META_AD_ACCOUNTS
|
|
32699
32760
|
]);
|
|
32700
32761
|
var PASSTHROUGH_CODES = /* @__PURE__ */ new Set([
|
|
32762
|
+
McpErrorCode.USER_NOT_PROVISIONED,
|
|
32701
32763
|
McpErrorCode.CREDIT_ADMISSION_UNAVAILABLE,
|
|
32702
32764
|
McpErrorCode.INSUFFICIENT_CREDITS,
|
|
32703
32765
|
McpErrorCode.TASK_QUOTA_EXCEEDED,
|
|
@@ -34779,7 +34841,7 @@ var CreateProductTaskInput = z138.object({
|
|
|
34779
34841
|
creativeDirection: z138.string().max(500).optional().describe('Opcional. Direcci\xF3n creativa en texto libre (colores, mood, estilo) que aplica a los outputs de IMAGEN y LANDING (no al video \u2014 el estilo/ambiente del video se dirige con scriptNotes). M\xC1XIMA PRIORIDAD: anula marca, colores y estilo por defecto. Ej. "amarillo y azul, minimalista". M\xE1x 500 caracteres.'),
|
|
34780
34842
|
headline: z138.string().max(120).optional().describe("Opcional. Titular EXACTO a renderizar. Se imprime tal cual: la IA no lo reescribe, no lo acorta y no lo traduce. Se aplica a las IM\xC1GENES y a la portada de la landing de esta task (el video no lo usa; para el video usa scriptNotes). \xDAsalo cuando el copy es de marca y no es negociable. M\xE1x 120 caracteres. Si lo omites, la IA escribe el titular."),
|
|
34781
34843
|
subheadline: z138.string().max(160).optional().describe("Opcional. Subt\xEDtulo EXACTO a renderizar, misma regla que headline. Independiente: puedes fijar solo el subt\xEDtulo. M\xE1x 160 caracteres."),
|
|
34782
|
-
landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (estructura original probada y recomendada
|
|
34844
|
+
landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (Landing cl\xE1sica de ProductMaker: estructura original probada y recomendada) o "social_proof" (Landing Viral: UGC, WhatsApp, Instagram y evidencia social). Default "classic".'),
|
|
34783
34845
|
landingImageFormat: LandingImageFormatEnum.default("9:16").describe('Opcional. Formato/relaci\xF3n de aspecto de las im\xE1genes de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "9:16" (vertical, por defecto), "4:5" (vertical compacto para feed) o "1:1" (cuadrado). Default "9:16".')
|
|
34784
34846
|
}).strict();
|
|
34785
34847
|
var CreateServiceVideoInput = z138.object({
|
package/dist/stdio.js
CHANGED
|
@@ -2155,6 +2155,12 @@ var DEFAULT_PRICING = {
|
|
|
2155
2155
|
ourCostCents: 7,
|
|
2156
2156
|
userPriceCents: 10.5
|
|
2157
2157
|
},
|
|
2158
|
+
// Sync 2.0 on Fal: $3/minute, standard lipsync-2. Used only after PixVerse
|
|
2159
|
+
// moderation; recovery settlement caps retail at the frozen primary price.
|
|
2160
|
+
"fal:lipsync-sync-v2-persec": {
|
|
2161
|
+
ourCostCents: 5,
|
|
2162
|
+
userPriceCents: 10
|
|
2163
|
+
},
|
|
2158
2164
|
"sync_so:lipsync": {
|
|
2159
2165
|
ourCostCents: 8.3,
|
|
2160
2166
|
userPriceCents: 10
|
|
@@ -5875,6 +5881,11 @@ var LANDING_STRATEGIES = [
|
|
|
5875
5881
|
"lifestyle_identity"
|
|
5876
5882
|
];
|
|
5877
5883
|
var LandingStrategySchema = z14.enum(LANDING_STRATEGIES);
|
|
5884
|
+
var SELECTABLE_LANDING_STRATEGIES = [
|
|
5885
|
+
"classic",
|
|
5886
|
+
"social_proof"
|
|
5887
|
+
];
|
|
5888
|
+
var SelectableLandingStrategySchema = z14.enum(SELECTABLE_LANDING_STRATEGIES);
|
|
5878
5889
|
var EffectiveLandingStrategySchema = LandingStrategySchema.exclude([
|
|
5879
5890
|
"auto"
|
|
5880
5891
|
]);
|
|
@@ -11257,6 +11268,16 @@ var CreativeEngineCompositionRepairSchema = z38.object({
|
|
|
11257
11268
|
manifestHash: hash,
|
|
11258
11269
|
compositionOperationId: id2
|
|
11259
11270
|
}).strict();
|
|
11271
|
+
var CreativeEngineRetainedSceneCandidateBindingSchema = z38.object({
|
|
11272
|
+
owner: CreativeEngineOwnerSchema,
|
|
11273
|
+
context: CreativeEngineContextBindingSchema,
|
|
11274
|
+
planHash: hash,
|
|
11275
|
+
planRevision: z38.number().int().positive(),
|
|
11276
|
+
scene: CreativeEngineSceneSchema,
|
|
11277
|
+
preparedInputs: CreativeEnginePreparedInputsSchema,
|
|
11278
|
+
candidates: z38.array(CreativeEngineCandidateSchema),
|
|
11279
|
+
reviews: z38.array(CreativeEngineReviewSchema)
|
|
11280
|
+
}).strict();
|
|
11260
11281
|
var CreativeEngineStateSchema = z38.object({
|
|
11261
11282
|
schemaVersion: z38.union([
|
|
11262
11283
|
z38.literal(1),
|
|
@@ -11287,6 +11308,8 @@ var CreativeEngineStateSchema = z38.object({
|
|
|
11287
11308
|
reviews: z38.array(CreativeEngineReviewSchema),
|
|
11288
11309
|
preparedInputs: z38.array(CreativeEnginePreparedInputsSchema),
|
|
11289
11310
|
candidates: z38.array(CreativeEngineCandidateSchema),
|
|
11311
|
+
/** Domain-minted same-owner custody across an unchanged sibling repair. */
|
|
11312
|
+
retainedSceneCandidates: z38.array(CreativeEngineRetainedSceneCandidateBindingSchema).optional(),
|
|
11290
11313
|
inheritedSceneOutputs: z38.array(CreativeEngineInheritedSceneOutputSchema).optional(),
|
|
11291
11314
|
speechRoutings: z38.array(CreativeEngineSpeechRoutingSchema).optional(),
|
|
11292
11315
|
speechWindowRepair: z38.object({
|
|
@@ -22269,6 +22292,23 @@ var ProductControlDailyCountsSchema = z100.object({
|
|
|
22269
22292
|
"dropi"
|
|
22270
22293
|
])
|
|
22271
22294
|
});
|
|
22295
|
+
var ProductControlCampaignEvidenceSchema = z100.object({
|
|
22296
|
+
provider: z100.literal("meta"),
|
|
22297
|
+
accountId: z100.string(),
|
|
22298
|
+
campaignId: z100.string(),
|
|
22299
|
+
date: z100.string(),
|
|
22300
|
+
currency: z100.string().nullable(),
|
|
22301
|
+
spend: z100.number().finite().nonnegative().nullable(),
|
|
22302
|
+
purchases: z100.number().finite().nonnegative().nullable(),
|
|
22303
|
+
dailyBudget: z100.number().finite().positive().nullable(),
|
|
22304
|
+
timeZone: z100.string().nullable(),
|
|
22305
|
+
budgetSource: z100.enum([
|
|
22306
|
+
"campaign",
|
|
22307
|
+
"adsets"
|
|
22308
|
+
]).nullable(),
|
|
22309
|
+
/** Exact current provider day, compatible currency and operation timezone. */
|
|
22310
|
+
budgetVerified: z100.boolean()
|
|
22311
|
+
});
|
|
22272
22312
|
var ProductControlRowSchema = z100.object({
|
|
22273
22313
|
/** `null` hasta que la vendedora toca el producto por primera vez. */
|
|
22274
22314
|
productControlId: z100.string().nullable(),
|
|
@@ -22308,6 +22348,7 @@ var ProductControlRowSchema = z100.object({
|
|
|
22308
22348
|
accountId: z100.string(),
|
|
22309
22349
|
campaignId: z100.string()
|
|
22310
22350
|
})),
|
|
22351
|
+
campaignEvidence: z100.array(ProductControlCampaignEvidenceSchema).optional(),
|
|
22311
22352
|
status: DailyControlStatusSchema,
|
|
22312
22353
|
statusMessage: z100.string().nullable(),
|
|
22313
22354
|
light: DailyControlLightSchema,
|
|
@@ -22376,6 +22417,9 @@ var ProductControlRateDefaultsSchema = z100.object({
|
|
|
22376
22417
|
var ProductControlListResponseSchema = z100.object({
|
|
22377
22418
|
since: z100.string(),
|
|
22378
22419
|
until: z100.string(),
|
|
22420
|
+
/** Server calendar; absent on older API revisions. Today is always partial. */
|
|
22421
|
+
today: z100.string().optional(),
|
|
22422
|
+
timeZone: z100.string().nullable().optional(),
|
|
22379
22423
|
rows: z100.array(ProductControlRowSchema),
|
|
22380
22424
|
/** Nullable, NO opcional: ausente y «no hay de dónde heredar» tienen que
|
|
22381
22425
|
* distinguirse, o la pantalla no sabe si preguntar o esperar. */
|
|
@@ -22939,7 +22983,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
22939
22983
|
// MCP 8.6.0: + storyteller narrative family and animationStyle axis.
|
|
22940
22984
|
// MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
|
|
22941
22985
|
// MCP 9.1.0: combine current animated-video controls and initial GIF choice.
|
|
22942
|
-
|
|
22986
|
+
// MCP 12.4.0: landingStrategy narrowed to classic + social_proof.
|
|
22987
|
+
"c35f8c65762db3ea077b09f5f165e5571abea0f40250e4c096d1ef7cad7e5f7a",
|
|
22943
22988
|
"credit_consuming",
|
|
22944
22989
|
"creative",
|
|
22945
22990
|
[
|
|
@@ -23382,105 +23427,117 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
23382
23427
|
]
|
|
23383
23428
|
}
|
|
23384
23429
|
]),
|
|
23385
|
-
defineCapability(
|
|
23430
|
+
defineCapability(
|
|
23431
|
+
"generate_landing",
|
|
23432
|
+
// MCP 12.4.0: guided landingStrategy narrowed to classic + social_proof.
|
|
23433
|
+
"d3ef2376273a5a1b987c79182e63ff00a03de322e1a13e0dc69f7ffa8330536e",
|
|
23386
23434
|
"credit_consuming",
|
|
23387
|
-
"
|
|
23388
|
-
|
|
23389
|
-
|
|
23390
|
-
"
|
|
23391
|
-
|
|
23392
|
-
|
|
23393
|
-
"
|
|
23394
|
-
|
|
23395
|
-
|
|
23396
|
-
|
|
23397
|
-
|
|
23398
|
-
|
|
23399
|
-
|
|
23400
|
-
|
|
23401
|
-
|
|
23402
|
-
|
|
23403
|
-
|
|
23404
|
-
|
|
23405
|
-
|
|
23406
|
-
"
|
|
23407
|
-
|
|
23408
|
-
|
|
23409
|
-
|
|
23410
|
-
|
|
23411
|
-
|
|
23412
|
-
|
|
23413
|
-
|
|
23414
|
-
|
|
23415
|
-
|
|
23416
|
-
|
|
23417
|
-
|
|
23418
|
-
|
|
23419
|
-
|
|
23420
|
-
|
|
23421
|
-
|
|
23422
|
-
|
|
23423
|
-
"
|
|
23424
|
-
|
|
23425
|
-
|
|
23426
|
-
|
|
23427
|
-
|
|
23428
|
-
|
|
23429
|
-
|
|
23430
|
-
|
|
23431
|
-
"
|
|
23432
|
-
|
|
23433
|
-
|
|
23434
|
-
|
|
23435
|
-
|
|
23436
|
-
|
|
23437
|
-
|
|
23438
|
-
|
|
23439
|
-
|
|
23440
|
-
"
|
|
23441
|
-
|
|
23442
|
-
|
|
23443
|
-
|
|
23444
|
-
|
|
23445
|
-
|
|
23446
|
-
|
|
23447
|
-
|
|
23448
|
-
|
|
23449
|
-
|
|
23450
|
-
|
|
23451
|
-
|
|
23452
|
-
|
|
23453
|
-
|
|
23454
|
-
|
|
23455
|
-
|
|
23456
|
-
|
|
23457
|
-
|
|
23458
|
-
|
|
23459
|
-
|
|
23460
|
-
|
|
23461
|
-
|
|
23462
|
-
|
|
23463
|
-
|
|
23464
|
-
|
|
23465
|
-
|
|
23466
|
-
|
|
23467
|
-
|
|
23468
|
-
|
|
23469
|
-
|
|
23470
|
-
|
|
23471
|
-
|
|
23472
|
-
|
|
23473
|
-
|
|
23474
|
-
"
|
|
23475
|
-
|
|
23476
|
-
|
|
23477
|
-
|
|
23478
|
-
|
|
23479
|
-
|
|
23480
|
-
|
|
23481
|
-
|
|
23482
|
-
|
|
23483
|
-
|
|
23435
|
+
"creative",
|
|
23436
|
+
[
|
|
23437
|
+
"credit_consuming",
|
|
23438
|
+
"state_change"
|
|
23439
|
+
],
|
|
23440
|
+
[
|
|
23441
|
+
slot("product_reference", true, [
|
|
23442
|
+
"images",
|
|
23443
|
+
"winnerReference"
|
|
23444
|
+
], [
|
|
23445
|
+
"imageMessageIds",
|
|
23446
|
+
"imageAssetIds",
|
|
23447
|
+
"projectId",
|
|
23448
|
+
"productUrl"
|
|
23449
|
+
]),
|
|
23450
|
+
slot("locale", true, [
|
|
23451
|
+
"language",
|
|
23452
|
+
"country"
|
|
23453
|
+
]),
|
|
23454
|
+
slot("initial_landing_gif", false, [
|
|
23455
|
+
"includeInitialLandingGif"
|
|
23456
|
+
], []),
|
|
23457
|
+
slot("sales_context", false, [
|
|
23458
|
+
"salesAngle",
|
|
23459
|
+
"buyerPersona"
|
|
23460
|
+
]),
|
|
23461
|
+
slot("commercial_offer", false, [
|
|
23462
|
+
"price",
|
|
23463
|
+
"compareAtPrice",
|
|
23464
|
+
"offer"
|
|
23465
|
+
], [
|
|
23466
|
+
"price",
|
|
23467
|
+
"offer",
|
|
23468
|
+
"compareAtPrice",
|
|
23469
|
+
"paymentMethods"
|
|
23470
|
+
]),
|
|
23471
|
+
slot("product_context", false, [
|
|
23472
|
+
"productLabel",
|
|
23473
|
+
"isCombo"
|
|
23474
|
+
], [
|
|
23475
|
+
"productContext",
|
|
23476
|
+
"productLabel",
|
|
23477
|
+
"isCombo"
|
|
23478
|
+
]),
|
|
23479
|
+
slot("brand_direction", false, [
|
|
23480
|
+
"brandId"
|
|
23481
|
+
], [
|
|
23482
|
+
"brandId",
|
|
23483
|
+
"creativeDirection",
|
|
23484
|
+
"headline",
|
|
23485
|
+
"subheadline"
|
|
23486
|
+
]),
|
|
23487
|
+
slot(
|
|
23488
|
+
"landing_options",
|
|
23489
|
+
// Required by the direct MCP schema, optional for the WhatsApp adapter.
|
|
23490
|
+
false,
|
|
23491
|
+
[
|
|
23492
|
+
"creativeSetup"
|
|
23493
|
+
],
|
|
23494
|
+
[
|
|
23495
|
+
"competitorScanEnabled",
|
|
23496
|
+
"landingStrategy",
|
|
23497
|
+
"landingImageFormat",
|
|
23498
|
+
"pauseForAngleReview"
|
|
23499
|
+
]
|
|
23500
|
+
)
|
|
23501
|
+
],
|
|
23502
|
+
[
|
|
23503
|
+
"product_reference"
|
|
23504
|
+
],
|
|
23505
|
+
[
|
|
23506
|
+
"task",
|
|
23507
|
+
"product",
|
|
23508
|
+
"landing"
|
|
23509
|
+
],
|
|
23510
|
+
SHARED_CHANNEL_EXPOSURE,
|
|
23511
|
+
[
|
|
23512
|
+
{
|
|
23513
|
+
slot: "product_reference",
|
|
23514
|
+
askBeforePaidExecution: true,
|
|
23515
|
+
explicitOmissionAllowed: false,
|
|
23516
|
+
fieldCompletion: "any"
|
|
23517
|
+
},
|
|
23518
|
+
{
|
|
23519
|
+
slot: "locale",
|
|
23520
|
+
askBeforePaidExecution: true,
|
|
23521
|
+
explicitOmissionAllowed: false,
|
|
23522
|
+
fieldCompletion: "all"
|
|
23523
|
+
},
|
|
23524
|
+
{
|
|
23525
|
+
slot: "sales_context",
|
|
23526
|
+
askBeforePaidExecution: true,
|
|
23527
|
+
explicitOmissionAllowed: true,
|
|
23528
|
+
fieldCompletion: "any",
|
|
23529
|
+
completionFields: [
|
|
23530
|
+
"salesAngle"
|
|
23531
|
+
]
|
|
23532
|
+
},
|
|
23533
|
+
{
|
|
23534
|
+
slot: "commercial_offer",
|
|
23535
|
+
askBeforePaidExecution: true,
|
|
23536
|
+
explicitOmissionAllowed: true,
|
|
23537
|
+
fieldCompletion: "all"
|
|
23538
|
+
}
|
|
23539
|
+
]
|
|
23540
|
+
),
|
|
23484
23541
|
defineCapability(
|
|
23485
23542
|
"generate_video_creative",
|
|
23486
23543
|
// MCP 8.6.0: + storyteller narrative family and animationStyle axis.
|
|
@@ -29250,7 +29307,7 @@ var ApiClient = class {
|
|
|
29250
29307
|
};
|
|
29251
29308
|
|
|
29252
29309
|
// src/index.ts
|
|
29253
|
-
var MCP_VERSION = "12.
|
|
29310
|
+
var MCP_VERSION = "12.4.0";
|
|
29254
29311
|
|
|
29255
29312
|
// src/meta-upload-app.ts
|
|
29256
29313
|
import { readFileSync } from "fs";
|
|
@@ -30248,7 +30305,7 @@ __name(resolveMediaRef, "resolveMediaRef");
|
|
|
30248
30305
|
import { z as z132 } from "zod";
|
|
30249
30306
|
var Lang = z132.string().regex(/^[a-z]{2}(?:[-_][a-zA-Z]{2})?$/, "Usa un c\xF3digo de idioma BCP-47, por ejemplo es, en-US o pt-BR").max(10);
|
|
30250
30307
|
var Country = z132.string().min(2).max(3);
|
|
30251
|
-
var LandingStrategyEnum =
|
|
30308
|
+
var LandingStrategyEnum = SelectableLandingStrategySchema;
|
|
30252
30309
|
var LandingImageFormatEnum = LandingImageFormatSchema;
|
|
30253
30310
|
var VideoPresetEnum = VideoPreset.extract([
|
|
30254
30311
|
"auto",
|
|
@@ -30591,6 +30648,9 @@ var McpErrorCode = {
|
|
|
30591
30648
|
// Auth / API key
|
|
30592
30649
|
INVALID_API_KEY: "INVALID_API_KEY",
|
|
30593
30650
|
REVOKED_API_KEY: "REVOKED_API_KEY",
|
|
30651
|
+
// The session id has no account row (a linked account moved it); signing
|
|
30652
|
+
// in again runs the user sync that restores it.
|
|
30653
|
+
USER_NOT_PROVISIONED: "USER_NOT_PROVISIONED",
|
|
30594
30654
|
// Rate limit / quota
|
|
30595
30655
|
RATE_LIMITED: "RATE_LIMITED",
|
|
30596
30656
|
CREDIT_ADMISSION_UNAVAILABLE: "CREDIT_ADMISSION_UNAVAILABLE",
|
|
@@ -30871,6 +30931,7 @@ var CODE_MESSAGES = {
|
|
|
30871
30931
|
PRODUCT_RESEARCH_IDEMPOTENCY_CONFLICT: "A product research run with the same country and category is already running. Check it with `list_product_research_runs` instead of starting a new paid run.",
|
|
30872
30932
|
// API key
|
|
30873
30933
|
INVALID_API_KEY: "Invalid API key. Check your PM_API_KEY in the MCP client configuration.",
|
|
30934
|
+
USER_NOT_PROVISIONED: "This ProductMaker session points to an account that moved to another sign-in method. Sign in to ProductMaker again (reconnect the MCP or log in at productmaker.app), then retry. Do not change the API key.",
|
|
30874
30935
|
REVOKED_API_KEY: "API key revoked. Generate a new one at https://productmaker.app/account/api-keys.",
|
|
30875
30936
|
// Rate
|
|
30876
30937
|
RATE_LIMITED: "Too many requests. Wait a few seconds.",
|
|
@@ -31029,6 +31090,7 @@ var INVALID_PARAM_CODES = /* @__PURE__ */ new Set([
|
|
|
31029
31090
|
McpErrorCode.NO_META_AD_ACCOUNTS
|
|
31030
31091
|
]);
|
|
31031
31092
|
var PASSTHROUGH_CODES = /* @__PURE__ */ new Set([
|
|
31093
|
+
McpErrorCode.USER_NOT_PROVISIONED,
|
|
31032
31094
|
McpErrorCode.CREDIT_ADMISSION_UNAVAILABLE,
|
|
31033
31095
|
McpErrorCode.INSUFFICIENT_CREDITS,
|
|
31034
31096
|
McpErrorCode.TASK_QUOTA_EXCEEDED,
|
|
@@ -33264,7 +33326,7 @@ var CreateProductTaskInput = z137.object({
|
|
|
33264
33326
|
creativeDirection: z137.string().max(500).optional().describe('Opcional. Direcci\xF3n creativa en texto libre (colores, mood, estilo) que aplica a los outputs de IMAGEN y LANDING (no al video \u2014 el estilo/ambiente del video se dirige con scriptNotes). M\xC1XIMA PRIORIDAD: anula marca, colores y estilo por defecto. Ej. "amarillo y azul, minimalista". M\xE1x 500 caracteres.'),
|
|
33265
33327
|
headline: z137.string().max(120).optional().describe("Opcional. Titular EXACTO a renderizar. Se imprime tal cual: la IA no lo reescribe, no lo acorta y no lo traduce. Se aplica a las IM\xC1GENES y a la portada de la landing de esta task (el video no lo usa; para el video usa scriptNotes). \xDAsalo cuando el copy es de marca y no es negociable. M\xE1x 120 caracteres. Si lo omites, la IA escribe el titular."),
|
|
33266
33328
|
subheadline: z137.string().max(160).optional().describe("Opcional. Subt\xEDtulo EXACTO a renderizar, misma regla que headline. Independiente: puedes fijar solo el subt\xEDtulo. M\xE1x 160 caracteres."),
|
|
33267
|
-
landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (estructura original probada y recomendada
|
|
33329
|
+
landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (Landing cl\xE1sica de ProductMaker: estructura original probada y recomendada) o "social_proof" (Landing Viral: UGC, WhatsApp, Instagram y evidencia social). Default "classic".'),
|
|
33268
33330
|
landingImageFormat: LandingImageFormatEnum.default("9:16").describe('Opcional. Formato/relaci\xF3n de aspecto de las im\xE1genes de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "9:16" (vertical, por defecto), "4:5" (vertical compacto para feed) o "1:1" (cuadrado). Default "9:16".')
|
|
33269
33331
|
}).strict();
|
|
33270
33332
|
var CreateServiceVideoInput = z137.object({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productmaker/mcp",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "ProductMaker MCP server — cost products, generate landing pages, UGC videos, and ad creatives, and publish to Shopify, Meta Ads, and TikTok Ads.",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"typescript": "^7.0.2",
|
|
68
68
|
"vitest": "5.0.3",
|
|
69
69
|
"@packages/product-economics": "0.1.0",
|
|
70
|
-
"@packages/
|
|
71
|
-
"@packages/
|
|
70
|
+
"@packages/types": "0.1.0",
|
|
71
|
+
"@packages/utils": "0.1.0"
|
|
72
72
|
},
|
|
73
73
|
"publishConfig": {
|
|
74
74
|
"access": "public"
|