@productmaker/mcp 11.5.0 → 11.5.2
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 +5 -0
- package/dist/http.js +59 -10
- package/dist/stdio.js +59 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -303,6 +303,11 @@ The `base64` field was removed. MCP JSON-RPC transports truncate large tool argu
|
|
|
303
303
|
|
|
304
304
|
## Version history
|
|
305
305
|
|
|
306
|
+
### 11.5.1 — Copy junto a cada pieza de servicios
|
|
307
|
+
|
|
308
|
+
Los resultados de videos e imágenes de servicios incluyen texto para publicar
|
|
309
|
+
junto a cada pieza. Los formatos y controles de generación existentes se conservan.
|
|
310
|
+
|
|
306
311
|
### 11.5.0 — El WhatsApp de la marca
|
|
307
312
|
|
|
308
313
|
- `create_brand` `status`/`list`: el resumen de la marca incluye `whatsapp` (E.164) cuando el negocio lo dio en la marca o el análisis lo encontró en su página. Una landing creada desde esa marca ya empieza con ese WhatsApp como canal de contacto: el modelo no debe volver a pedirlo.
|
package/dist/http.js
CHANGED
|
@@ -5351,9 +5351,20 @@ var AdCreative = z23.object({
|
|
|
5351
5351
|
/** One-to-one with `variants`: null for ProductMaker-original images and the
|
|
5352
5352
|
* evidence tier for the competitor-reference variant. */
|
|
5353
5353
|
variantSignals: z23.array(ImageWinnerSignal.nullable()).optional(),
|
|
5354
|
+
/** Caption for each delivered service image, aligned with variants. */
|
|
5355
|
+
adCopies: z23.array(z23.string().trim().min(1)).optional(),
|
|
5354
5356
|
createdAt: z23.string().datetime().optional(),
|
|
5355
5357
|
adCopy: z23.string().optional()
|
|
5356
5358
|
}).superRefine((creative, ctx) => {
|
|
5359
|
+
if (creative.adCopies !== void 0 && creative.adCopies.length !== creative.variants?.length) {
|
|
5360
|
+
ctx.addIssue({
|
|
5361
|
+
code: z23.ZodIssueCode.custom,
|
|
5362
|
+
path: [
|
|
5363
|
+
"adCopies"
|
|
5364
|
+
],
|
|
5365
|
+
message: "adCopies must align one-to-one with variants"
|
|
5366
|
+
});
|
|
5367
|
+
}
|
|
5357
5368
|
if (creative.variantSignals !== void 0 && (creative.variants === void 0 || creative.variantSignals.length !== creative.variants.length)) {
|
|
5358
5369
|
ctx.addIssue({
|
|
5359
5370
|
code: z23.ZodIssueCode.custom,
|
|
@@ -5375,6 +5386,7 @@ var ImageCreativeCopy = z23.object({
|
|
|
5375
5386
|
}).partial();
|
|
5376
5387
|
var ImageCreativeVariant = z23.object({
|
|
5377
5388
|
id: z23.string(),
|
|
5389
|
+
adCopy: z23.string().optional(),
|
|
5378
5390
|
url: z23.string().url(),
|
|
5379
5391
|
downloadUrl: z23.string().url().optional()
|
|
5380
5392
|
});
|
|
@@ -13263,9 +13275,16 @@ var MetaTrackingOwnerSchema = z66.enum([
|
|
|
13263
13275
|
var MetaTrackingPixelSchema = z66.object({
|
|
13264
13276
|
pixelId: z66.string().regex(/^[1-9]\d{0,31}$/),
|
|
13265
13277
|
initiateCheckout: MetaTrackingOwnerSchema,
|
|
13266
|
-
addToCart: MetaTrackingOwnerSchema
|
|
13278
|
+
addToCart: MetaTrackingOwnerSchema,
|
|
13279
|
+
/** Explicit adoption of an existing, server-verified manual installation. */
|
|
13280
|
+
bootstrap: z66.enum([
|
|
13281
|
+
"productmaker",
|
|
13282
|
+
"external"
|
|
13283
|
+
]).optional(),
|
|
13284
|
+
pageView: MetaTrackingOwnerSchema.optional(),
|
|
13285
|
+
viewContent: MetaTrackingOwnerSchema.optional()
|
|
13267
13286
|
}).strict();
|
|
13268
|
-
|
|
13287
|
+
function validateMetaTrackingPixelCollection(pixels, ctx) {
|
|
13269
13288
|
if (new Set(pixels.map((pixel) => pixel.pixelId)).size !== pixels.length) {
|
|
13270
13289
|
ctx.addIssue({
|
|
13271
13290
|
code: z66.ZodIssueCode.custom,
|
|
@@ -13278,12 +13297,29 @@ var pixelsSchema = z66.array(MetaTrackingPixelSchema).max(20).superRefine((pixel
|
|
|
13278
13297
|
message: "Policy exceeds 8 KiB"
|
|
13279
13298
|
});
|
|
13280
13299
|
}
|
|
13281
|
-
}
|
|
13300
|
+
}
|
|
13301
|
+
__name(validateMetaTrackingPixelCollection, "validateMetaTrackingPixelCollection");
|
|
13302
|
+
var pixelsSchema = z66.array(MetaTrackingPixelSchema).max(20).superRefine(validateMetaTrackingPixelCollection);
|
|
13282
13303
|
var MetaTrackingPolicySchema = z66.object({
|
|
13283
13304
|
schemaVersion: z66.literal(1),
|
|
13284
13305
|
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13285
13306
|
pixels: pixelsSchema
|
|
13286
13307
|
}).strict();
|
|
13308
|
+
var MetaTrackingPolicyV1PixelSchema = MetaTrackingPixelSchema.omit({
|
|
13309
|
+
bootstrap: true,
|
|
13310
|
+
pageView: true,
|
|
13311
|
+
viewContent: true
|
|
13312
|
+
});
|
|
13313
|
+
var MetaTrackingPolicyV1ProjectionSchema = z66.object({
|
|
13314
|
+
schemaVersion: z66.literal(1),
|
|
13315
|
+
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13316
|
+
pixels: z66.array(MetaTrackingPolicyV1PixelSchema).max(20).superRefine(validateMetaTrackingPixelCollection)
|
|
13317
|
+
}).strict();
|
|
13318
|
+
var MetaTrackingPolicyV2Schema = z66.object({
|
|
13319
|
+
schemaVersion: z66.literal(2),
|
|
13320
|
+
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13321
|
+
pixels: pixelsSchema
|
|
13322
|
+
}).strict();
|
|
13287
13323
|
var MetaTrackingUpdateSchema = z66.object({
|
|
13288
13324
|
pixels: pixelsSchema,
|
|
13289
13325
|
expectedDigest: z66.string().min(1).max(256).nullable()
|
|
@@ -18981,7 +19017,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
18981
19017
|
], [
|
|
18982
19018
|
"service_landing"
|
|
18983
19019
|
], MCP_ONLY_CHANNEL_EXPOSURE),
|
|
18984
|
-
defineCapability("create_service_images", "
|
|
19020
|
+
defineCapability("create_service_images", "c36653d6744c38aa43cd7ddad34481526651a09590de5bb62d1061e39dd537c3", "credit_consuming", "creative", [
|
|
18985
19021
|
"credit_consuming",
|
|
18986
19022
|
"state_change"
|
|
18987
19023
|
], [
|
|
@@ -22198,7 +22234,9 @@ var WebsiteCaptureResponseSchema = z109.object({
|
|
|
22198
22234
|
var WebsiteCaptureJobSchema = WebsiteCaptureRequestSchema.extend({
|
|
22199
22235
|
captureId: z109.string().uuid(),
|
|
22200
22236
|
attempt: z109.number().int().positive(),
|
|
22201
|
-
leaseUntil: z109.string().datetime()
|
|
22237
|
+
leaseUntil: z109.string().datetime(),
|
|
22238
|
+
/** Public profile document prepared by the API; never contains a provider credential. */
|
|
22239
|
+
socialProfileHtml: z109.string().max(2e5).optional()
|
|
22202
22240
|
});
|
|
22203
22241
|
var WebsiteCaptureClaimResponseSchema = z109.object({
|
|
22204
22242
|
capture: WebsiteCaptureJobSchema.nullable()
|
|
@@ -24146,7 +24184,7 @@ var ApiClient = class {
|
|
|
24146
24184
|
};
|
|
24147
24185
|
|
|
24148
24186
|
// src/index.ts
|
|
24149
|
-
var MCP_VERSION = "11.5.
|
|
24187
|
+
var MCP_VERSION = "11.5.2";
|
|
24150
24188
|
|
|
24151
24189
|
// src/meta-upload-app.ts
|
|
24152
24190
|
import { readFileSync } from "fs";
|
|
@@ -25873,9 +25911,13 @@ async function fetchTaskOutputs(api, taskId, options) {
|
|
|
25873
25911
|
const variants = raw.adCreative?.variants ?? [];
|
|
25874
25912
|
const hasVariants = variants.some((v) => typeof v === "string");
|
|
25875
25913
|
if (hasVariants) {
|
|
25876
|
-
for (const variant of variants) {
|
|
25914
|
+
for (const [index, variant] of variants.entries()) {
|
|
25915
|
+
const adCopy = raw.adCreative?.adCopies?.[index];
|
|
25877
25916
|
if (typeof variant === "string") images.push({
|
|
25878
|
-
url: variant
|
|
25917
|
+
url: variant,
|
|
25918
|
+
...adCopy ? {
|
|
25919
|
+
adCopy
|
|
25920
|
+
} : {}
|
|
25879
25921
|
});
|
|
25880
25922
|
}
|
|
25881
25923
|
} else if (raw.adCreative?.url) {
|
|
@@ -25914,6 +25956,7 @@ function renderOutputsMarkdown(outputs) {
|
|
|
25914
25956
|
outputs.images.forEach((img, i) => {
|
|
25915
25957
|
parts.push(``);
|
|
25916
25958
|
parts.push(`[\u2B07 Descargar v${i}](${img.url})`);
|
|
25959
|
+
if (img.adCopy) parts.push(`Copy: ${img.adCopy}`);
|
|
25917
25960
|
});
|
|
25918
25961
|
}
|
|
25919
25962
|
if (outputs.adCopy) {
|
|
@@ -26844,6 +26887,8 @@ var AnimatedVideoResultSchema = z114.object({
|
|
|
26844
26887
|
]),
|
|
26845
26888
|
serviceMode: z114.literal("motion_graphics"),
|
|
26846
26889
|
finalMp4Url: z114.string().optional(),
|
|
26890
|
+
adCopy: z114.string().optional(),
|
|
26891
|
+
adCopies: z114.array(z114.string()).optional(),
|
|
26847
26892
|
error: z114.string().optional(),
|
|
26848
26893
|
motionGraphics: z114.object({
|
|
26849
26894
|
stage: MotionGraphicsStageSchema,
|
|
@@ -26956,10 +27001,14 @@ function renderAnimatedVideoStatus(result) {
|
|
|
26956
27001
|
const label = variantUrls.length > 0 ? "Gancho 1" : "Video final";
|
|
26957
27002
|
lines.push(`${label} (MP4): ${result.finalMp4Url}`);
|
|
26958
27003
|
lines.push(`[Descargar ${label.toLowerCase()}](${result.finalMp4Url})`);
|
|
27004
|
+
const copy = result.adCopies?.[0] || result.adCopy;
|
|
27005
|
+
if (copy) lines.push(`Copy: ${copy}`);
|
|
26959
27006
|
}
|
|
26960
27007
|
variantUrls.forEach((url, index) => {
|
|
26961
27008
|
lines.push(`Gancho ${index + 2} (MP4): ${url}`);
|
|
26962
27009
|
lines.push(`[Descargar gancho ${index + 2}](${url})`);
|
|
27010
|
+
const copy = result.adCopies?.[index + 1] || result.adCopy;
|
|
27011
|
+
if (copy) lines.push(`Copy: ${copy}`);
|
|
26963
27012
|
});
|
|
26964
27013
|
const delivered = (result.finalMp4Url ? 1 : 0) + variantUrls.length;
|
|
26965
27014
|
if (orderedHooks > delivered) {
|
|
@@ -29110,7 +29159,7 @@ var CreateServiceImagesInput = z119.object({
|
|
|
29110
29159
|
"en",
|
|
29111
29160
|
"pt"
|
|
29112
29161
|
]).optional().describe("Idioma de los textos de la imagen (por defecto es)."),
|
|
29113
|
-
adCopy: z119.boolean().optional().describe("
|
|
29162
|
+
adCopy: z119.boolean().optional().describe("Compatibilidad con clientes anteriores: el copy para publicar siempre est\xE1 incluido en cada imagen de servicios."),
|
|
29114
29163
|
confirmed: z119.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio y que el usuario acepte. Sin confirmed, solo cotiza y no cobra.")
|
|
29115
29164
|
}).strict();
|
|
29116
29165
|
function serviceImageModel(quality) {
|
|
@@ -29144,7 +29193,7 @@ function registerServiceImageTools(server, api, options = {}) {
|
|
|
29144
29193
|
throw mcp(McpErrorCode.INVALID_INPUT, `${tierError} Usa quality="standard" o otro formato. No se cobr\xF3 nada.`);
|
|
29145
29194
|
}
|
|
29146
29195
|
const language = LANGUAGE_TAGS[input.language ?? "es"];
|
|
29147
|
-
const adCopy =
|
|
29196
|
+
const adCopy = true;
|
|
29148
29197
|
const estimate = await api.postJson("/v1/billing/estimate", {
|
|
29149
29198
|
type: "image-creative",
|
|
29150
29199
|
options: {
|
package/dist/stdio.js
CHANGED
|
@@ -5373,9 +5373,20 @@ var AdCreative = z23.object({
|
|
|
5373
5373
|
/** One-to-one with `variants`: null for ProductMaker-original images and the
|
|
5374
5374
|
* evidence tier for the competitor-reference variant. */
|
|
5375
5375
|
variantSignals: z23.array(ImageWinnerSignal.nullable()).optional(),
|
|
5376
|
+
/** Caption for each delivered service image, aligned with variants. */
|
|
5377
|
+
adCopies: z23.array(z23.string().trim().min(1)).optional(),
|
|
5376
5378
|
createdAt: z23.string().datetime().optional(),
|
|
5377
5379
|
adCopy: z23.string().optional()
|
|
5378
5380
|
}).superRefine((creative, ctx) => {
|
|
5381
|
+
if (creative.adCopies !== void 0 && creative.adCopies.length !== creative.variants?.length) {
|
|
5382
|
+
ctx.addIssue({
|
|
5383
|
+
code: z23.ZodIssueCode.custom,
|
|
5384
|
+
path: [
|
|
5385
|
+
"adCopies"
|
|
5386
|
+
],
|
|
5387
|
+
message: "adCopies must align one-to-one with variants"
|
|
5388
|
+
});
|
|
5389
|
+
}
|
|
5379
5390
|
if (creative.variantSignals !== void 0 && (creative.variants === void 0 || creative.variantSignals.length !== creative.variants.length)) {
|
|
5380
5391
|
ctx.addIssue({
|
|
5381
5392
|
code: z23.ZodIssueCode.custom,
|
|
@@ -5397,6 +5408,7 @@ var ImageCreativeCopy = z23.object({
|
|
|
5397
5408
|
}).partial();
|
|
5398
5409
|
var ImageCreativeVariant = z23.object({
|
|
5399
5410
|
id: z23.string(),
|
|
5411
|
+
adCopy: z23.string().optional(),
|
|
5400
5412
|
url: z23.string().url(),
|
|
5401
5413
|
downloadUrl: z23.string().url().optional()
|
|
5402
5414
|
});
|
|
@@ -13285,9 +13297,16 @@ var MetaTrackingOwnerSchema = z66.enum([
|
|
|
13285
13297
|
var MetaTrackingPixelSchema = z66.object({
|
|
13286
13298
|
pixelId: z66.string().regex(/^[1-9]\d{0,31}$/),
|
|
13287
13299
|
initiateCheckout: MetaTrackingOwnerSchema,
|
|
13288
|
-
addToCart: MetaTrackingOwnerSchema
|
|
13300
|
+
addToCart: MetaTrackingOwnerSchema,
|
|
13301
|
+
/** Explicit adoption of an existing, server-verified manual installation. */
|
|
13302
|
+
bootstrap: z66.enum([
|
|
13303
|
+
"productmaker",
|
|
13304
|
+
"external"
|
|
13305
|
+
]).optional(),
|
|
13306
|
+
pageView: MetaTrackingOwnerSchema.optional(),
|
|
13307
|
+
viewContent: MetaTrackingOwnerSchema.optional()
|
|
13289
13308
|
}).strict();
|
|
13290
|
-
|
|
13309
|
+
function validateMetaTrackingPixelCollection(pixels, ctx) {
|
|
13291
13310
|
if (new Set(pixels.map((pixel) => pixel.pixelId)).size !== pixels.length) {
|
|
13292
13311
|
ctx.addIssue({
|
|
13293
13312
|
code: z66.ZodIssueCode.custom,
|
|
@@ -13300,12 +13319,29 @@ var pixelsSchema = z66.array(MetaTrackingPixelSchema).max(20).superRefine((pixel
|
|
|
13300
13319
|
message: "Policy exceeds 8 KiB"
|
|
13301
13320
|
});
|
|
13302
13321
|
}
|
|
13303
|
-
}
|
|
13322
|
+
}
|
|
13323
|
+
__name(validateMetaTrackingPixelCollection, "validateMetaTrackingPixelCollection");
|
|
13324
|
+
var pixelsSchema = z66.array(MetaTrackingPixelSchema).max(20).superRefine(validateMetaTrackingPixelCollection);
|
|
13304
13325
|
var MetaTrackingPolicySchema = z66.object({
|
|
13305
13326
|
schemaVersion: z66.literal(1),
|
|
13306
13327
|
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13307
13328
|
pixels: pixelsSchema
|
|
13308
13329
|
}).strict();
|
|
13330
|
+
var MetaTrackingPolicyV1PixelSchema = MetaTrackingPixelSchema.omit({
|
|
13331
|
+
bootstrap: true,
|
|
13332
|
+
pageView: true,
|
|
13333
|
+
viewContent: true
|
|
13334
|
+
});
|
|
13335
|
+
var MetaTrackingPolicyV1ProjectionSchema = z66.object({
|
|
13336
|
+
schemaVersion: z66.literal(1),
|
|
13337
|
+
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13338
|
+
pixels: z66.array(MetaTrackingPolicyV1PixelSchema).max(20).superRefine(validateMetaTrackingPixelCollection)
|
|
13339
|
+
}).strict();
|
|
13340
|
+
var MetaTrackingPolicyV2Schema = z66.object({
|
|
13341
|
+
schemaVersion: z66.literal(2),
|
|
13342
|
+
revision: z66.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
|
|
13343
|
+
pixels: pixelsSchema
|
|
13344
|
+
}).strict();
|
|
13309
13345
|
var MetaTrackingUpdateSchema = z66.object({
|
|
13310
13346
|
pixels: pixelsSchema,
|
|
13311
13347
|
expectedDigest: z66.string().min(1).max(256).nullable()
|
|
@@ -19003,7 +19039,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
|
|
|
19003
19039
|
], [
|
|
19004
19040
|
"service_landing"
|
|
19005
19041
|
], MCP_ONLY_CHANNEL_EXPOSURE),
|
|
19006
|
-
defineCapability("create_service_images", "
|
|
19042
|
+
defineCapability("create_service_images", "c36653d6744c38aa43cd7ddad34481526651a09590de5bb62d1061e39dd537c3", "credit_consuming", "creative", [
|
|
19007
19043
|
"credit_consuming",
|
|
19008
19044
|
"state_change"
|
|
19009
19045
|
], [
|
|
@@ -21966,7 +22002,9 @@ var WebsiteCaptureResponseSchema = z109.object({
|
|
|
21966
22002
|
var WebsiteCaptureJobSchema = WebsiteCaptureRequestSchema.extend({
|
|
21967
22003
|
captureId: z109.string().uuid(),
|
|
21968
22004
|
attempt: z109.number().int().positive(),
|
|
21969
|
-
leaseUntil: z109.string().datetime()
|
|
22005
|
+
leaseUntil: z109.string().datetime(),
|
|
22006
|
+
/** Public profile document prepared by the API; never contains a provider credential. */
|
|
22007
|
+
socialProfileHtml: z109.string().max(2e5).optional()
|
|
21970
22008
|
});
|
|
21971
22009
|
var WebsiteCaptureClaimResponseSchema = z109.object({
|
|
21972
22010
|
capture: WebsiteCaptureJobSchema.nullable()
|
|
@@ -22475,7 +22513,7 @@ var ApiClient = class {
|
|
|
22475
22513
|
};
|
|
22476
22514
|
|
|
22477
22515
|
// src/index.ts
|
|
22478
|
-
var MCP_VERSION = "11.5.
|
|
22516
|
+
var MCP_VERSION = "11.5.2";
|
|
22479
22517
|
|
|
22480
22518
|
// src/meta-upload-app.ts
|
|
22481
22519
|
import { readFileSync } from "fs";
|
|
@@ -24255,9 +24293,13 @@ async function fetchTaskOutputs(api, taskId, options) {
|
|
|
24255
24293
|
const variants = raw.adCreative?.variants ?? [];
|
|
24256
24294
|
const hasVariants = variants.some((v) => typeof v === "string");
|
|
24257
24295
|
if (hasVariants) {
|
|
24258
|
-
for (const variant of variants) {
|
|
24296
|
+
for (const [index, variant] of variants.entries()) {
|
|
24297
|
+
const adCopy = raw.adCreative?.adCopies?.[index];
|
|
24259
24298
|
if (typeof variant === "string") images.push({
|
|
24260
|
-
url: variant
|
|
24299
|
+
url: variant,
|
|
24300
|
+
...adCopy ? {
|
|
24301
|
+
adCopy
|
|
24302
|
+
} : {}
|
|
24261
24303
|
});
|
|
24262
24304
|
}
|
|
24263
24305
|
} else if (raw.adCreative?.url) {
|
|
@@ -24296,6 +24338,7 @@ function renderOutputsMarkdown(outputs) {
|
|
|
24296
24338
|
outputs.images.forEach((img, i) => {
|
|
24297
24339
|
parts.push(``);
|
|
24298
24340
|
parts.push(`[\u2B07 Descargar v${i}](${img.url})`);
|
|
24341
|
+
if (img.adCopy) parts.push(`Copy: ${img.adCopy}`);
|
|
24299
24342
|
});
|
|
24300
24343
|
}
|
|
24301
24344
|
if (outputs.adCopy) {
|
|
@@ -25226,6 +25269,8 @@ var AnimatedVideoResultSchema = z113.object({
|
|
|
25226
25269
|
]),
|
|
25227
25270
|
serviceMode: z113.literal("motion_graphics"),
|
|
25228
25271
|
finalMp4Url: z113.string().optional(),
|
|
25272
|
+
adCopy: z113.string().optional(),
|
|
25273
|
+
adCopies: z113.array(z113.string()).optional(),
|
|
25229
25274
|
error: z113.string().optional(),
|
|
25230
25275
|
motionGraphics: z113.object({
|
|
25231
25276
|
stage: MotionGraphicsStageSchema,
|
|
@@ -25338,10 +25383,14 @@ function renderAnimatedVideoStatus(result) {
|
|
|
25338
25383
|
const label = variantUrls.length > 0 ? "Gancho 1" : "Video final";
|
|
25339
25384
|
lines.push(`${label} (MP4): ${result.finalMp4Url}`);
|
|
25340
25385
|
lines.push(`[Descargar ${label.toLowerCase()}](${result.finalMp4Url})`);
|
|
25386
|
+
const copy = result.adCopies?.[0] || result.adCopy;
|
|
25387
|
+
if (copy) lines.push(`Copy: ${copy}`);
|
|
25341
25388
|
}
|
|
25342
25389
|
variantUrls.forEach((url, index) => {
|
|
25343
25390
|
lines.push(`Gancho ${index + 2} (MP4): ${url}`);
|
|
25344
25391
|
lines.push(`[Descargar gancho ${index + 2}](${url})`);
|
|
25392
|
+
const copy = result.adCopies?.[index + 1] || result.adCopy;
|
|
25393
|
+
if (copy) lines.push(`Copy: ${copy}`);
|
|
25345
25394
|
});
|
|
25346
25395
|
const delivered = (result.finalMp4Url ? 1 : 0) + variantUrls.length;
|
|
25347
25396
|
if (orderedHooks > delivered) {
|
|
@@ -27492,7 +27541,7 @@ var CreateServiceImagesInput = z118.object({
|
|
|
27492
27541
|
"en",
|
|
27493
27542
|
"pt"
|
|
27494
27543
|
]).optional().describe("Idioma de los textos de la imagen (por defecto es)."),
|
|
27495
|
-
adCopy: z118.boolean().optional().describe("
|
|
27544
|
+
adCopy: z118.boolean().optional().describe("Compatibilidad con clientes anteriores: el copy para publicar siempre est\xE1 incluido en cada imagen de servicios."),
|
|
27496
27545
|
confirmed: z118.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio y que el usuario acepte. Sin confirmed, solo cotiza y no cobra.")
|
|
27497
27546
|
}).strict();
|
|
27498
27547
|
function serviceImageModel(quality) {
|
|
@@ -27526,7 +27575,7 @@ function registerServiceImageTools(server, api, options = {}) {
|
|
|
27526
27575
|
throw mcp(McpErrorCode.INVALID_INPUT, `${tierError} Usa quality="standard" o otro formato. No se cobr\xF3 nada.`);
|
|
27527
27576
|
}
|
|
27528
27577
|
const language = LANGUAGE_TAGS[input.language ?? "es"];
|
|
27529
|
-
const adCopy =
|
|
27578
|
+
const adCopy = true;
|
|
27530
27579
|
const estimate = await api.postJson("/v1/billing/estimate", {
|
|
27531
27580
|
type: "image-creative",
|
|
27532
27581
|
options: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productmaker/mcp",
|
|
3
|
-
"version": "11.5.
|
|
3
|
+
"version": "11.5.2",
|
|
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.",
|