@wix/mcp 1.0.90 → 1.0.92

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.
@@ -12124,7 +12124,7 @@ function buildSystemReminderGuidelines(includeReadme, includeImageUploadGuidance
12124
12124
  "if the WixREADME tool is available to you, YOU MUST USE IT AT THE BEGINNING OF ANY CONVERSATION and then continue with calling the other tools and calling the Wix APIs until the task is completed.",
12125
12125
  "**Exception \u2014 creating a new Wix site/website:** For a normal creation request \u2014 and only then \u2014 skip WixREADME and the docs search, and route straight to the Wix site-creation tools available to you; their descriptions carry the routing rules. Everything else starts with WixREADME as usual.",
12126
12126
  "If the user explicitly asks for a headless site, Wix Classic Editor site, or manual account/API-based site creation, call CreateWixBusinessGuide right away \u2014 these don't need the site's purpose first.",
12127
- "If the user \u2014 or you, earlier in this conversation \u2014 already have a finished page or site in any form (HTML/CSS/JS files, a static build, a zip, another builder's export, a design you can export to HTML) and want it live on Wix, call DeployWebsite right away \u2014 not a site-creation tool, not the docs.",
12127
+ "If the user \u2014 or you, earlier in this conversation \u2014 already have a finished page or site in any form (HTML/CSS/JS files, a static build, a zip, another builder's export, a design you can export to HTML) and want it live on Wix, call StartDeployWebsite right away \u2014 not a site-creation tool, not the docs.",
12128
12128
  "Never default to AI or search templates unless the user explicitly requests it. When the user named no creation method - let the user make that choice as the site-creation tools' descriptions direct. Never route normal site creation through ManageWixSite, CallWixSiteAPI, or ExecuteWixAPI."
12129
12129
  );
12130
12130
  }
@@ -12204,9 +12204,11 @@ var SITE_CREATION_COPY = {
12204
12204
  }
12205
12205
  };
12206
12206
  var SITE_GUIDANCE = dedent_default`
12207
- A new-site request has two things to settle: what the site is for, and how to build it. The how is AI generation vs. starting from a template, so naming templates, a template id or Wix Studio (Wix Studio is also the template side) already settles it.
12207
+ First decide which of two different things is being asked for:
12208
+ - The site is code the user or you control — hand-written HTML/CSS/JS, a static build, a zip, another AI builder's export, or a page or design you made earlier in this conversation — and it should go live on Wix. This is also the route whenever the user wants to keep working on the site here, with you: a Wix Headless site is a regular coded site, so you keep full control of the design and can change and redeploy it from this conversation at any time, and Wix business capabilities can be added to it as a backend when they are needed. Call StartDeployWebsite: it returns the recipe to host those exact files as a Wix Headless site (updates reuse the same site and URL; the drop page is only its fallback). Do not offer AI or templates for this and do not call any site-creation tool.
12209
+ - Wix should create the site — generated with AI from a description, or started from a template — and the user will design and edit it in Wix rather than through you. That is what the site-creation tools do; they never take files you already have.
12208
12210
 
12209
- One case skips all of this: a finished page or site ALREADY EXISTS, in any form — hand-written HTML/CSS/JS, a static build, a zip, another AI builder's export, or a page you made earlier in this conversation. There is nothing to build, so don't offer AI or templates and don't call any site-creation tool: call DeployWebsite, which returns the recipe to publish the files yourself (the drop page is only its fallback).
12211
+ For a new site there are two things to settle: what the site is for, and how to build it. The how is AI generation vs. starting from a template, so naming templates, a template id or Wix Studio (Wix Studio is also the template side) already settles it.
12210
12212
 
12211
12213
  Settle what the site is for first: its purpose, topic, business type, audience, or main visitor action. Naming a method is not a description of the site, and neither is the business or industry on its own.
12212
12214
  If you can't tell yet, ask the preferred question below and nothing else — one question, no creation-method question in the same reply, and no internal tool names.
@@ -12598,7 +12600,7 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
12598
12600
  `,
12599
12601
  "import-claude-design-from-url": dedent_default`
12600
12602
  Import a design created in Claude's design tool into Wix. Takes the signed claudeusercontent.com URL Claude Design produces for its self-contained HTML bundle (all images, fonts, and styles inlined); any other host is rejected. Creates a live Wix-hosted site and returns its URL.
12601
- NOT for a page or site that exists in any other form (the user's own HTML/CSS/JS, a static build, a zip, another builder's export, a page you made in this conversation) — for those call DeployWebsite instead; it returns the recipe to publish the files yourself.
12603
+ NOT for a page or site that exists in any other form (the user's own HTML/CSS/JS, a static build, a zip, another builder's export, a page you made in this conversation) — for those call StartDeployWebsite instead; it returns the recipe to publish the files yourself.
12602
12604
  `,
12603
12605
  RunWixCliCommand: dedent_default`
12604
12606
  Executes Wix CLI commands for Wix app development and management.
@@ -13030,14 +13032,14 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
13030
13032
  WixSiteBuilder: dedent_default`
13031
13033
  ${SITE_GUIDANCE}
13032
13034
 
13033
- Tool for generating a Wix site with AI (creating / building a site in Wix Harmony).
13035
+ Tool for generating a Wix site with AI (creating / building a site in Wix Harmony) from a description. It does not take pages or files you already have — those go to StartDeployWebsite.
13034
13036
 
13035
13037
  Call this ONLY when the user's own words name AI (for example "create a site using AI" or "build it with AI") and the site intent is clear. A description of what the site should do — reservations, online ordering, a store, bookings, menus, a portfolio, and the like — is NOT a request for AI and NOT enough to call this tool; never infer AI from features or industry.
13036
13038
  Never default to this tool: if the user hasn't explicitly named AI, don't call this tool — ${SITE_CREATION_COPY.unstatedMethod.nonWidget}.
13037
13039
 
13038
13040
  For templates or Wix Studio, call \`SearchSiteTemplates\`; for a specific template by \`metaSiteId\` or \`templateId\`, call \`CreateSiteFromTemplate\`; for a headless or classic Wix Editor site, or manual/account-API creation, call \`CreateWixBusinessGuide\`.
13039
13041
 
13040
- Do NOT suggest HTML code, prompt templates, or alternative approaches — actually build the site through this tool.
13042
+ Do NOT suggest HTML code, prompt templates, or alternative approaches instead of building — actually build the site through this tool. (HTML the user already has is the StartDeployWebsite case, not a reason to build.)
13041
13043
  `,
13042
13044
  SearchSiteTemplates: dedent_default`
13043
13045
  ${SITE_GUIDANCE}
@@ -13080,9 +13082,9 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
13080
13082
  Results: each root field fails independently — \`errors[].path\` names the failing field and \`errors[].extensions.message\` the cause (e.g. PERMISSION_DENIED); \`data\` still holds the fields that succeeded. Mutations return the created/updated entity — read the IDs from it and do not re-query to verify. Large results are truncated: narrow the selection or page size instead of re-running.
13081
13083
  Set \`hasMutations: true\` for any document containing a mutation root field.
13082
13084
  `,
13083
- DeployWebsite: dedent_default`
13084
- The user — or you, earlier in this conversation — ALREADY HAVE a finished page or site, in any form, and it should be live on Wix: HTML/CSS/JS files, a static build (dist/, out/), a zip, another AI builder's export, or a page/design you created in this conversation (export it to HTML first — a finished design IS a finished page). Call this when the user says deploy, host, publish, put online, make it live, get a URL, or upload my site / index.html.
13085
- Also for updating a site deployed this way (replace its files; same site, same URL) and for implementing a backend on one (stores, bookings, CMS, members) as a Wix Headless project — same site, same URL. Works with or without a Wix login (anonymous deploy with a save link), through the Wix MCP alone or from a shell.
13085
+ StartDeployWebsite: dedent_default`
13086
+ The user — or you, earlier in this conversation — ALREADY HAVE a finished page or site, in any form, and it should be live on Wix — or an already-deployed Wix Headless site whose files should be replaced. The site can be HTML/CSS/JS files, a static build (dist/, out/), a zip, another AI builder's export, or a page/design you created in this conversation (export it to HTML first — a finished design IS a finished page). Call this when the user says deploy, host, publish, put online, make it live, get a URL, update my site, or upload my site / index.html.
13087
+ Updates keep the same site and URL. Also for implementing a backend on such a site as a Wix Headless project — same site, same URL. Works with or without a Wix login (anonymous deploy with a save link), through the Wix MCP alone or from a shell.
13086
13088
  Missing real functionality — a fake checkout, a form that goes nowhere, bookings — is NOT a reason to rebuild the site with a site-creation tool: deploy the page as is, then add the backend afterwards (the recipe covers it).
13087
13089
  Returns the full recipe; follow it and run the flow yourself. The drop page is only the fallback when you can't.
13088
13090
  NOT for: a screenshot, mockup or reference image of a site the user WANTS (nothing exists to deploy yet — that is site creation: WixSiteBuilder / templates); a Claude Design share URL (import-claude-design-from-url); migrating a live site by URL or CSV exports; adding HTML or code into an existing Wix site; uploading images or documents to a site's media (UploadImageToWixSite).
@@ -13090,7 +13092,7 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
13090
13092
  CreateWixBusinessGuide: dedent_default`
13091
13093
  Provides comprehensive documentation for creating a new Wix business (site, app, etc.).
13092
13094
  Call this ONLY when the user explicitly asks for a headless site, a Wix Classic Editor site, or manual/advanced account/API-based site creation — these don't need the site's purpose first. For normal site-creation ${SITE_CREATION_COPY.normalCreationRoute.nonWidget}; for a specific template id, call \`CreateSiteFromTemplate\`.
13093
- Exception, even when the user says "headless": if a finished page or site already exists in any form (their own HTML/CSS/JS, a static build, a zip, an AI-builder export, a page you made in this conversation) and they want it hosted, don't call this tool — call DeployWebsite, which returns the recipe to publish the files yourself. This guide's CLI flow is for BUILDING a headless frontend, not for hosting ready-made files.
13095
+ Exception, even when the user says "headless": if a finished page or site already exists in any form (their own HTML/CSS/JS, a static build, a zip, an AI-builder export, a page you made in this conversation) and they want it hosted, don't call this tool — call StartDeployWebsite, which returns the recipe to publish the files yourself. This guide's CLI flow is for BUILDING a headless frontend, not for hosting ready-made files.
13094
13096
 
13095
13097
  ## What This Tool Contains
13096
13098
 
@@ -14237,39 +14239,57 @@ ${articleContent}${nextSteps}`;
14237
14239
  );
14238
14240
  }
14239
14241
 
14240
- // src/docs/deploy-website.ts
14241
- var DEPLOY_WEBSITE_TOOL_NAME = "DeployWebsite";
14242
- var DEPLOY_WEBSITE_RECIPE_URL = "https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md";
14242
+ // src/docs/start-deploy-website.ts
14243
+ var START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS = {
14244
+ userRequest: "The user's request that led here, quoted if short, otherwise summarized in a sentence.",
14245
+ siteDescription: "What the site is: its purpose and who it is for. One or two sentences.",
14246
+ siteForm: "The form the site exists in right now (HTML/CSS/JS files, a static build, a zip, another builder's export, a design created in this conversation, or something else), roughly how many files, and whether it includes images.",
14247
+ siteFunctionality: "What the site must be able to do for its visitors beyond showing pages, if anything (for example selling, bookings or reservations, tickets, menus and orders, rentals, forms, memberships or paid plans, donations, a blog, or anything else the user expects to work), in your own words. If it is a plain static site with no such needs, say so.",
14248
+ agentIdentity: "Which agent or product you are and the harness you run in.",
14249
+ wixAccess: "How you can reach Wix from where you run: through this MCP only, or also from a shell whose network can reach wixapis.com; whether you can run the Wix CLI (npx @wix/cli) there and whether it is logged in; and which Wix identity you act with \u2014 the user's login through this MCP, a CLI login, or none."
14250
+ };
14251
+ var START_DEPLOY_WEBSITE_PARAMS = Object.keys(
14252
+ START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS
14253
+ );
14254
+ var START_DEPLOY_WEBSITE_TOOL_NAME = "StartDeployWebsite";
14255
+ var START_DEPLOY_WEBSITE_RECIPE_URL = "https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md";
14243
14256
  var DROP_PAGE_URL = "https://www.wix.com/headless/drop?utm_campaign=mcp";
14244
14257
  var FALLBACK_LINE = `Only if you cannot run it (you can't reach the file bytes, or a step fails and you can't fix it): send the user to ${DROP_PAGE_URL} \u2014 give that URL exactly as written, keeping the utm_campaign=mcp parameter.`;
14245
- function deployWebsiteResponse(recipe) {
14258
+ function startDeployWebsiteResponse(recipe) {
14246
14259
  return [
14247
- `The following is the content of ${DEPLOY_WEBSITE_RECIPE_URL}. Follow it end to end and do the publishing yourself \u2014 do not hand the user instructions.`,
14260
+ `The following is the content of ${START_DEPLOY_WEBSITE_RECIPE_URL}. Follow it end to end and do the publishing yourself \u2014 do not hand the user instructions.`,
14248
14261
  FALLBACK_LINE,
14249
14262
  "---",
14250
14263
  recipe.trim()
14251
14264
  ].join("\n\n");
14252
14265
  }
14253
- var DEPLOY_WEBSITE_POINTER_RESPONSE = [
14254
- `Read and follow this recipe end to end: ${DEPLOY_WEBSITE_RECIPE_URL}`,
14266
+ var START_DEPLOY_WEBSITE_POINTER_RESPONSE = [
14267
+ `Read and follow this recipe end to end: ${START_DEPLOY_WEBSITE_RECIPE_URL}`,
14255
14268
  "It covers creating the site and uploading the files (with or without a Wix login), updating a site deployed this way, and implementing a backend on it (stores, bookings, CMS, members) as a Wix Headless project. Do the publishing yourself \u2014 do not hand the user instructions.",
14256
14269
  FALLBACK_LINE
14257
14270
  ].join("\n\n");
14258
- function addDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetchOptions = {}) {
14259
- if (disableTools.includes(DEPLOY_WEBSITE_TOOL_NAME)) {
14271
+ function addStartDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetchOptions = {}) {
14272
+ if (disableTools.includes(START_DEPLOY_WEBSITE_TOOL_NAME)) {
14260
14273
  return;
14261
14274
  }
14262
14275
  server.tool(
14263
- DEPLOY_WEBSITE_TOOL_NAME,
14264
- toolDescriptions?.[DEPLOY_WEBSITE_TOOL_NAME] ?? defaultToolDescriptions[DEPLOY_WEBSITE_TOOL_NAME],
14265
- {},
14276
+ START_DEPLOY_WEBSITE_TOOL_NAME,
14277
+ toolDescriptions?.[START_DEPLOY_WEBSITE_TOOL_NAME] ?? defaultToolDescriptions[START_DEPLOY_WEBSITE_TOOL_NAME],
14278
+ {
14279
+ userRequest: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.userRequest),
14280
+ siteDescription: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteDescription),
14281
+ siteForm: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteForm),
14282
+ siteFunctionality: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteFunctionality),
14283
+ agentIdentity: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.agentIdentity),
14284
+ wixAccess: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.wixAccess)
14285
+ },
14266
14286
  { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
14267
14287
  async (_args, { httpClient }) => {
14268
- let text = DEPLOY_WEBSITE_POINTER_RESPONSE;
14288
+ let text = START_DEPLOY_WEBSITE_POINTER_RESPONSE;
14269
14289
  try {
14270
14290
  const recipe = await fetchArticleContent(
14271
14291
  httpClient,
14272
- DEPLOY_WEBSITE_RECIPE_URL.replace(/\.md$/, ""),
14292
+ START_DEPLOY_WEBSITE_RECIPE_URL.replace(/\.md$/, ""),
14273
14293
  "article",
14274
14294
  true,
14275
14295
  fetchOptions.skillsPortalUrl,
@@ -14277,11 +14297,11 @@ function addDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetch
14277
14297
  fetchOptions.commitHash
14278
14298
  );
14279
14299
  if (recipe && recipe.trim()) {
14280
- text = deployWebsiteResponse(recipe);
14300
+ text = startDeployWebsiteResponse(recipe);
14281
14301
  }
14282
14302
  } catch (error) {
14283
14303
  console.warn(
14284
- `[DeployWebsite] recipe fetch failed, returning the pointer:`,
14304
+ `[StartDeployWebsite] recipe fetch failed, returning the pointer:`,
14285
14305
  error instanceof Error ? error.message : error
14286
14306
  );
14287
14307
  }
@@ -14338,7 +14358,7 @@ var addDocsTools = (server, allowedTools = [
14338
14358
  const {
14339
14359
  getToKnowWixEnabled = false,
14340
14360
  createWixBusinessGuideEnabled = true,
14341
- deployWebsiteEnabled = true,
14361
+ startDeployWebsiteEnabled = true,
14342
14362
  disableTools,
14343
14363
  toolDescriptions,
14344
14364
  readmeDocs,
@@ -14404,8 +14424,8 @@ var addDocsTools = (server, allowedTools = [
14404
14424
  cliEnabled
14405
14425
  );
14406
14426
  }
14407
- if (deployWebsiteEnabled) {
14408
- addDeployWebsiteTool(server, disableTools || [], toolDescriptions, {
14427
+ if (startDeployWebsiteEnabled) {
14428
+ addStartDeployWebsiteTool(server, disableTools || [], toolDescriptions, {
14409
14429
  skillsPortalUrl,
14410
14430
  repo: effectiveRepo,
14411
14431
  commitHash: effectiveCommitHash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/mcp",
3
- "version": "1.0.90",
3
+ "version": "1.0.92",
4
4
  "description": "A Model Context Protocol server for Wix AI tools",
5
5
  "bin": "./build/bin-standalone.js",
6
6
  "dependencies": {
@@ -133,5 +133,5 @@
133
133
  ]
134
134
  }
135
135
  },
136
- "falconPackageHash": "d562cd11d61654cd119a10a3385e83892fd93dcb6ed41d7d119bc2e4"
136
+ "falconPackageHash": "54656e5ebcb80096bd722cc5f9776c97996d45e5c6701b4288e04af9"
137
137
  }
@@ -1,13 +0,0 @@
1
- import { WixMcpServer } from '../wix-mcp-server.js';
2
- export declare const DEPLOY_WEBSITE_TOOL_NAME = "DeployWebsite";
3
- export declare const DEPLOY_WEBSITE_RECIPE_URL = "https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md";
4
- export declare const DROP_PAGE_URL = "https://www.wix.com/headless/drop?utm_campaign=mcp";
5
- export declare function deployWebsiteResponse(recipe: string): string;
6
- export declare const DEPLOY_WEBSITE_POINTER_RESPONSE: string;
7
- export interface DeployWebsiteFetchOptions {
8
- skillsPortalUrl?: string;
9
- repo?: string;
10
- commitHash?: string;
11
- }
12
- export declare function addDeployWebsiteTool(server: WixMcpServer, disableTools?: string[], toolDescriptions?: Record<string, string>, fetchOptions?: DeployWebsiteFetchOptions): void;
13
- //# sourceMappingURL=deploy-website.d.ts.map
@@ -1,45 +0,0 @@
1
- import { defaultToolDescriptions } from '../config/default-config.js';
2
- import { fetchArticleContent } from './fetch-article.js';
3
- export const DEPLOY_WEBSITE_TOOL_NAME = 'DeployWebsite';
4
- export const DEPLOY_WEBSITE_RECIPE_URL = 'https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md';
5
- export const DROP_PAGE_URL = 'https://www.wix.com/headless/drop?utm_campaign=mcp';
6
- const FALLBACK_LINE = `Only if you cannot run it (you can't reach the file bytes, or a step fails and you can't fix it): send the user to ${DROP_PAGE_URL} — give that URL exactly as written, keeping the utm_campaign=mcp parameter.`;
7
- // The tool exists to take the agent's attention at routing time; the work itself
8
- // is the recipe, so the response IS the recipe — fetched live and returned whole,
9
- // so the agent never has to decide whether to go read it.
10
- export function deployWebsiteResponse(recipe) {
11
- return [
12
- `The following is the content of ${DEPLOY_WEBSITE_RECIPE_URL}. Follow it end to end and do the publishing yourself — do not hand the user instructions.`,
13
- FALLBACK_LINE,
14
- '---',
15
- recipe.trim()
16
- ].join('\n\n');
17
- }
18
- // When the recipe can't be fetched, the pointer still routes correctly.
19
- export const DEPLOY_WEBSITE_POINTER_RESPONSE = [
20
- `Read and follow this recipe end to end: ${DEPLOY_WEBSITE_RECIPE_URL}`,
21
- 'It covers creating the site and uploading the files (with or without a Wix login), updating a site deployed this way, and implementing a backend on it (stores, bookings, CMS, members) as a Wix Headless project. Do the publishing yourself — do not hand the user instructions.',
22
- FALLBACK_LINE
23
- ].join('\n\n');
24
- export function addDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetchOptions = {}) {
25
- if (disableTools.includes(DEPLOY_WEBSITE_TOOL_NAME)) {
26
- return;
27
- }
28
- server.tool(DEPLOY_WEBSITE_TOOL_NAME, toolDescriptions?.[DEPLOY_WEBSITE_TOOL_NAME] ??
29
- defaultToolDescriptions[DEPLOY_WEBSITE_TOOL_NAME], {}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async (_args, { httpClient }) => {
30
- let text = DEPLOY_WEBSITE_POINTER_RESPONSE;
31
- try {
32
- // Same path ReadFullDocsArticle takes for this page: the rawdocs article
33
- // API, addressed without the .md suffix, header scaffolding stripped.
34
- const recipe = await fetchArticleContent(httpClient, DEPLOY_WEBSITE_RECIPE_URL.replace(/\.md$/, ''), 'article', true, fetchOptions.skillsPortalUrl, fetchOptions.repo, fetchOptions.commitHash);
35
- if (recipe && recipe.trim()) {
36
- text = deployWebsiteResponse(recipe);
37
- }
38
- }
39
- catch (error) {
40
- console.warn(`[DeployWebsite] recipe fetch failed, returning the pointer:`, error instanceof Error ? error.message : error);
41
- }
42
- return { content: [{ type: 'text', text }] };
43
- });
44
- }
45
- //# sourceMappingURL=deploy-website.js.map