@wisewandtools/mcp-server 2.0.3 → 2.0.5

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/dist/index.js CHANGED
@@ -589,9 +589,10 @@ var WisewandAPIClient = class {
589
589
  }
590
590
  async checkHealth() {
591
591
  try {
592
- const response = await fetch(`${this.config.apiUrl}/health`, {
592
+ const response = await fetch(`${this.config.apiUrl}/v1/projects/?take=1`, {
593
593
  headers: {
594
- "Authorization": `Bearer ${this.config.apiKey}`
594
+ "Authorization": `Bearer ${this.config.apiKey}`,
595
+ "Content-Type": "application/json"
595
596
  },
596
597
  signal: AbortSignal.timeout(5e3)
597
598
  });
@@ -3907,9 +3908,72 @@ var ProductPagesToolHandler = class {
3907
3908
  // src/handlers/tools/DiscoverToolHandler.ts
3908
3909
  import { z as z8 } from "zod";
3909
3910
  var DiscoverContentSchema = z8.object({
3910
- data: z8.object({
3911
- input: z8.record(z8.any())
3912
- })
3911
+ subject: z8.string().min(1),
3912
+ target_keyword: z8.string().optional(),
3913
+ keywords_secondary: z8.string().optional(),
3914
+ project_id: z8.string().uuid().optional(),
3915
+ persona_id: z8.string().uuid().optional(),
3916
+ lang: z8.enum(["fr", "en"]).optional(),
3917
+ country: z8.enum(["fr", "be", "ch", "ca", "us", "gb"]).optional(),
3918
+ length: z8.union([z8.number().max(2e3), z8.literal("auto")]).optional(),
3919
+ title: z8.string().optional(),
3920
+ additional_information: z8.string().optional(),
3921
+ writing_style: z8.string().optional(),
3922
+ website: z8.string().optional(),
3923
+ writing_style_mode: z8.enum(["auto", "persona"]).optional(),
3924
+ // SEO Features
3925
+ use_cta: z8.boolean().optional(),
3926
+ ctas: z8.array(z8.object({
3927
+ anchor: z8.string(),
3928
+ url: z8.string()
3929
+ })).optional(),
3930
+ use_boldkeywords: z8.boolean().optional(),
3931
+ use_faq: z8.boolean().optional(),
3932
+ faq_questions: z8.string().optional(),
3933
+ use_toc: z8.boolean().optional(),
3934
+ // Image options
3935
+ use_image: z8.boolean().optional(),
3936
+ image_ratio: z8.enum(["landscape", "portrait", "16:9", "4:3", "1:1"]).optional(),
3937
+ image_prompt: z8.string().optional(),
3938
+ image_use_palette: z8.boolean().optional(),
3939
+ image_primary_color: z8.string().optional(),
3940
+ image_secondary_color: z8.string().optional(),
3941
+ use_inline_images: z8.boolean().optional(),
3942
+ inline_images_ratio: z8.enum(["landscape", "portrait", "16:9", "4:3", "1:1"]).optional(),
3943
+ inline_images_use_palette: z8.boolean().optional(),
3944
+ inline_images_primary_color: z8.string().optional(),
3945
+ inline_images_secondary_color: z8.string().optional(),
3946
+ // Internal links
3947
+ use_internallinks: z8.boolean().optional(),
3948
+ use_indexed_pages_internal_links: z8.boolean().optional(),
3949
+ use_wp_internal_links: z8.boolean().optional(),
3950
+ use_app_internal_links: z8.boolean().optional(),
3951
+ use_list_internal_links: z8.boolean().optional(),
3952
+ internal_links_wp_status: z8.array(z8.string()).optional(),
3953
+ internal_links_list: z8.string().optional(),
3954
+ internal_links_wp_connection: z8.string().optional(),
3955
+ // WordPress publishing
3956
+ use_publishwordpress: z8.boolean().optional(),
3957
+ publishwordpress_date: z8.string().optional(),
3958
+ publishwordpress_status: z8.enum(["draft", "publish", "future"]).optional(),
3959
+ publishwordpress_category: z8.number().optional(),
3960
+ publishwordpress_author: z8.number().optional(),
3961
+ publishwordpress_connection: z8.string().optional(),
3962
+ // Additional features
3963
+ use_infotable: z8.boolean().optional(),
3964
+ use_bulletlist: z8.boolean().optional(),
3965
+ use_externalsources: z8.boolean().optional(),
3966
+ use_audio: z8.boolean().optional(),
3967
+ audio_voice_id: z8.string().optional(),
3968
+ use_social: z8.boolean().optional(),
3969
+ social_networks: z8.union([
3970
+ z8.array(z8.string()),
3971
+ z8.string()
3972
+ ]).optional(),
3973
+ use_blockquotes: z8.boolean().optional(),
3974
+ use_summary: z8.boolean().optional(),
3975
+ use_webhook: z8.boolean().optional(),
3976
+ webhook_connection_id: z8.string().optional()
3913
3977
  });
3914
3978
  var DiscoverToolHandler = class {
3915
3979
  constructor(apiClient, cache, metrics) {
@@ -3935,8 +3999,73 @@ var DiscoverToolHandler = class {
3935
3999
  discoverContentTool() {
3936
4000
  return {
3937
4001
  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"] },
4002
+ 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.",
4003
+ inputSchema: {
4004
+ type: "object",
4005
+ properties: {
4006
+ subject: { type: "string", description: "The subject of the discover article (required)" },
4007
+ target_keyword: { type: "string", description: "SERP target keyword" },
4008
+ keywords_secondary: { type: "string", description: "Secondary keywords" },
4009
+ project_id: { type: "string", format: "uuid", description: "Project UUID" },
4010
+ persona_id: { type: "string", format: "uuid", description: "Persona UUID" },
4011
+ lang: { type: "string", enum: ["fr", "en"], description: "Language code" },
4012
+ country: { type: "string", enum: ["fr", "be", "ch", "ca", "us", "gb"], description: "Country code" },
4013
+ length: { description: 'Number (max 2000) or "auto"' },
4014
+ title: { type: "string", description: "Article title" },
4015
+ additional_information: { type: "string", description: "Additional context" },
4016
+ writing_style: { type: "string", description: "Writing style" },
4017
+ website: { type: "string", description: "Website URL" },
4018
+ writing_style_mode: { type: "string", enum: ["auto", "persona"], description: "Writing style mode" },
4019
+ // SEO Features
4020
+ use_cta: { type: "boolean", description: "Add CTA" },
4021
+ ctas: { type: "array", items: { type: "object", properties: { anchor: { type: "string" }, url: { type: "string" } } }, description: "Call-to-action links" },
4022
+ use_boldkeywords: { type: "boolean", description: "Bold keywords" },
4023
+ use_faq: { type: "boolean", description: "Add FAQ section" },
4024
+ faq_questions: { type: "string", description: "FAQ questions" },
4025
+ use_toc: { type: "boolean", description: "Add table of contents" },
4026
+ // Image options
4027
+ use_image: { type: "boolean", description: "Generate cover image" },
4028
+ image_ratio: { type: "string", enum: ["landscape", "portrait", "16:9", "4:3", "1:1"], description: "Image aspect ratio" },
4029
+ image_prompt: { type: "string", description: "Image generation prompt" },
4030
+ image_use_palette: { type: "boolean", description: "Use color palette for image" },
4031
+ image_primary_color: { type: "string", description: "Primary color for image" },
4032
+ image_secondary_color: { type: "string", description: "Secondary color for image" },
4033
+ use_inline_images: { type: "boolean", description: "Generate inline images" },
4034
+ inline_images_ratio: { type: "string", enum: ["landscape", "portrait", "16:9", "4:3", "1:1"], description: "Inline images aspect ratio" },
4035
+ inline_images_use_palette: { type: "boolean", description: "Use color palette for inline images" },
4036
+ inline_images_primary_color: { type: "string", description: "Primary color for inline images" },
4037
+ inline_images_secondary_color: { type: "string", description: "Secondary color for inline images" },
4038
+ // Internal links
4039
+ use_internallinks: { type: "boolean", description: "Add internal links" },
4040
+ use_indexed_pages_internal_links: { type: "boolean", description: "Use indexed pages for internal links" },
4041
+ use_wp_internal_links: { type: "boolean", description: "Use WordPress internal links" },
4042
+ use_app_internal_links: { type: "boolean", description: "Use app internal links" },
4043
+ use_list_internal_links: { type: "boolean", description: "Use list internal links" },
4044
+ internal_links_wp_status: { type: "array", items: { type: "string" }, description: "WordPress post status for internal links" },
4045
+ internal_links_list: { type: "string", description: "Internal links list" },
4046
+ internal_links_wp_connection: { type: "string", description: "WordPress connection ID for internal links" },
4047
+ // WordPress publishing
4048
+ use_publishwordpress: { type: "boolean", description: "Auto-publish to WordPress" },
4049
+ publishwordpress_date: { type: "string", description: "WordPress publish date" },
4050
+ publishwordpress_status: { type: "string", enum: ["draft", "publish", "future"], description: "WordPress post status" },
4051
+ publishwordpress_category: { type: "number", description: "WordPress category ID" },
4052
+ publishwordpress_author: { type: "number", description: "WordPress author ID" },
4053
+ publishwordpress_connection: { type: "string", description: "WordPress connection ID" },
4054
+ // Additional features
4055
+ use_infotable: { type: "boolean", description: "Add info table" },
4056
+ use_bulletlist: { type: "boolean", description: "Add bullet list" },
4057
+ use_externalsources: { type: "boolean", description: "Use external sources" },
4058
+ use_audio: { type: "boolean", description: "Generate audio" },
4059
+ audio_voice_id: { type: "string", description: "Audio voice ID" },
4060
+ use_social: { type: "boolean", description: "Generate social media posts" },
4061
+ social_networks: { description: "Social networks (array or comma-separated string)" },
4062
+ use_blockquotes: { type: "boolean", description: "Add blockquotes" },
4063
+ use_summary: { type: "boolean", description: "Add summary" },
4064
+ use_webhook: { type: "boolean", description: "Trigger webhook" },
4065
+ webhook_connection_id: { type: "string", description: "Webhook connection ID" }
4066
+ },
4067
+ required: ["subject"]
4068
+ },
3940
4069
  handler: /* @__PURE__ */ __name(async (args) => {
3941
4070
  try {
3942
4071
  const validated = DiscoverContentSchema.parse(args);