@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 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/dashboard/api-keys](https://wisewand.ai/dashboard/api-keys). It must start with `sk_live_` or `sk_test_`.
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/dashboard](https://wisewand.ai/dashboard)
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/dashboard/api-keys");
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/dashboard/api-keys");
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
- data: z8.object({
3911
- input: z8.record(z8.any())
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 content ideas based on niche and keywords",
3939
- inputSchema: { type: "object", properties: { data: { type: "object", description: "Discovery configuration", properties: { input: { type: "object", description: "Discovery input containing niche, keywords, etc." } }, required: ["input"] } }, required: ["data"] },
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/dashboard/api-keys");
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");