@wisewandtools/mcp-server 2.0.12 โ 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 +134 -80
- 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,11 +504,6 @@ var WisewandAPIClient = class {
|
|
|
519
504
|
}
|
|
520
505
|
// ============= Content Discovery =============
|
|
521
506
|
async discoverArticles(input) {
|
|
522
|
-
console.error("=".repeat(80));
|
|
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("");
|
|
527
507
|
return this.request("POST", "/v1/discoverarticles/", input);
|
|
528
508
|
}
|
|
529
509
|
async getDiscoverArticle(id) {
|
|
@@ -1190,7 +1170,7 @@ var CreateArticleSchema = z2.object({
|
|
|
1190
1170
|
subject: z2.string().min(1, "Subject is required"),
|
|
1191
1171
|
title: z2.string().optional(),
|
|
1192
1172
|
keep_title: boolField,
|
|
1193
|
-
type: z2.enum(["blog", "
|
|
1173
|
+
type: z2.enum(["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"]).optional().default("blog"),
|
|
1194
1174
|
lang: z2.enum(LANG_ENUM).optional().default("en"),
|
|
1195
1175
|
country: z2.enum(COUNTRY_ENUM).optional(),
|
|
1196
1176
|
length: z2.union([z2.number().max(5e3), z2.literal("auto")]).optional().default("auto"),
|
|
@@ -1403,7 +1383,7 @@ var ArticleToolHandler = class {
|
|
|
1403
1383
|
subject: { type: "string", description: "The main subject or topic of the article", minLength: 1 },
|
|
1404
1384
|
title: { type: "string", description: "Optional custom title (auto-generated if not provided)" },
|
|
1405
1385
|
keep_title: { type: "boolean", description: "Whether to keep the provided title or allow AI to modify it" },
|
|
1406
|
-
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" },
|
|
1407
1387
|
lang: { type: "string", enum: [...LANG_ENUM], description: "Language for the article", default: "en" },
|
|
1408
1388
|
country: { type: "string", enum: [...COUNTRY_ENUM], description: "Target country for localization" },
|
|
1409
1389
|
length: { oneOf: [{ type: "number", maximum: 5e3 }, { type: "string", const: "auto" }], description: 'Article length in words or "auto"', default: "auto" },
|
|
@@ -2790,7 +2770,7 @@ var BulkOperationsToolHandler = class {
|
|
|
2790
2770
|
title: { type: "string" },
|
|
2791
2771
|
type: {
|
|
2792
2772
|
type: "string",
|
|
2793
|
-
enum: ["blog", "
|
|
2773
|
+
enum: ["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"]
|
|
2794
2774
|
},
|
|
2795
2775
|
lang: { type: "string", enum: ["fr", "en"] },
|
|
2796
2776
|
target_keyword: { type: "string" },
|
|
@@ -3465,11 +3445,43 @@ var UtilityToolHandler = class {
|
|
|
3465
3445
|
|
|
3466
3446
|
// src/handlers/tools/CategoryPagesToolHandler.ts
|
|
3467
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"];
|
|
3468
3456
|
var CreateCategoryPageSchema = z6.object({
|
|
3457
|
+
// Basic fields
|
|
3469
3458
|
name: z6.string().min(1, "Name is required"),
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
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()
|
|
3473
3485
|
});
|
|
3474
3486
|
var CategoryPagesToolHandler = class {
|
|
3475
3487
|
constructor(apiClient, cache, metrics) {
|
|
@@ -3499,10 +3511,31 @@ var CategoryPagesToolHandler = class {
|
|
|
3499
3511
|
inputSchema: {
|
|
3500
3512
|
type: "object",
|
|
3501
3513
|
properties: {
|
|
3502
|
-
name: { type: "string", description: "Name of the category page", minLength: 1 },
|
|
3503
|
-
|
|
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" }
|
|
3504
3537
|
},
|
|
3505
|
-
required: ["name", "
|
|
3538
|
+
required: ["name", "subject"]
|
|
3506
3539
|
},
|
|
3507
3540
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
3508
3541
|
try {
|
|
@@ -3710,11 +3743,46 @@ var CategoryPagesToolHandler = class {
|
|
|
3710
3743
|
|
|
3711
3744
|
// src/handlers/tools/ProductPagesToolHandler.ts
|
|
3712
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"];
|
|
3713
3754
|
var CreateProductPageSchema = z7.object({
|
|
3755
|
+
// Basic fields
|
|
3714
3756
|
name: z7.string().min(1, "Name is required"),
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
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()
|
|
3718
3786
|
});
|
|
3719
3787
|
var ProductPagesToolHandler = class {
|
|
3720
3788
|
constructor(apiClient, cache, metrics) {
|
|
@@ -3744,10 +3812,33 @@ var ProductPagesToolHandler = class {
|
|
|
3744
3812
|
inputSchema: {
|
|
3745
3813
|
type: "object",
|
|
3746
3814
|
properties: {
|
|
3747
|
-
name: { type: "string", description: "Name of the product page", minLength: 1 },
|
|
3748
|
-
|
|
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" }
|
|
3749
3840
|
},
|
|
3750
|
-
required: ["name", "
|
|
3841
|
+
required: ["name", "subject"]
|
|
3751
3842
|
},
|
|
3752
3843
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
3753
3844
|
try {
|
|
@@ -3936,7 +4027,7 @@ var ProductPagesToolHandler = class {
|
|
|
3936
4027
|
|
|
3937
4028
|
// src/handlers/tools/DiscoverToolHandler.ts
|
|
3938
4029
|
import { z as z8 } from "zod";
|
|
3939
|
-
var
|
|
4030
|
+
var boolField4 = z8.union([z8.boolean(), z8.string()]).transform(
|
|
3940
4031
|
(val) => typeof val === "string" ? val === "true" : val
|
|
3941
4032
|
).optional().default(false);
|
|
3942
4033
|
var DiscoverContentSchema = z8.object({
|
|
@@ -3945,7 +4036,7 @@ var DiscoverContentSchema = z8.object({
|
|
|
3945
4036
|
keywords_secondary: z8.string().optional(),
|
|
3946
4037
|
project_id: z8.string().uuid().optional(),
|
|
3947
4038
|
persona_id: z8.string().uuid().optional(),
|
|
3948
|
-
apply_project_brief_config:
|
|
4039
|
+
apply_project_brief_config: boolField4,
|
|
3949
4040
|
lang: z8.enum(["fr", "en"]).optional(),
|
|
3950
4041
|
country: z8.enum(["fr", "be", "ch", "ca", "us", "gb"]).optional(),
|
|
3951
4042
|
length: z8.union([z8.number().max(2e3), z8.literal("auto")]).optional(),
|
|
@@ -4102,28 +4193,12 @@ var DiscoverToolHandler = class {
|
|
|
4102
4193
|
},
|
|
4103
4194
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
4104
4195
|
try {
|
|
4105
|
-
console.error("=".repeat(80));
|
|
4106
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 1: RAW INPUT");
|
|
4107
|
-
console.error("=".repeat(80));
|
|
4108
|
-
console.error("Raw args:", JSON.stringify(args, null, 2));
|
|
4109
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in args);
|
|
4110
|
-
console.error("apply_project_brief_config value:", args.apply_project_brief_config);
|
|
4111
|
-
console.error("apply_project_brief_config type:", typeof args.apply_project_brief_config);
|
|
4112
|
-
console.error("");
|
|
4113
4196
|
logger.info("discover_content RAW INPUT", {
|
|
4114
4197
|
raw_args: args,
|
|
4115
4198
|
apply_project_brief_config_raw: args.apply_project_brief_config,
|
|
4116
4199
|
apply_project_brief_config_raw_type: typeof args.apply_project_brief_config
|
|
4117
4200
|
});
|
|
4118
4201
|
const validated = DiscoverContentSchema.parse(args);
|
|
4119
|
-
console.error("=".repeat(80));
|
|
4120
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 2: AFTER VALIDATION");
|
|
4121
|
-
console.error("=".repeat(80));
|
|
4122
|
-
console.error("Validated:", JSON.stringify(validated, null, 2));
|
|
4123
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in validated);
|
|
4124
|
-
console.error("apply_project_brief_config value:", validated.apply_project_brief_config);
|
|
4125
|
-
console.error("apply_project_brief_config type:", typeof validated.apply_project_brief_config);
|
|
4126
|
-
console.error("");
|
|
4127
4202
|
logger.info("discover_content VALIDATED (after boolField transform)", {
|
|
4128
4203
|
apply_project_brief_config: validated.apply_project_brief_config,
|
|
4129
4204
|
apply_project_brief_config_type: typeof validated.apply_project_brief_config,
|
|
@@ -4136,13 +4211,6 @@ var DiscoverToolHandler = class {
|
|
|
4136
4211
|
cleanedInput[key] = value;
|
|
4137
4212
|
}
|
|
4138
4213
|
}
|
|
4139
|
-
console.error("=".repeat(80));
|
|
4140
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 3: CLEANED INPUT");
|
|
4141
|
-
console.error("=".repeat(80));
|
|
4142
|
-
console.error("Cleaned input:", JSON.stringify(cleanedInput, null, 2));
|
|
4143
|
-
console.error("apply_project_brief_config present:", "apply_project_brief_config" in cleanedInput);
|
|
4144
|
-
console.error("apply_project_brief_config value:", cleanedInput.apply_project_brief_config);
|
|
4145
|
-
console.error("");
|
|
4146
4214
|
logger.info("discover_content CLEANED INPUT (undefined removed)", {
|
|
4147
4215
|
before_cleaning_keys: Object.keys(validated).length,
|
|
4148
4216
|
after_cleaning_keys: Object.keys(cleanedInput).length,
|
|
@@ -4150,11 +4218,6 @@ var DiscoverToolHandler = class {
|
|
|
4150
4218
|
apply_project_brief_config_value: cleanedInput.apply_project_brief_config
|
|
4151
4219
|
});
|
|
4152
4220
|
const discovery = await this.apiClient.discoverArticles(cleanedInput);
|
|
4153
|
-
console.error("=".repeat(80));
|
|
4154
|
-
console.error("MCP DISCOVER_CONTENT - STAGE 4: API RESPONSE");
|
|
4155
|
-
console.error("=".repeat(80));
|
|
4156
|
-
console.error("Discovery ID:", discovery.id);
|
|
4157
|
-
console.error("");
|
|
4158
4221
|
await this.cache.set(`discover:${discovery.id}`, discovery, 300);
|
|
4159
4222
|
this.metrics.recordAPICall("discover_content", "success");
|
|
4160
4223
|
return {
|
|
@@ -4164,15 +4227,6 @@ var DiscoverToolHandler = class {
|
|
|
4164
4227
|
success: true,
|
|
4165
4228
|
discovery_id: discovery.id,
|
|
4166
4229
|
message: "Content discovery created successfully",
|
|
4167
|
-
// DIAGNOSTIC INFORMATION - shows what MCP received and validated
|
|
4168
|
-
debug_info: {
|
|
4169
|
-
raw_input_has_param: "apply_project_brief_config" in args,
|
|
4170
|
-
raw_input_value: args.apply_project_brief_config,
|
|
4171
|
-
raw_input_type: typeof args.apply_project_brief_config,
|
|
4172
|
-
validated_has_param: "apply_project_brief_config" in validated,
|
|
4173
|
-
validated_value: validated.apply_project_brief_config,
|
|
4174
|
-
validated_type: typeof validated.apply_project_brief_config
|
|
4175
|
-
},
|
|
4176
4230
|
next_steps: [
|
|
4177
4231
|
`Use 'run_discovery' with id: ${discovery.id}`,
|
|
4178
4232
|
`Use 'get_discover_result' with id: ${discovery.id}`
|
|
@@ -5072,7 +5126,7 @@ var ResourceHandler = class {
|
|
|
5072
5126
|
},
|
|
5073
5127
|
type: {
|
|
5074
5128
|
type: "string",
|
|
5075
|
-
enum: ["blog", "
|
|
5129
|
+
enum: ["blog", "affiliation-product-review", "affiliation-compare-products", "affiliation-top-product"],
|
|
5076
5130
|
default: "blog"
|
|
5077
5131
|
},
|
|
5078
5132
|
lang: {
|
|
@@ -5921,19 +5975,19 @@ Here are 5 powerful workflows that Wisewand users love:
|
|
|
5921
5975
|
|
|
5922
5976
|
### \u{1F4E1} Workflow 4: RSS-Powered Auto-Publishing
|
|
5923
5977
|
|
|
5924
|
-
**Goal:** Curate industry
|
|
5978
|
+
**Goal:** Curate industry content automatically
|
|
5925
5979
|
|
|
5926
5980
|
\`\`\`
|
|
5927
|
-
1. create_rss_connection with industry
|
|
5981
|
+
1. create_rss_connection with industry feeds
|
|
5928
5982
|
2. create_rss_article_from_feed:
|
|
5929
5983
|
- Monitors RSS feeds
|
|
5930
5984
|
- Generates original commentary/analysis
|
|
5931
5985
|
- Adds your expert perspective
|
|
5932
5986
|
3. Set up recurring jobs (via Jobs tools)
|
|
5933
|
-
4. Auto-publish
|
|
5987
|
+
4. Auto-publish blog posts to WordPress
|
|
5934
5988
|
\`\`\`
|
|
5935
5989
|
|
|
5936
|
-
**Perfect for:**
|
|
5990
|
+
**Perfect for:** Content curation, industry newsletters, trend analysis blogs
|
|
5937
5991
|
|
|
5938
5992
|
---
|
|
5939
5993
|
|
|
@@ -6039,7 +6093,7 @@ Use \`get_transactions\` to track:
|
|
|
6039
6093
|
|
|
6040
6094
|
**11. Smart Image Usage**
|
|
6041
6095
|
- AI images cost credits
|
|
6042
|
-
- Skip images for
|
|
6096
|
+
- Skip images for quick updates: \`use_image: false\`
|
|
6043
6097
|
- Use images for evergreen content: \`use_image: true\`
|
|
6044
6098
|
- Best ratios: 16:9 (blog), 1:1 (social), 9:16 (mobile)
|
|
6045
6099
|
|