@wisewandtools/mcp-server 2.0.2 → 2.0.4
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 +2 -2
- package/dist/index.js +136 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ If you see an error, here's what it means:
|
|
|
63
63
|
❌ FATAL: WISEWAND_API_KEY has invalid format
|
|
64
64
|
Expected: sk_live_... or sk_test_...
|
|
65
65
|
```
|
|
66
|
-
**Fix:** Check your API key at [wisewand.ai/
|
|
66
|
+
**Fix:** Check your API key at [app.wisewand.ai/api](https://app.wisewand.ai/api). It must start with `sk_live_` or `sk_test_`.
|
|
67
67
|
|
|
68
68
|
```
|
|
69
69
|
❌ FATAL: Cannot connect to Wisewand API
|
|
@@ -635,7 +635,7 @@ src/
|
|
|
635
635
|
3. **Verify API key format**
|
|
636
636
|
- Must start with `sk_live_`
|
|
637
637
|
- No extra spaces or quotes
|
|
638
|
-
- Check at [wisewand.ai/
|
|
638
|
+
- Check at [app.wisewand.ai/api](https://app.wisewand.ai/api)
|
|
639
639
|
|
|
640
640
|
4. **Check server logs**
|
|
641
641
|
```bash
|
package/dist/index.js
CHANGED
|
@@ -91,14 +91,14 @@ var parseConfig = /* @__PURE__ */ __name(() => {
|
|
|
91
91
|
const apiKey = process.env.WISEWAND_API_KEY;
|
|
92
92
|
if (!apiKey) {
|
|
93
93
|
console.error("\u274C FATAL: WISEWAND_API_KEY environment variable not set");
|
|
94
|
-
console.error(" Get your API key from: https://wisewand.ai/
|
|
94
|
+
console.error(" Get your API key from: https://app.wisewand.ai/api");
|
|
95
95
|
process.exit(1);
|
|
96
96
|
}
|
|
97
97
|
if (!apiKey.startsWith("sk_live_") && !apiKey.startsWith("sk_test_")) {
|
|
98
98
|
console.error("\u274C FATAL: WISEWAND_API_KEY has invalid format");
|
|
99
99
|
console.error(" Expected: sk_live_... or sk_test_...");
|
|
100
100
|
console.error(` Got: ${apiKey.substring(0, 10)}...`);
|
|
101
|
-
console.error(" Get your API key from: https://wisewand.ai/
|
|
101
|
+
console.error(" Get your API key from: https://app.wisewand.ai/api");
|
|
102
102
|
process.exit(1);
|
|
103
103
|
}
|
|
104
104
|
try {
|
|
@@ -3907,9 +3907,72 @@ var ProductPagesToolHandler = class {
|
|
|
3907
3907
|
// src/handlers/tools/DiscoverToolHandler.ts
|
|
3908
3908
|
import { z as z8 } from "zod";
|
|
3909
3909
|
var DiscoverContentSchema = z8.object({
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3910
|
+
subject: z8.string().min(1),
|
|
3911
|
+
target_keyword: z8.string().optional(),
|
|
3912
|
+
keywords_secondary: z8.string().optional(),
|
|
3913
|
+
project_id: z8.string().uuid().optional(),
|
|
3914
|
+
persona_id: z8.string().uuid().optional(),
|
|
3915
|
+
lang: z8.enum(["fr", "en"]).optional(),
|
|
3916
|
+
country: z8.enum(["fr", "be", "ch", "ca", "us", "gb"]).optional(),
|
|
3917
|
+
length: z8.union([z8.number().max(2e3), z8.literal("auto")]).optional(),
|
|
3918
|
+
title: z8.string().optional(),
|
|
3919
|
+
additional_information: z8.string().optional(),
|
|
3920
|
+
writing_style: z8.string().optional(),
|
|
3921
|
+
website: z8.string().optional(),
|
|
3922
|
+
writing_style_mode: z8.enum(["auto", "persona"]).optional(),
|
|
3923
|
+
// SEO Features
|
|
3924
|
+
use_cta: z8.boolean().optional(),
|
|
3925
|
+
ctas: z8.array(z8.object({
|
|
3926
|
+
anchor: z8.string(),
|
|
3927
|
+
url: z8.string()
|
|
3928
|
+
})).optional(),
|
|
3929
|
+
use_boldkeywords: z8.boolean().optional(),
|
|
3930
|
+
use_faq: z8.boolean().optional(),
|
|
3931
|
+
faq_questions: z8.string().optional(),
|
|
3932
|
+
use_toc: z8.boolean().optional(),
|
|
3933
|
+
// Image options
|
|
3934
|
+
use_image: z8.boolean().optional(),
|
|
3935
|
+
image_ratio: z8.enum(["landscape", "portrait", "16:9", "4:3", "1:1"]).optional(),
|
|
3936
|
+
image_prompt: z8.string().optional(),
|
|
3937
|
+
image_use_palette: z8.boolean().optional(),
|
|
3938
|
+
image_primary_color: z8.string().optional(),
|
|
3939
|
+
image_secondary_color: z8.string().optional(),
|
|
3940
|
+
use_inline_images: z8.boolean().optional(),
|
|
3941
|
+
inline_images_ratio: z8.enum(["landscape", "portrait", "16:9", "4:3", "1:1"]).optional(),
|
|
3942
|
+
inline_images_use_palette: z8.boolean().optional(),
|
|
3943
|
+
inline_images_primary_color: z8.string().optional(),
|
|
3944
|
+
inline_images_secondary_color: z8.string().optional(),
|
|
3945
|
+
// Internal links
|
|
3946
|
+
use_internallinks: z8.boolean().optional(),
|
|
3947
|
+
use_indexed_pages_internal_links: z8.boolean().optional(),
|
|
3948
|
+
use_wp_internal_links: z8.boolean().optional(),
|
|
3949
|
+
use_app_internal_links: z8.boolean().optional(),
|
|
3950
|
+
use_list_internal_links: z8.boolean().optional(),
|
|
3951
|
+
internal_links_wp_status: z8.array(z8.string()).optional(),
|
|
3952
|
+
internal_links_list: z8.string().optional(),
|
|
3953
|
+
internal_links_wp_connection: z8.string().optional(),
|
|
3954
|
+
// WordPress publishing
|
|
3955
|
+
use_publishwordpress: z8.boolean().optional(),
|
|
3956
|
+
publishwordpress_date: z8.string().optional(),
|
|
3957
|
+
publishwordpress_status: z8.enum(["draft", "publish", "future"]).optional(),
|
|
3958
|
+
publishwordpress_category: z8.number().optional(),
|
|
3959
|
+
publishwordpress_author: z8.number().optional(),
|
|
3960
|
+
publishwordpress_connection: z8.string().optional(),
|
|
3961
|
+
// Additional features
|
|
3962
|
+
use_infotable: z8.boolean().optional(),
|
|
3963
|
+
use_bulletlist: z8.boolean().optional(),
|
|
3964
|
+
use_externalsources: z8.boolean().optional(),
|
|
3965
|
+
use_audio: z8.boolean().optional(),
|
|
3966
|
+
audio_voice_id: z8.string().optional(),
|
|
3967
|
+
use_social: z8.boolean().optional(),
|
|
3968
|
+
social_networks: z8.union([
|
|
3969
|
+
z8.array(z8.string()),
|
|
3970
|
+
z8.string()
|
|
3971
|
+
]).optional(),
|
|
3972
|
+
use_blockquotes: z8.boolean().optional(),
|
|
3973
|
+
use_summary: z8.boolean().optional(),
|
|
3974
|
+
use_webhook: z8.boolean().optional(),
|
|
3975
|
+
webhook_connection_id: z8.string().optional()
|
|
3913
3976
|
});
|
|
3914
3977
|
var DiscoverToolHandler = class {
|
|
3915
3978
|
constructor(apiClient, cache, metrics) {
|
|
@@ -3935,8 +3998,73 @@ var DiscoverToolHandler = class {
|
|
|
3935
3998
|
discoverContentTool() {
|
|
3936
3999
|
return {
|
|
3937
4000
|
name: "discover_content",
|
|
3938
|
-
description: "Discover
|
|
3939
|
-
inputSchema: {
|
|
4001
|
+
description: "Create a Google Discover article optimized for ranking in Google Discover feed. Requires subject field. Supports all standard article features like FAQ, TOC, images, and WordPress publishing.",
|
|
4002
|
+
inputSchema: {
|
|
4003
|
+
type: "object",
|
|
4004
|
+
properties: {
|
|
4005
|
+
subject: { type: "string", description: "The subject of the discover article (required)" },
|
|
4006
|
+
target_keyword: { type: "string", description: "SERP target keyword" },
|
|
4007
|
+
keywords_secondary: { type: "string", description: "Secondary keywords" },
|
|
4008
|
+
project_id: { type: "string", format: "uuid", description: "Project UUID" },
|
|
4009
|
+
persona_id: { type: "string", format: "uuid", description: "Persona UUID" },
|
|
4010
|
+
lang: { type: "string", enum: ["fr", "en"], description: "Language code" },
|
|
4011
|
+
country: { type: "string", enum: ["fr", "be", "ch", "ca", "us", "gb"], description: "Country code" },
|
|
4012
|
+
length: { description: 'Number (max 2000) or "auto"' },
|
|
4013
|
+
title: { type: "string", description: "Article title" },
|
|
4014
|
+
additional_information: { type: "string", description: "Additional context" },
|
|
4015
|
+
writing_style: { type: "string", description: "Writing style" },
|
|
4016
|
+
website: { type: "string", description: "Website URL" },
|
|
4017
|
+
writing_style_mode: { type: "string", enum: ["auto", "persona"], description: "Writing style mode" },
|
|
4018
|
+
// SEO Features
|
|
4019
|
+
use_cta: { type: "boolean", description: "Add CTA" },
|
|
4020
|
+
ctas: { type: "array", items: { type: "object", properties: { anchor: { type: "string" }, url: { type: "string" } } }, description: "Call-to-action links" },
|
|
4021
|
+
use_boldkeywords: { type: "boolean", description: "Bold keywords" },
|
|
4022
|
+
use_faq: { type: "boolean", description: "Add FAQ section" },
|
|
4023
|
+
faq_questions: { type: "string", description: "FAQ questions" },
|
|
4024
|
+
use_toc: { type: "boolean", description: "Add table of contents" },
|
|
4025
|
+
// Image options
|
|
4026
|
+
use_image: { type: "boolean", description: "Generate cover image" },
|
|
4027
|
+
image_ratio: { type: "string", enum: ["landscape", "portrait", "16:9", "4:3", "1:1"], description: "Image aspect ratio" },
|
|
4028
|
+
image_prompt: { type: "string", description: "Image generation prompt" },
|
|
4029
|
+
image_use_palette: { type: "boolean", description: "Use color palette for image" },
|
|
4030
|
+
image_primary_color: { type: "string", description: "Primary color for image" },
|
|
4031
|
+
image_secondary_color: { type: "string", description: "Secondary color for image" },
|
|
4032
|
+
use_inline_images: { type: "boolean", description: "Generate inline images" },
|
|
4033
|
+
inline_images_ratio: { type: "string", enum: ["landscape", "portrait", "16:9", "4:3", "1:1"], description: "Inline images aspect ratio" },
|
|
4034
|
+
inline_images_use_palette: { type: "boolean", description: "Use color palette for inline images" },
|
|
4035
|
+
inline_images_primary_color: { type: "string", description: "Primary color for inline images" },
|
|
4036
|
+
inline_images_secondary_color: { type: "string", description: "Secondary color for inline images" },
|
|
4037
|
+
// Internal links
|
|
4038
|
+
use_internallinks: { type: "boolean", description: "Add internal links" },
|
|
4039
|
+
use_indexed_pages_internal_links: { type: "boolean", description: "Use indexed pages for internal links" },
|
|
4040
|
+
use_wp_internal_links: { type: "boolean", description: "Use WordPress internal links" },
|
|
4041
|
+
use_app_internal_links: { type: "boolean", description: "Use app internal links" },
|
|
4042
|
+
use_list_internal_links: { type: "boolean", description: "Use list internal links" },
|
|
4043
|
+
internal_links_wp_status: { type: "array", items: { type: "string" }, description: "WordPress post status for internal links" },
|
|
4044
|
+
internal_links_list: { type: "string", description: "Internal links list" },
|
|
4045
|
+
internal_links_wp_connection: { type: "string", description: "WordPress connection ID for internal links" },
|
|
4046
|
+
// WordPress publishing
|
|
4047
|
+
use_publishwordpress: { type: "boolean", description: "Auto-publish to WordPress" },
|
|
4048
|
+
publishwordpress_date: { type: "string", description: "WordPress publish date" },
|
|
4049
|
+
publishwordpress_status: { type: "string", enum: ["draft", "publish", "future"], description: "WordPress post status" },
|
|
4050
|
+
publishwordpress_category: { type: "number", description: "WordPress category ID" },
|
|
4051
|
+
publishwordpress_author: { type: "number", description: "WordPress author ID" },
|
|
4052
|
+
publishwordpress_connection: { type: "string", description: "WordPress connection ID" },
|
|
4053
|
+
// Additional features
|
|
4054
|
+
use_infotable: { type: "boolean", description: "Add info table" },
|
|
4055
|
+
use_bulletlist: { type: "boolean", description: "Add bullet list" },
|
|
4056
|
+
use_externalsources: { type: "boolean", description: "Use external sources" },
|
|
4057
|
+
use_audio: { type: "boolean", description: "Generate audio" },
|
|
4058
|
+
audio_voice_id: { type: "string", description: "Audio voice ID" },
|
|
4059
|
+
use_social: { type: "boolean", description: "Generate social media posts" },
|
|
4060
|
+
social_networks: { description: "Social networks (array or comma-separated string)" },
|
|
4061
|
+
use_blockquotes: { type: "boolean", description: "Add blockquotes" },
|
|
4062
|
+
use_summary: { type: "boolean", description: "Add summary" },
|
|
4063
|
+
use_webhook: { type: "boolean", description: "Trigger webhook" },
|
|
4064
|
+
webhook_connection_id: { type: "string", description: "Webhook connection ID" }
|
|
4065
|
+
},
|
|
4066
|
+
required: ["subject"]
|
|
4067
|
+
},
|
|
3940
4068
|
handler: /* @__PURE__ */ __name(async (args) => {
|
|
3941
4069
|
try {
|
|
3942
4070
|
const validated = DiscoverContentSchema.parse(args);
|
|
@@ -6256,7 +6384,7 @@ async function main() {
|
|
|
6256
6384
|
console.error("\u274C FATAL: Cannot connect to Wisewand API");
|
|
6257
6385
|
console.error(` Reason: ${apiHealth.error}`);
|
|
6258
6386
|
console.error(" Check your WISEWAND_API_KEY and network connection");
|
|
6259
|
-
console.error(" Get your API key from: https://wisewand.ai/
|
|
6387
|
+
console.error(" Get your API key from: https://app.wisewand.ai/api");
|
|
6260
6388
|
process.exit(1);
|
|
6261
6389
|
}
|
|
6262
6390
|
logger.info("\u2713 API connectivity verified");
|