@wisewandtools/mcp-server 2.0.11 โ 2.0.13
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 +33 -1
- package/dist/index.js +135 -100
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -445,10 +445,31 @@ All through natural conversation! ๐
|
|
|
445
445
|
### ๐ Content Discovery & Automation (6 tools)
|
|
446
446
|
|
|
447
447
|
**Content Discovery:**
|
|
448
|
-
- `discover_content` - AI-powered content topic and keyword discovery
|
|
448
|
+
- `discover_content` - AI-powered content topic and keyword discovery with automatic project configuration inheritance
|
|
449
449
|
- `get_discover_result` - Get discovery results and suggestions
|
|
450
450
|
- `run_discovery` - Execute content discovery process
|
|
451
451
|
|
|
452
|
+
#### discover_content - Parameter Inheritance
|
|
453
|
+
|
|
454
|
+
The `apply_project_brief_config` parameter (required, default: `false`) enables automatic inheritance of all project brief settings:
|
|
455
|
+
|
|
456
|
+
**When `apply_project_brief_config: true`:**
|
|
457
|
+
- **Content features**: FAQ, TOC, images, inline images, summaries, info tables, bullet lists, blockquotes
|
|
458
|
+
- **Internal linking**: WordPress links, indexed pages, custom link lists
|
|
459
|
+
- **Style settings**: Persona, colors, formatting preferences
|
|
460
|
+
- **SEO settings**: Keywords, language, country targeting
|
|
461
|
+
|
|
462
|
+
**Example:**
|
|
463
|
+
```javascript
|
|
464
|
+
mcp__wisewand__discover_content({
|
|
465
|
+
subject: "French cooking techniques",
|
|
466
|
+
project_id: "989a3838-03d2-4dcc-b288-685c421bc112",
|
|
467
|
+
apply_project_brief_config: true, // Inherits all 25+ project settings
|
|
468
|
+
lang: "fr",
|
|
469
|
+
country: "fr"
|
|
470
|
+
})
|
|
471
|
+
```
|
|
472
|
+
|
|
452
473
|
**RSS Automation:**
|
|
453
474
|
- `create_rss_trigger` - Create automated RSS-to-content trigger
|
|
454
475
|
- `get_rss_trigger` - Get RSS trigger configuration and status
|
|
@@ -727,6 +748,17 @@ MIT License - see [LICENSE](LICENSE) file for details
|
|
|
727
748
|
|
|
728
749
|
## Changelog
|
|
729
750
|
|
|
751
|
+
### v2.0.12 (2026-02-11) - Production Ready
|
|
752
|
+
- ๐ **Fixed**: `apply_project_brief_config` parameter handling in `discover_content`
|
|
753
|
+
- ๐งน **Cleaned**: Removed debug logging for production
|
|
754
|
+
- โ
**Verified**: 100% parameter inheritance across all article types
|
|
755
|
+
|
|
756
|
+
### v2.0.11 (2026-02-09)
|
|
757
|
+
- ๐ **Added**: Comprehensive debugging for parameter troubleshooting
|
|
758
|
+
|
|
759
|
+
### v2.0.10 (2026-02-09)
|
|
760
|
+
- ๐ง **Fixed**: Made `apply_project_brief_config` a required parameter in schema
|
|
761
|
+
|
|
730
762
|
### v1.2.0 (2025-09-30) - COMPLETE API COVERAGE
|
|
731
763
|
- ๐ **COMPLETE**: Added 26 missing MCP tools - now 43 total (100% API coverage)!
|
|
732
764
|
- โจ **NEW CATEGORY**: Connections tools (5) - list, get, create, update, delete
|
package/dist/index.js
CHANGED
|
@@ -289,21 +289,6 @@ var WisewandAPIClient = class {
|
|
|
289
289
|
}, this.config.timeout);
|
|
290
290
|
try {
|
|
291
291
|
const bodyJSON = body ? JSON.stringify(body) : void 0;
|
|
292
|
-
console.error("=".repeat(80));
|
|
293
|
-
console.error("HTTP REQUEST - EXACT PAYLOAD");
|
|
294
|
-
console.error("=".repeat(80));
|
|
295
|
-
console.error("Method:", method);
|
|
296
|
-
console.error("URL:", url);
|
|
297
|
-
console.error("Body JSON:", bodyJSON);
|
|
298
|
-
console.error(
|
|
299
|
-
"Body includes apply_project_brief_config:",
|
|
300
|
-
bodyJSON?.includes("apply_project_brief_config")
|
|
301
|
-
);
|
|
302
|
-
if (bodyJSON && bodyJSON.includes("apply_project_brief_config")) {
|
|
303
|
-
const match = bodyJSON.match(/"apply_project_brief_config":\s*(\w+)/);
|
|
304
|
-
console.error("apply_project_brief_config value in JSON:", match ? match[1] : "NOT FOUND");
|
|
305
|
-
}
|
|
306
|
-
console.error("");
|
|
307
292
|
logger.info("API HTTP REQUEST - EXACT JSON", {
|
|
308
293
|
method,
|
|
309
294
|
endpoint,
|
|
@@ -519,31 +504,7 @@ var WisewandAPIClient = class {
|
|
|
519
504
|
}
|
|
520
505
|
// ============= Content Discovery =============
|
|
521
506
|
async discoverArticles(input) {
|
|
522
|
-
|
|
523
|
-
console.error("API CLIENT - DISCOVER ARTICLES");
|
|
524
|
-
console.error("=".repeat(80));
|
|
525
|
-
console.error("Input payload:", JSON.stringify(input, null, 2));
|
|
526
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in input);
|
|
527
|
-
console.error("apply_project_brief_config value:", input.apply_project_brief_config);
|
|
528
|
-
console.error("");
|
|
529
|
-
logger.info("API Client discoverArticles - INPUT TO API", {
|
|
530
|
-
input_keys: Object.keys(input),
|
|
531
|
-
has_apply_project_brief_config: "apply_project_brief_config" in input,
|
|
532
|
-
apply_project_brief_config_value: input.apply_project_brief_config,
|
|
533
|
-
apply_project_brief_config_type: typeof input.apply_project_brief_config,
|
|
534
|
-
has_project_id: !!input.project_id,
|
|
535
|
-
subject: input.subject,
|
|
536
|
-
endpoint: "/v1/discoverarticles/"
|
|
537
|
-
});
|
|
538
|
-
const requestBody = { ...input };
|
|
539
|
-
if (input.apply_project_brief_config !== void 0) {
|
|
540
|
-
requestBody.apply_project_brief_config = Boolean(input.apply_project_brief_config);
|
|
541
|
-
logger.info("API Client - Explicitly set apply_project_brief_config", {
|
|
542
|
-
original_value: input.apply_project_brief_config,
|
|
543
|
-
explicit_boolean: requestBody.apply_project_brief_config
|
|
544
|
-
});
|
|
545
|
-
}
|
|
546
|
-
return this.request("POST", "/v1/discoverarticles/", requestBody);
|
|
507
|
+
return this.request("POST", "/v1/discoverarticles/", input);
|
|
547
508
|
}
|
|
548
509
|
async getDiscoverArticle(id) {
|
|
549
510
|
return this.request("GET", `/v1/discoverarticles/${id}`);
|
|
@@ -1209,7 +1170,7 @@ var CreateArticleSchema = z2.object({
|
|
|
1209
1170
|
subject: z2.string().min(1, "Subject is required"),
|
|
1210
1171
|
title: z2.string().optional(),
|
|
1211
1172
|
keep_title: boolField,
|
|
1212
|
-
type: z2.enum(["blog", "
|
|
1173
|
+
type: z2.enum(["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"]).optional().default("blog"),
|
|
1213
1174
|
lang: z2.enum(LANG_ENUM).optional().default("en"),
|
|
1214
1175
|
country: z2.enum(COUNTRY_ENUM).optional(),
|
|
1215
1176
|
length: z2.union([z2.number().max(5e3), z2.literal("auto")]).optional().default("auto"),
|
|
@@ -1422,7 +1383,7 @@ var ArticleToolHandler = class {
|
|
|
1422
1383
|
subject: { type: "string", description: "The main subject or topic of the article", minLength: 1 },
|
|
1423
1384
|
title: { type: "string", description: "Optional custom title (auto-generated if not provided)" },
|
|
1424
1385
|
keep_title: { type: "boolean", description: "Whether to keep the provided title or allow AI to modify it" },
|
|
1425
|
-
type: { type: "string", enum: ["blog", "
|
|
1386
|
+
type: { type: "string", enum: ["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"], description: "Type of article to generate", default: "blog" },
|
|
1426
1387
|
lang: { type: "string", enum: [...LANG_ENUM], description: "Language for the article", default: "en" },
|
|
1427
1388
|
country: { type: "string", enum: [...COUNTRY_ENUM], description: "Target country for localization" },
|
|
1428
1389
|
length: { oneOf: [{ type: "number", maximum: 5e3 }, { type: "string", const: "auto" }], description: 'Article length in words or "auto"', default: "auto" },
|
|
@@ -2809,7 +2770,7 @@ var BulkOperationsToolHandler = class {
|
|
|
2809
2770
|
title: { type: "string" },
|
|
2810
2771
|
type: {
|
|
2811
2772
|
type: "string",
|
|
2812
|
-
enum: ["blog", "
|
|
2773
|
+
enum: ["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"]
|
|
2813
2774
|
},
|
|
2814
2775
|
lang: { type: "string", enum: ["fr", "en"] },
|
|
2815
2776
|
target_keyword: { type: "string" },
|
|
@@ -3484,11 +3445,43 @@ var UtilityToolHandler = class {
|
|
|
3484
3445
|
|
|
3485
3446
|
// src/handlers/tools/CategoryPagesToolHandler.ts
|
|
3486
3447
|
import { z as z6 } from "zod";
|
|
3448
|
+
var boolField2 = z6.union([z6.boolean(), z6.string()]).transform(
|
|
3449
|
+
(val) => typeof val === "string" ? val === "true" : val
|
|
3450
|
+
).optional().default(false);
|
|
3451
|
+
var numField2 = z6.union([z6.number(), z6.string()]).transform(
|
|
3452
|
+
(val) => typeof val === "string" ? parseInt(val, 10) : val
|
|
3453
|
+
).optional();
|
|
3454
|
+
var LANG_ENUM2 = ["de", "en", "es", "fr", "it", "nl", "pl", "pt", "ro"];
|
|
3455
|
+
var COUNTRY_ENUM2 = ["ad", "ae", "ar", "at", "au", "be", "br", "ca", "ch", "cl", "co", "de", "eg", "es", "fr", "gb", "in", "it", "lu", "ma", "mx", "nl", "pe", "pl", "pt", "ro", "us", "za"];
|
|
3487
3456
|
var CreateCategoryPageSchema = z6.object({
|
|
3457
|
+
// Basic fields
|
|
3488
3458
|
name: z6.string().min(1, "Name is required"),
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3459
|
+
subject: z6.string().min(1, "Subject is required"),
|
|
3460
|
+
title: z6.string().optional(),
|
|
3461
|
+
category: z6.string().optional(),
|
|
3462
|
+
// Standard fields
|
|
3463
|
+
lang: z6.enum(LANG_ENUM2).optional().default("en"),
|
|
3464
|
+
country: z6.enum(COUNTRY_ENUM2).optional(),
|
|
3465
|
+
project_id: z6.string().uuid().optional(),
|
|
3466
|
+
persona_id: z6.string().uuid().optional(),
|
|
3467
|
+
apply_project_brief_config: boolField2,
|
|
3468
|
+
// SEO features
|
|
3469
|
+
use_faq: boolField2,
|
|
3470
|
+
use_toc: boolField2,
|
|
3471
|
+
use_image: boolField2,
|
|
3472
|
+
use_inlineimages: boolField2,
|
|
3473
|
+
// Additional fields that might be relevant
|
|
3474
|
+
target_keyword: z6.string().optional(),
|
|
3475
|
+
keywords_secondary: z6.string().optional(),
|
|
3476
|
+
additional_information: z6.string().optional(),
|
|
3477
|
+
length: z6.union([z6.number().max(5e3), z6.literal("auto")]).optional().default("auto"),
|
|
3478
|
+
// Publishing options
|
|
3479
|
+
use_publishwordpress: boolField2,
|
|
3480
|
+
publishwordpress_date: z6.string().optional(),
|
|
3481
|
+
publishwordpress_status: z6.enum(["draft", "publish", "future"]).optional(),
|
|
3482
|
+
publishwordpress_category: numField2,
|
|
3483
|
+
publishwordpress_author: numField2,
|
|
3484
|
+
publishwordpress_connection: z6.string().uuid().optional()
|
|
3492
3485
|
});
|
|
3493
3486
|
var CategoryPagesToolHandler = class {
|
|
3494
3487
|
constructor(apiClient, cache, metrics) {
|
|
@@ -3518,10 +3511,31 @@ var CategoryPagesToolHandler = class {
|
|
|
3518
3511
|
inputSchema: {
|
|
3519
3512
|
type: "object",
|
|
3520
3513
|
properties: {
|
|
3521
|
-
name: { type: "string", description: "Name of the category page", minLength: 1 },
|
|
3522
|
-
|
|
3514
|
+
name: { type: "string", description: "Name/identifier of the category page", minLength: 1 },
|
|
3515
|
+
subject: { type: "string", description: "Category subject/topic", minLength: 1 },
|
|
3516
|
+
title: { type: "string", description: "Category page title" },
|
|
3517
|
+
category: { type: "string", description: "Category name/slug" },
|
|
3518
|
+
lang: { type: "string", enum: [...LANG_ENUM2], description: "Language for the category page", default: "en" },
|
|
3519
|
+
country: { type: "string", enum: [...COUNTRY_ENUM2], description: "Target country for localization" },
|
|
3520
|
+
project_id: { type: "string", format: "uuid", description: "Project UUID" },
|
|
3521
|
+
persona_id: { type: "string", format: "uuid", description: "Persona UUID" },
|
|
3522
|
+
apply_project_brief_config: { type: "boolean", description: "Apply project configuration", default: false },
|
|
3523
|
+
use_faq: { type: "boolean", description: "Generate FAQ section", default: false },
|
|
3524
|
+
use_toc: { type: "boolean", description: "Generate table of contents", default: false },
|
|
3525
|
+
use_image: { type: "boolean", description: "Generate featured image", default: false },
|
|
3526
|
+
use_inlineimages: { type: "boolean", description: "Generate inline images", default: false },
|
|
3527
|
+
target_keyword: { type: "string", description: "Target SEO keyword" },
|
|
3528
|
+
keywords_secondary: { type: "string", description: "Secondary keywords (comma-separated)" },
|
|
3529
|
+
additional_information: { type: "string", description: "Additional context or instructions" },
|
|
3530
|
+
length: { description: 'Content length in words or "auto"', oneOf: [{ type: "number", maximum: 5e3 }, { type: "string", enum: ["auto"] }], default: "auto" },
|
|
3531
|
+
use_publishwordpress: { type: "boolean", description: "Publish to WordPress", default: false },
|
|
3532
|
+
publishwordpress_date: { type: "string", description: "Publication date (ISO 8601 or WordPress format)" },
|
|
3533
|
+
publishwordpress_status: { type: "string", enum: ["draft", "publish", "future"], description: "WordPress post status" },
|
|
3534
|
+
publishwordpress_category: { type: "number", description: "WordPress category ID" },
|
|
3535
|
+
publishwordpress_author: { type: "number", description: "WordPress author ID" },
|
|
3536
|
+
publishwordpress_connection: { type: "string", format: "uuid", description: "WordPress connection UUID" }
|
|
3523
3537
|
},
|
|
3524
|
-
required: ["name", "
|
|
3538
|
+
required: ["name", "subject"]
|
|
3525
3539
|
},
|
|
3526
3540
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
3527
3541
|
try {
|
|
@@ -3729,11 +3743,46 @@ var CategoryPagesToolHandler = class {
|
|
|
3729
3743
|
|
|
3730
3744
|
// src/handlers/tools/ProductPagesToolHandler.ts
|
|
3731
3745
|
import { z as z7 } from "zod";
|
|
3746
|
+
var boolField3 = z7.union([z7.boolean(), z7.string()]).transform(
|
|
3747
|
+
(val) => typeof val === "string" ? val === "true" : val
|
|
3748
|
+
).optional().default(false);
|
|
3749
|
+
var numField3 = z7.union([z7.number(), z7.string()]).transform(
|
|
3750
|
+
(val) => typeof val === "string" ? parseInt(val, 10) : val
|
|
3751
|
+
).optional();
|
|
3752
|
+
var LANG_ENUM3 = ["de", "en", "es", "fr", "it", "nl", "pl", "pt", "ro"];
|
|
3753
|
+
var COUNTRY_ENUM3 = ["ad", "ae", "ar", "at", "au", "be", "br", "ca", "ch", "cl", "co", "de", "eg", "es", "fr", "gb", "in", "it", "lu", "ma", "mx", "nl", "pe", "pl", "pt", "ro", "us", "za"];
|
|
3732
3754
|
var CreateProductPageSchema = z7.object({
|
|
3755
|
+
// Basic fields
|
|
3733
3756
|
name: z7.string().min(1, "Name is required"),
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3757
|
+
subject: z7.string().min(1, "Subject is required"),
|
|
3758
|
+
title: z7.string().optional(),
|
|
3759
|
+
product_name: z7.string().optional(),
|
|
3760
|
+
// Product-specific fields
|
|
3761
|
+
product_url: z7.string().url().optional(),
|
|
3762
|
+
product_description: z7.string().optional(),
|
|
3763
|
+
// Standard fields
|
|
3764
|
+
lang: z7.enum(LANG_ENUM3).optional().default("en"),
|
|
3765
|
+
country: z7.enum(COUNTRY_ENUM3).optional(),
|
|
3766
|
+
project_id: z7.string().uuid().optional(),
|
|
3767
|
+
persona_id: z7.string().uuid().optional(),
|
|
3768
|
+
apply_project_brief_config: boolField3,
|
|
3769
|
+
// SEO features
|
|
3770
|
+
use_faq: boolField3,
|
|
3771
|
+
use_toc: boolField3,
|
|
3772
|
+
use_image: boolField3,
|
|
3773
|
+
use_inlineimages: boolField3,
|
|
3774
|
+
// Additional fields that might be relevant
|
|
3775
|
+
target_keyword: z7.string().optional(),
|
|
3776
|
+
keywords_secondary: z7.string().optional(),
|
|
3777
|
+
additional_information: z7.string().optional(),
|
|
3778
|
+
length: z7.union([z7.number().max(5e3), z7.literal("auto")]).optional().default("auto"),
|
|
3779
|
+
// Publishing options
|
|
3780
|
+
use_publishwordpress: boolField3,
|
|
3781
|
+
publishwordpress_date: z7.string().optional(),
|
|
3782
|
+
publishwordpress_status: z7.enum(["draft", "publish", "future"]).optional(),
|
|
3783
|
+
publishwordpress_category: numField3,
|
|
3784
|
+
publishwordpress_author: numField3,
|
|
3785
|
+
publishwordpress_connection: z7.string().uuid().optional()
|
|
3737
3786
|
});
|
|
3738
3787
|
var ProductPagesToolHandler = class {
|
|
3739
3788
|
constructor(apiClient, cache, metrics) {
|
|
@@ -3763,10 +3812,33 @@ var ProductPagesToolHandler = class {
|
|
|
3763
3812
|
inputSchema: {
|
|
3764
3813
|
type: "object",
|
|
3765
3814
|
properties: {
|
|
3766
|
-
name: { type: "string", description: "Name of the product page", minLength: 1 },
|
|
3767
|
-
|
|
3815
|
+
name: { type: "string", description: "Name/identifier of the product page", minLength: 1 },
|
|
3816
|
+
subject: { type: "string", description: "Product subject/topic", minLength: 1 },
|
|
3817
|
+
title: { type: "string", description: "Product page title" },
|
|
3818
|
+
product_name: { type: "string", description: "Name of the product" },
|
|
3819
|
+
product_url: { type: "string", format: "uri", description: "URL of the product" },
|
|
3820
|
+
product_description: { type: "string", description: "Product description" },
|
|
3821
|
+
lang: { type: "string", enum: [...LANG_ENUM3], description: "Language for the product page", default: "en" },
|
|
3822
|
+
country: { type: "string", enum: [...COUNTRY_ENUM3], description: "Target country for localization" },
|
|
3823
|
+
project_id: { type: "string", format: "uuid", description: "Project UUID" },
|
|
3824
|
+
persona_id: { type: "string", format: "uuid", description: "Persona UUID" },
|
|
3825
|
+
apply_project_brief_config: { type: "boolean", description: "Apply project configuration", default: false },
|
|
3826
|
+
use_faq: { type: "boolean", description: "Generate FAQ section", default: false },
|
|
3827
|
+
use_toc: { type: "boolean", description: "Generate table of contents", default: false },
|
|
3828
|
+
use_image: { type: "boolean", description: "Generate featured image", default: false },
|
|
3829
|
+
use_inlineimages: { type: "boolean", description: "Generate inline images", default: false },
|
|
3830
|
+
target_keyword: { type: "string", description: "Target SEO keyword" },
|
|
3831
|
+
keywords_secondary: { type: "string", description: "Secondary keywords (comma-separated)" },
|
|
3832
|
+
additional_information: { type: "string", description: "Additional context or instructions" },
|
|
3833
|
+
length: { description: 'Content length in words or "auto"', oneOf: [{ type: "number", maximum: 5e3 }, { type: "string", enum: ["auto"] }], default: "auto" },
|
|
3834
|
+
use_publishwordpress: { type: "boolean", description: "Publish to WordPress", default: false },
|
|
3835
|
+
publishwordpress_date: { type: "string", description: "Publication date (ISO 8601 or WordPress format)" },
|
|
3836
|
+
publishwordpress_status: { type: "string", enum: ["draft", "publish", "future"], description: "WordPress post status" },
|
|
3837
|
+
publishwordpress_category: { type: "number", description: "WordPress category ID" },
|
|
3838
|
+
publishwordpress_author: { type: "number", description: "WordPress author ID" },
|
|
3839
|
+
publishwordpress_connection: { type: "string", format: "uuid", description: "WordPress connection UUID" }
|
|
3768
3840
|
},
|
|
3769
|
-
required: ["name", "
|
|
3841
|
+
required: ["name", "subject"]
|
|
3770
3842
|
},
|
|
3771
3843
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
3772
3844
|
try {
|
|
@@ -3955,7 +4027,7 @@ var ProductPagesToolHandler = class {
|
|
|
3955
4027
|
|
|
3956
4028
|
// src/handlers/tools/DiscoverToolHandler.ts
|
|
3957
4029
|
import { z as z8 } from "zod";
|
|
3958
|
-
var
|
|
4030
|
+
var boolField4 = z8.union([z8.boolean(), z8.string()]).transform(
|
|
3959
4031
|
(val) => typeof val === "string" ? val === "true" : val
|
|
3960
4032
|
).optional().default(false);
|
|
3961
4033
|
var DiscoverContentSchema = z8.object({
|
|
@@ -3964,7 +4036,7 @@ var DiscoverContentSchema = z8.object({
|
|
|
3964
4036
|
keywords_secondary: z8.string().optional(),
|
|
3965
4037
|
project_id: z8.string().uuid().optional(),
|
|
3966
4038
|
persona_id: z8.string().uuid().optional(),
|
|
3967
|
-
apply_project_brief_config:
|
|
4039
|
+
apply_project_brief_config: boolField4,
|
|
3968
4040
|
lang: z8.enum(["fr", "en"]).optional(),
|
|
3969
4041
|
country: z8.enum(["fr", "be", "ch", "ca", "us", "gb"]).optional(),
|
|
3970
4042
|
length: z8.union([z8.number().max(2e3), z8.literal("auto")]).optional(),
|
|
@@ -4121,28 +4193,12 @@ var DiscoverToolHandler = class {
|
|
|
4121
4193
|
},
|
|
4122
4194
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
4123
4195
|
try {
|
|
4124
|
-
console.error("=".repeat(80));
|
|
4125
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 1: RAW INPUT");
|
|
4126
|
-
console.error("=".repeat(80));
|
|
4127
|
-
console.error("Raw args:", JSON.stringify(args, null, 2));
|
|
4128
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in args);
|
|
4129
|
-
console.error("apply_project_brief_config value:", args.apply_project_brief_config);
|
|
4130
|
-
console.error("apply_project_brief_config type:", typeof args.apply_project_brief_config);
|
|
4131
|
-
console.error("");
|
|
4132
4196
|
logger.info("discover_content RAW INPUT", {
|
|
4133
4197
|
raw_args: args,
|
|
4134
4198
|
apply_project_brief_config_raw: args.apply_project_brief_config,
|
|
4135
4199
|
apply_project_brief_config_raw_type: typeof args.apply_project_brief_config
|
|
4136
4200
|
});
|
|
4137
4201
|
const validated = DiscoverContentSchema.parse(args);
|
|
4138
|
-
console.error("=".repeat(80));
|
|
4139
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 2: AFTER VALIDATION");
|
|
4140
|
-
console.error("=".repeat(80));
|
|
4141
|
-
console.error("Validated:", JSON.stringify(validated, null, 2));
|
|
4142
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in validated);
|
|
4143
|
-
console.error("apply_project_brief_config value:", validated.apply_project_brief_config);
|
|
4144
|
-
console.error("apply_project_brief_config type:", typeof validated.apply_project_brief_config);
|
|
4145
|
-
console.error("");
|
|
4146
4202
|
logger.info("discover_content VALIDATED (after boolField transform)", {
|
|
4147
4203
|
apply_project_brief_config: validated.apply_project_brief_config,
|
|
4148
4204
|
apply_project_brief_config_type: typeof validated.apply_project_brief_config,
|
|
@@ -4155,13 +4211,6 @@ var DiscoverToolHandler = class {
|
|
|
4155
4211
|
cleanedInput[key] = value;
|
|
4156
4212
|
}
|
|
4157
4213
|
}
|
|
4158
|
-
console.error("=".repeat(80));
|
|
4159
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 3: CLEANED INPUT");
|
|
4160
|
-
console.error("=".repeat(80));
|
|
4161
|
-
console.error("Cleaned input:", JSON.stringify(cleanedInput, null, 2));
|
|
4162
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in cleanedInput);
|
|
4163
|
-
console.error("apply_project_brief_config value:", cleanedInput.apply_project_brief_config);
|
|
4164
|
-
console.error("");
|
|
4165
4214
|
logger.info("discover_content CLEANED INPUT (undefined removed)", {
|
|
4166
4215
|
before_cleaning_keys: Object.keys(validated).length,
|
|
4167
4216
|
after_cleaning_keys: Object.keys(cleanedInput).length,
|
|
@@ -4169,11 +4218,6 @@ var DiscoverToolHandler = class {
|
|
|
4169
4218
|
apply_project_brief_config_value: cleanedInput.apply_project_brief_config
|
|
4170
4219
|
});
|
|
4171
4220
|
const discovery = await this.apiClient.discoverArticles(cleanedInput);
|
|
4172
|
-
console.error("=".repeat(80));
|
|
4173
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 4: API RESPONSE");
|
|
4174
|
-
console.error("=".repeat(80));
|
|
4175
|
-
console.error("Discovery ID:", discovery.id);
|
|
4176
|
-
console.error("");
|
|
4177
4221
|
await this.cache.set(`discover:${discovery.id}`, discovery, 300);
|
|
4178
4222
|
this.metrics.recordAPICall("discover_content", "success");
|
|
4179
4223
|
return {
|
|
@@ -4183,15 +4227,6 @@ var DiscoverToolHandler = class {
|
|
|
4183
4227
|
success: true,
|
|
4184
4228
|
discovery_id: discovery.id,
|
|
4185
4229
|
message: "Content discovery created successfully",
|
|
4186
|
-
// DIAGNOSTIC INFORMATION - shows what MCP received and validated
|
|
4187
|
-
debug_info: {
|
|
4188
|
-
raw_input_has_param: "apply_project_brief_config" in args,
|
|
4189
|
-
raw_input_value: args.apply_project_brief_config,
|
|
4190
|
-
raw_input_type: typeof args.apply_project_brief_config,
|
|
4191
|
-
validated_has_param: "apply_project_brief_config" in validated,
|
|
4192
|
-
validated_value: validated.apply_project_brief_config,
|
|
4193
|
-
validated_type: typeof validated.apply_project_brief_config
|
|
4194
|
-
},
|
|
4195
4230
|
next_steps: [
|
|
4196
4231
|
`Use 'run_discovery' with id: ${discovery.id}`,
|
|
4197
4232
|
`Use 'get_discover_result' with id: ${discovery.id}`
|
|
@@ -5091,7 +5126,7 @@ var ResourceHandler = class {
|
|
|
5091
5126
|
},
|
|
5092
5127
|
type: {
|
|
5093
5128
|
type: "string",
|
|
5094
|
-
enum: ["blog", "
|
|
5129
|
+
enum: ["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"],
|
|
5095
5130
|
default: "blog"
|
|
5096
5131
|
},
|
|
5097
5132
|
lang: {
|
|
@@ -5940,19 +5975,19 @@ Here are 5 powerful workflows that Wisewand users love:
|
|
|
5940
5975
|
|
|
5941
5976
|
### \u{1F4E1} Workflow 4: RSS-Powered Auto-Publishing
|
|
5942
5977
|
|
|
5943
|
-
**Goal:** Curate industry
|
|
5978
|
+
**Goal:** Curate industry content automatically
|
|
5944
5979
|
|
|
5945
5980
|
\`\`\`
|
|
5946
|
-
1. create_rss_connection with industry
|
|
5981
|
+
1. create_rss_connection with industry feeds
|
|
5947
5982
|
2. create_rss_article_from_feed:
|
|
5948
5983
|
- Monitors RSS feeds
|
|
5949
5984
|
- Generates original commentary/analysis
|
|
5950
5985
|
- Adds your expert perspective
|
|
5951
5986
|
3. Set up recurring jobs (via Jobs tools)
|
|
5952
|
-
4. Auto-publish
|
|
5987
|
+
4. Auto-publish blog posts to WordPress
|
|
5953
5988
|
\`\`\`
|
|
5954
5989
|
|
|
5955
|
-
**Perfect for:**
|
|
5990
|
+
**Perfect for:** Content curation, industry newsletters, trend analysis blogs
|
|
5956
5991
|
|
|
5957
5992
|
---
|
|
5958
5993
|
|
|
@@ -6058,7 +6093,7 @@ Use \`get_transactions\` to track:
|
|
|
6058
6093
|
|
|
6059
6094
|
**11. Smart Image Usage**
|
|
6060
6095
|
- AI images cost credits
|
|
6061
|
-
- Skip images for
|
|
6096
|
+
- Skip images for quick updates: \`use_image: false\`
|
|
6062
6097
|
- Use images for evergreen content: \`use_image: true\`
|
|
6063
6098
|
- Best ratios: 16:9 (blog), 1:1 (social), 9:16 (mobile)
|
|
6064
6099
|
|