@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.
- package/build/bin-standalone.js +49 -29
- package/build/cjs/index.cjs +51 -31
- package/build/cjs/toolkit.cjs +49 -29
- package/build/dts/config/default-config.js +12 -10
- package/build/dts/docs/docs.d.ts +2 -2
- package/build/dts/docs/docs.js +4 -4
- package/build/dts/docs/start-deploy-website.d.ts +22 -0
- package/build/dts/docs/start-deploy-website.js +83 -0
- package/build/dts/import-claude-design-tool/index.js +2 -2
- package/build/dts/toolkit-entry.d.cts +2 -2
- package/build/dts/toolkit-entry.d.ts +2 -2
- package/build/esm/index.js +51 -31
- package/build/esm/toolkit.js +49 -29
- package/package.json +2 -2
- package/build/dts/docs/deploy-website.d.ts +0 -13
- package/build/dts/docs/deploy-website.js +0 -45
|
@@ -18,7 +18,7 @@ function buildSystemReminderGuidelines(includeReadme, includeImageUploadGuidance
|
|
|
18
18
|
const exception = includeReadme ? '**Exception:** ' : '';
|
|
19
19
|
const lines = [];
|
|
20
20
|
if (includeReadme) {
|
|
21
|
-
lines.push('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.', '**Exception — creating a new Wix site/website:** For a normal creation request — and only then — 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.', "If the user explicitly asks for a headless site, Wix Classic Editor site, or manual account/API-based site creation, call CreateWixBusinessGuide right away — these don't need the site's purpose first.", "If the user — or you, earlier in this conversation — 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
|
|
21
|
+
lines.push('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.', '**Exception — creating a new Wix site/website:** For a normal creation request — and only then — 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.', "If the user explicitly asks for a headless site, Wix Classic Editor site, or manual account/API-based site creation, call CreateWixBusinessGuide right away — these don't need the site's purpose first.", "If the user — or you, earlier in this conversation — 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 — not a site-creation tool, not the docs.", "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.");
|
|
22
22
|
}
|
|
23
23
|
lines.push(`${exception}If the user asks to list, show, or find their Wix sites, ${includeReadme ? 'skip WixREADME and ' : ''}call ListWixSites directly.`);
|
|
24
24
|
if (includeImageUploadGuidance) {
|
|
@@ -78,9 +78,11 @@ export const SITE_CREATION_COPY = {
|
|
|
78
78
|
* `CreateWixBusinessGuide` is exempt: headless/classic/manual don't need the site's purpose.
|
|
79
79
|
*/
|
|
80
80
|
const SITE_GUIDANCE = dedent `
|
|
81
|
-
|
|
81
|
+
First decide which of two different things is being asked for:
|
|
82
|
+
- 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.
|
|
83
|
+
- 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.
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
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.
|
|
84
86
|
|
|
85
87
|
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.
|
|
86
88
|
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.
|
|
@@ -472,7 +474,7 @@ export function buildToolDescriptions(includeReadme, includeImageUploadGuidance
|
|
|
472
474
|
`,
|
|
473
475
|
'import-claude-design-from-url': dedent `
|
|
474
476
|
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.
|
|
475
|
-
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
|
|
477
|
+
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.
|
|
476
478
|
`,
|
|
477
479
|
RunWixCliCommand: dedent `
|
|
478
480
|
Executes Wix CLI commands for Wix app development and management.
|
|
@@ -904,14 +906,14 @@ export function buildToolDescriptions(includeReadme, includeImageUploadGuidance
|
|
|
904
906
|
WixSiteBuilder: dedent `
|
|
905
907
|
${SITE_GUIDANCE}
|
|
906
908
|
|
|
907
|
-
Tool for generating a Wix site with AI (creating / building a site in Wix Harmony).
|
|
909
|
+
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.
|
|
908
910
|
|
|
909
911
|
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.
|
|
910
912
|
Never default to this tool: if the user hasn't explicitly named AI, don't call this tool — ${SITE_CREATION_COPY.unstatedMethod.nonWidget}.
|
|
911
913
|
|
|
912
914
|
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\`.
|
|
913
915
|
|
|
914
|
-
Do NOT suggest HTML code, prompt templates, or alternative approaches — actually build the site through this tool.
|
|
916
|
+
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.)
|
|
915
917
|
`,
|
|
916
918
|
SearchSiteTemplates: dedent `
|
|
917
919
|
${SITE_GUIDANCE}
|
|
@@ -954,9 +956,9 @@ export function buildToolDescriptions(includeReadme, includeImageUploadGuidance
|
|
|
954
956
|
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.
|
|
955
957
|
Set \`hasMutations: true\` for any document containing a mutation root field.
|
|
956
958
|
`,
|
|
957
|
-
|
|
958
|
-
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
|
|
959
|
-
|
|
959
|
+
StartDeployWebsite: dedent `
|
|
960
|
+
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.
|
|
961
|
+
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.
|
|
960
962
|
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).
|
|
961
963
|
Returns the full recipe; follow it and run the flow yourself. The drop page is only the fallback when you can't.
|
|
962
964
|
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).
|
|
@@ -964,7 +966,7 @@ export function buildToolDescriptions(includeReadme, includeImageUploadGuidance
|
|
|
964
966
|
CreateWixBusinessGuide: dedent `
|
|
965
967
|
Provides comprehensive documentation for creating a new Wix business (site, app, etc.).
|
|
966
968
|
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\`.
|
|
967
|
-
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
|
|
969
|
+
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.
|
|
968
970
|
|
|
969
971
|
## What This Tool Contains
|
|
970
972
|
|
package/build/dts/docs/docs.d.ts
CHANGED
|
@@ -19,8 +19,8 @@ export interface ReadmeDocConfig {
|
|
|
19
19
|
export interface DocsToolsOptions {
|
|
20
20
|
getToKnowWixEnabled?: boolean;
|
|
21
21
|
createWixBusinessGuideEnabled?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
|
|
22
|
+
/** StartDeployWebsite (publish ready-made site files) — an account-owner flow; off for visitor servers. */
|
|
23
|
+
startDeployWebsiteEnabled?: boolean;
|
|
24
24
|
disableTools?: string[];
|
|
25
25
|
/** Custom descriptions for tools, keyed by tool name */
|
|
26
26
|
toolDescriptions?: Record<string, string>;
|
package/build/dts/docs/docs.js
CHANGED
|
@@ -8,7 +8,7 @@ import { fetchPlatformizedMenu, MenuNotFoundError } from './browse-menu.js';
|
|
|
8
8
|
import { isQueryOrSearchEndpoint, QUERY_CAPABILITY_MARKER } from './searchFormatting.js';
|
|
9
9
|
import { addGetToKnowTools, addGetSiteContextTool } from './get-to-know.js';
|
|
10
10
|
import { addCreateWixBusinessGuideTools } from './create-site-guide.js';
|
|
11
|
-
import {
|
|
11
|
+
import { addStartDeployWebsiteTool } from './start-deploy-website.js';
|
|
12
12
|
import { defaultToolDescriptions } from '../config/default-config.js';
|
|
13
13
|
import { desc } from '../config/param-descriptions.js';
|
|
14
14
|
import dedent from 'dedent';
|
|
@@ -68,7 +68,7 @@ export const addDocsTools = (server, allowedTools = [
|
|
|
68
68
|
'CLI',
|
|
69
69
|
'OVERVIEW'
|
|
70
70
|
], options = {}) => {
|
|
71
|
-
const { getToKnowWixEnabled = false, createWixBusinessGuideEnabled = true,
|
|
71
|
+
const { getToKnowWixEnabled = false, createWixBusinessGuideEnabled = true, startDeployWebsiteEnabled = true, disableTools, toolDescriptions, readmeDocs, authStrategy, skillsPortalUrl, skillsRepo, repo, skillsPr, commitHash, skillsTags, dynamicContextEnabled, cliEnabled = false, usePlatformizedSearch = true, usePlatformizedBrowse = true } = options;
|
|
72
72
|
const effectiveRepo = repo ?? skillsRepo;
|
|
73
73
|
const effectiveCommitHash = commitHash ?? skillsPr;
|
|
74
74
|
// Helper to get description (custom or default)
|
|
@@ -126,8 +126,8 @@ export const addDocsTools = (server, allowedTools = [
|
|
|
126
126
|
}
|
|
127
127
|
// On by default: it is a routing slot, not a docs source — the agent with
|
|
128
128
|
// ready-made site files must find it next to the site-creation tools.
|
|
129
|
-
if (
|
|
130
|
-
|
|
129
|
+
if (startDeployWebsiteEnabled) {
|
|
130
|
+
addStartDeployWebsiteTool(server, disableTools || [], toolDescriptions, {
|
|
131
131
|
skillsPortalUrl,
|
|
132
132
|
repo: effectiveRepo,
|
|
133
133
|
commitHash: effectiveCommitHash
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WixMcpServer } from '../wix-mcp-server.js';
|
|
2
|
+
export declare const START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS: {
|
|
3
|
+
readonly userRequest: "The user's request that led here, quoted if short, otherwise summarized in a sentence.";
|
|
4
|
+
readonly siteDescription: "What the site is: its purpose and who it is for. One or two sentences.";
|
|
5
|
+
readonly 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.";
|
|
6
|
+
readonly 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.";
|
|
7
|
+
readonly agentIdentity: "Which agent or product you are and the harness you run in.";
|
|
8
|
+
readonly 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 — the user's login through this MCP, a CLI login, or none.";
|
|
9
|
+
};
|
|
10
|
+
export declare const START_DEPLOY_WEBSITE_PARAMS: Array<keyof typeof START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS>;
|
|
11
|
+
export declare const START_DEPLOY_WEBSITE_TOOL_NAME = "StartDeployWebsite";
|
|
12
|
+
export declare const START_DEPLOY_WEBSITE_RECIPE_URL = "https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md";
|
|
13
|
+
export declare const DROP_PAGE_URL = "https://www.wix.com/headless/drop?utm_campaign=mcp";
|
|
14
|
+
export declare function startDeployWebsiteResponse(recipe: string): string;
|
|
15
|
+
export declare const START_DEPLOY_WEBSITE_POINTER_RESPONSE: string;
|
|
16
|
+
export interface StartDeployWebsiteFetchOptions {
|
|
17
|
+
skillsPortalUrl?: string;
|
|
18
|
+
repo?: string;
|
|
19
|
+
commitHash?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function addStartDeployWebsiteTool(server: WixMcpServer, disableTools?: string[], toolDescriptions?: Record<string, string>, fetchOptions?: StartDeployWebsiteFetchOptions): void;
|
|
22
|
+
//# sourceMappingURL=start-deploy-website.d.ts.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defaultToolDescriptions } from '../config/default-config.js';
|
|
3
|
+
import { fetchArticleContent } from './fetch-article.js';
|
|
4
|
+
// These arguments are the only record of who deploys what; they are read by
|
|
5
|
+
// people via BI and do not change the response. One field per question so each
|
|
6
|
+
// can be analyzed on its own.
|
|
7
|
+
export const START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS = {
|
|
8
|
+
userRequest: "The user's request that led here, quoted if short, otherwise summarized in a sentence.",
|
|
9
|
+
siteDescription: 'What the site is: its purpose and who it is for. One or two sentences.',
|
|
10
|
+
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.",
|
|
11
|
+
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.',
|
|
12
|
+
agentIdentity: 'Which agent or product you are and the harness you run in.',
|
|
13
|
+
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 — the user's login through this MCP, a CLI login, or none."
|
|
14
|
+
};
|
|
15
|
+
export const START_DEPLOY_WEBSITE_PARAMS = Object.keys(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS);
|
|
16
|
+
export const START_DEPLOY_WEBSITE_TOOL_NAME = 'StartDeployWebsite';
|
|
17
|
+
export const START_DEPLOY_WEBSITE_RECIPE_URL = 'https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md';
|
|
18
|
+
export const DROP_PAGE_URL = 'https://www.wix.com/headless/drop?utm_campaign=mcp';
|
|
19
|
+
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.`;
|
|
20
|
+
// The tool exists to take the agent's attention at routing time; the work itself
|
|
21
|
+
// is the recipe, so the response IS the recipe — fetched live and returned whole,
|
|
22
|
+
// so the agent never has to decide whether to go read it.
|
|
23
|
+
export function startDeployWebsiteResponse(recipe) {
|
|
24
|
+
return [
|
|
25
|
+
`The following is the content of ${START_DEPLOY_WEBSITE_RECIPE_URL}. Follow it end to end and do the publishing yourself — do not hand the user instructions.`,
|
|
26
|
+
FALLBACK_LINE,
|
|
27
|
+
'---',
|
|
28
|
+
recipe.trim()
|
|
29
|
+
].join('\n\n');
|
|
30
|
+
}
|
|
31
|
+
// When the recipe can't be fetched, the pointer still routes correctly.
|
|
32
|
+
export const START_DEPLOY_WEBSITE_POINTER_RESPONSE = [
|
|
33
|
+
`Read and follow this recipe end to end: ${START_DEPLOY_WEBSITE_RECIPE_URL}`,
|
|
34
|
+
'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.',
|
|
35
|
+
FALLBACK_LINE
|
|
36
|
+
].join('\n\n');
|
|
37
|
+
export function addStartDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetchOptions = {}) {
|
|
38
|
+
if (disableTools.includes(START_DEPLOY_WEBSITE_TOOL_NAME)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
server.tool(START_DEPLOY_WEBSITE_TOOL_NAME, toolDescriptions?.[START_DEPLOY_WEBSITE_TOOL_NAME] ??
|
|
42
|
+
defaultToolDescriptions[START_DEPLOY_WEBSITE_TOOL_NAME], {
|
|
43
|
+
userRequest: z
|
|
44
|
+
.string()
|
|
45
|
+
.min(1)
|
|
46
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.userRequest),
|
|
47
|
+
siteDescription: z
|
|
48
|
+
.string()
|
|
49
|
+
.min(1)
|
|
50
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteDescription),
|
|
51
|
+
siteForm: z
|
|
52
|
+
.string()
|
|
53
|
+
.min(1)
|
|
54
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteForm),
|
|
55
|
+
siteFunctionality: z
|
|
56
|
+
.string()
|
|
57
|
+
.min(1)
|
|
58
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteFunctionality),
|
|
59
|
+
agentIdentity: z
|
|
60
|
+
.string()
|
|
61
|
+
.min(1)
|
|
62
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.agentIdentity),
|
|
63
|
+
wixAccess: z
|
|
64
|
+
.string()
|
|
65
|
+
.min(1)
|
|
66
|
+
.describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.wixAccess)
|
|
67
|
+
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async (_args, { httpClient }) => {
|
|
68
|
+
let text = START_DEPLOY_WEBSITE_POINTER_RESPONSE;
|
|
69
|
+
try {
|
|
70
|
+
// Same path ReadFullDocsArticle takes for this page: the rawdocs article
|
|
71
|
+
// API, addressed without the .md suffix, header scaffolding stripped.
|
|
72
|
+
const recipe = await fetchArticleContent(httpClient, START_DEPLOY_WEBSITE_RECIPE_URL.replace(/\.md$/, ''), 'article', true, fetchOptions.skillsPortalUrl, fetchOptions.repo, fetchOptions.commitHash);
|
|
73
|
+
if (recipe && recipe.trim()) {
|
|
74
|
+
text = startDeployWebsiteResponse(recipe);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.warn(`[StartDeployWebsite] recipe fetch failed, returning the pointer:`, error instanceof Error ? error.message : error);
|
|
79
|
+
}
|
|
80
|
+
return { content: [{ type: 'text', text }] };
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=start-deploy-website.js.map
|
|
@@ -86,11 +86,11 @@ export function addImportClaudeDesignTool(server, authStrategy, options) {
|
|
|
86
86
|
designUrl = new URL(args.url);
|
|
87
87
|
}
|
|
88
88
|
catch {
|
|
89
|
-
return errorResult("Invalid design URL — this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool — call
|
|
89
|
+
return errorResult("Invalid design URL — this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool — call StartDeployWebsite, which returns the recipe to publish the files yourself. If that tool isn't available: read https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md and publish them yourself, or send the user to https://www.wix.com/headless/drop?utm_campaign=mcp.");
|
|
90
90
|
}
|
|
91
91
|
if (designUrl.protocol !== 'https:' ||
|
|
92
92
|
!designUrl.hostname.endsWith(CLAUDE_USER_CONTENT_HOST_SUFFIX)) {
|
|
93
|
-
return errorResult("Invalid design URL — this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool — call
|
|
93
|
+
return errorResult("Invalid design URL — this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool — call StartDeployWebsite, which returns the recipe to publish the files yourself. If that tool isn't available: read https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md and publish them yourself, or send the user to https://www.wix.com/headless/drop?utm_campaign=mcp.");
|
|
94
94
|
}
|
|
95
95
|
// Resolve the caller's account identity BEFORE the design fetch — the
|
|
96
96
|
// design URL is single-use, so an unauthenticated caller must fail
|
|
@@ -127,8 +127,8 @@ export interface ReadmeDocConfig {
|
|
|
127
127
|
export interface DocsToolsOptions {
|
|
128
128
|
getToKnowWixEnabled?: boolean;
|
|
129
129
|
createWixBusinessGuideEnabled?: boolean;
|
|
130
|
-
/**
|
|
131
|
-
|
|
130
|
+
/** StartDeployWebsite (publish ready-made site files) — an account-owner flow; off for visitor servers. */
|
|
131
|
+
startDeployWebsiteEnabled?: boolean;
|
|
132
132
|
disableTools?: string[];
|
|
133
133
|
/** Custom descriptions for tools, keyed by tool name */
|
|
134
134
|
toolDescriptions?: Record<string, string>;
|
|
@@ -127,8 +127,8 @@ export interface ReadmeDocConfig {
|
|
|
127
127
|
export interface DocsToolsOptions {
|
|
128
128
|
getToKnowWixEnabled?: boolean;
|
|
129
129
|
createWixBusinessGuideEnabled?: boolean;
|
|
130
|
-
/**
|
|
131
|
-
|
|
130
|
+
/** StartDeployWebsite (publish ready-made site files) — an account-owner flow; off for visitor servers. */
|
|
131
|
+
startDeployWebsiteEnabled?: boolean;
|
|
132
132
|
disableTools?: string[];
|
|
133
133
|
/** Custom descriptions for tools, keyed by tool name */
|
|
134
134
|
toolDescriptions?: Record<string, string>;
|
package/build/esm/index.js
CHANGED
|
@@ -30928,7 +30928,7 @@ function buildSystemReminderGuidelines(includeReadme, includeImageUploadGuidance
|
|
|
30928
30928
|
"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.",
|
|
30929
30929
|
"**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.",
|
|
30930
30930
|
"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.",
|
|
30931
|
-
"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
|
|
30931
|
+
"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.",
|
|
30932
30932
|
"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."
|
|
30933
30933
|
);
|
|
30934
30934
|
}
|
|
@@ -31008,9 +31008,11 @@ var SITE_CREATION_COPY = {
|
|
|
31008
31008
|
}
|
|
31009
31009
|
};
|
|
31010
31010
|
var SITE_GUIDANCE = dedent_default`
|
|
31011
|
-
|
|
31011
|
+
First decide which of two different things is being asked for:
|
|
31012
|
+
- 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.
|
|
31013
|
+
- 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.
|
|
31012
31014
|
|
|
31013
|
-
|
|
31015
|
+
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.
|
|
31014
31016
|
|
|
31015
31017
|
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.
|
|
31016
31018
|
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.
|
|
@@ -31402,7 +31404,7 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
|
|
|
31402
31404
|
`,
|
|
31403
31405
|
"import-claude-design-from-url": dedent_default`
|
|
31404
31406
|
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.
|
|
31405
|
-
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
|
|
31407
|
+
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.
|
|
31406
31408
|
`,
|
|
31407
31409
|
RunWixCliCommand: dedent_default`
|
|
31408
31410
|
Executes Wix CLI commands for Wix app development and management.
|
|
@@ -31834,14 +31836,14 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
|
|
|
31834
31836
|
WixSiteBuilder: dedent_default`
|
|
31835
31837
|
${SITE_GUIDANCE}
|
|
31836
31838
|
|
|
31837
|
-
Tool for generating a Wix site with AI (creating / building a site in Wix Harmony).
|
|
31839
|
+
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.
|
|
31838
31840
|
|
|
31839
31841
|
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.
|
|
31840
31842
|
Never default to this tool: if the user hasn't explicitly named AI, don't call this tool — ${SITE_CREATION_COPY.unstatedMethod.nonWidget}.
|
|
31841
31843
|
|
|
31842
31844
|
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\`.
|
|
31843
31845
|
|
|
31844
|
-
Do NOT suggest HTML code, prompt templates, or alternative approaches — actually build the site through this tool.
|
|
31846
|
+
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.)
|
|
31845
31847
|
`,
|
|
31846
31848
|
SearchSiteTemplates: dedent_default`
|
|
31847
31849
|
${SITE_GUIDANCE}
|
|
@@ -31884,9 +31886,9 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
|
|
|
31884
31886
|
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.
|
|
31885
31887
|
Set \`hasMutations: true\` for any document containing a mutation root field.
|
|
31886
31888
|
`,
|
|
31887
|
-
|
|
31888
|
-
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
|
|
31889
|
-
|
|
31889
|
+
StartDeployWebsite: dedent_default`
|
|
31890
|
+
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.
|
|
31891
|
+
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.
|
|
31890
31892
|
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).
|
|
31891
31893
|
Returns the full recipe; follow it and run the flow yourself. The drop page is only the fallback when you can't.
|
|
31892
31894
|
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).
|
|
@@ -31894,7 +31896,7 @@ function buildToolDescriptions(includeReadme, includeImageUploadGuidance = true)
|
|
|
31894
31896
|
CreateWixBusinessGuide: dedent_default`
|
|
31895
31897
|
Provides comprehensive documentation for creating a new Wix business (site, app, etc.).
|
|
31896
31898
|
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\`.
|
|
31897
|
-
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
|
|
31899
|
+
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.
|
|
31898
31900
|
|
|
31899
31901
|
## What This Tool Contains
|
|
31900
31902
|
|
|
@@ -33041,39 +33043,57 @@ ${articleContent}${nextSteps}`;
|
|
|
33041
33043
|
);
|
|
33042
33044
|
}
|
|
33043
33045
|
|
|
33044
|
-
// src/docs/deploy-website.ts
|
|
33045
|
-
var
|
|
33046
|
-
|
|
33046
|
+
// src/docs/start-deploy-website.ts
|
|
33047
|
+
var START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS = {
|
|
33048
|
+
userRequest: "The user's request that led here, quoted if short, otherwise summarized in a sentence.",
|
|
33049
|
+
siteDescription: "What the site is: its purpose and who it is for. One or two sentences.",
|
|
33050
|
+
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.",
|
|
33051
|
+
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.",
|
|
33052
|
+
agentIdentity: "Which agent or product you are and the harness you run in.",
|
|
33053
|
+
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."
|
|
33054
|
+
};
|
|
33055
|
+
var START_DEPLOY_WEBSITE_PARAMS = Object.keys(
|
|
33056
|
+
START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS
|
|
33057
|
+
);
|
|
33058
|
+
var START_DEPLOY_WEBSITE_TOOL_NAME = "StartDeployWebsite";
|
|
33059
|
+
var START_DEPLOY_WEBSITE_RECIPE_URL = "https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md";
|
|
33047
33060
|
var DROP_PAGE_URL = "https://www.wix.com/headless/drop?utm_campaign=mcp";
|
|
33048
33061
|
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.`;
|
|
33049
|
-
function
|
|
33062
|
+
function startDeployWebsiteResponse(recipe) {
|
|
33050
33063
|
return [
|
|
33051
|
-
`The following is the content of ${
|
|
33064
|
+
`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.`,
|
|
33052
33065
|
FALLBACK_LINE,
|
|
33053
33066
|
"---",
|
|
33054
33067
|
recipe.trim()
|
|
33055
33068
|
].join("\n\n");
|
|
33056
33069
|
}
|
|
33057
|
-
var
|
|
33058
|
-
`Read and follow this recipe end to end: ${
|
|
33070
|
+
var START_DEPLOY_WEBSITE_POINTER_RESPONSE = [
|
|
33071
|
+
`Read and follow this recipe end to end: ${START_DEPLOY_WEBSITE_RECIPE_URL}`,
|
|
33059
33072
|
"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.",
|
|
33060
33073
|
FALLBACK_LINE
|
|
33061
33074
|
].join("\n\n");
|
|
33062
|
-
function
|
|
33063
|
-
if (disableTools.includes(
|
|
33075
|
+
function addStartDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetchOptions = {}) {
|
|
33076
|
+
if (disableTools.includes(START_DEPLOY_WEBSITE_TOOL_NAME)) {
|
|
33064
33077
|
return;
|
|
33065
33078
|
}
|
|
33066
33079
|
server.tool(
|
|
33067
|
-
|
|
33068
|
-
toolDescriptions?.[
|
|
33069
|
-
{
|
|
33080
|
+
START_DEPLOY_WEBSITE_TOOL_NAME,
|
|
33081
|
+
toolDescriptions?.[START_DEPLOY_WEBSITE_TOOL_NAME] ?? defaultToolDescriptions[START_DEPLOY_WEBSITE_TOOL_NAME],
|
|
33082
|
+
{
|
|
33083
|
+
userRequest: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.userRequest),
|
|
33084
|
+
siteDescription: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteDescription),
|
|
33085
|
+
siteForm: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteForm),
|
|
33086
|
+
siteFunctionality: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.siteFunctionality),
|
|
33087
|
+
agentIdentity: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.agentIdentity),
|
|
33088
|
+
wixAccess: external_exports.string().min(1).describe(START_DEPLOY_WEBSITE_PARAM_DESCRIPTIONS.wixAccess)
|
|
33089
|
+
},
|
|
33070
33090
|
{ readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
33071
33091
|
async (_args, { httpClient: httpClient6 }) => {
|
|
33072
|
-
let text =
|
|
33092
|
+
let text = START_DEPLOY_WEBSITE_POINTER_RESPONSE;
|
|
33073
33093
|
try {
|
|
33074
33094
|
const recipe = await fetchArticleContent(
|
|
33075
33095
|
httpClient6,
|
|
33076
|
-
|
|
33096
|
+
START_DEPLOY_WEBSITE_RECIPE_URL.replace(/\.md$/, ""),
|
|
33077
33097
|
"article",
|
|
33078
33098
|
true,
|
|
33079
33099
|
fetchOptions.skillsPortalUrl,
|
|
@@ -33081,11 +33101,11 @@ function addDeployWebsiteTool(server, disableTools = [], toolDescriptions, fetch
|
|
|
33081
33101
|
fetchOptions.commitHash
|
|
33082
33102
|
);
|
|
33083
33103
|
if (recipe && recipe.trim()) {
|
|
33084
|
-
text =
|
|
33104
|
+
text = startDeployWebsiteResponse(recipe);
|
|
33085
33105
|
}
|
|
33086
33106
|
} catch (error2) {
|
|
33087
33107
|
console.warn(
|
|
33088
|
-
`[
|
|
33108
|
+
`[StartDeployWebsite] recipe fetch failed, returning the pointer:`,
|
|
33089
33109
|
error2 instanceof Error ? error2.message : error2
|
|
33090
33110
|
);
|
|
33091
33111
|
}
|
|
@@ -33153,7 +33173,7 @@ var addDocsTools = (server, allowedTools = [
|
|
|
33153
33173
|
const {
|
|
33154
33174
|
getToKnowWixEnabled = false,
|
|
33155
33175
|
createWixBusinessGuideEnabled = true,
|
|
33156
|
-
|
|
33176
|
+
startDeployWebsiteEnabled = true,
|
|
33157
33177
|
disableTools,
|
|
33158
33178
|
toolDescriptions,
|
|
33159
33179
|
readmeDocs,
|
|
@@ -33219,8 +33239,8 @@ var addDocsTools = (server, allowedTools = [
|
|
|
33219
33239
|
cliEnabled
|
|
33220
33240
|
);
|
|
33221
33241
|
}
|
|
33222
|
-
if (
|
|
33223
|
-
|
|
33242
|
+
if (startDeployWebsiteEnabled) {
|
|
33243
|
+
addStartDeployWebsiteTool(server, disableTools || [], toolDescriptions, {
|
|
33224
33244
|
skillsPortalUrl,
|
|
33225
33245
|
repo: effectiveRepo,
|
|
33226
33246
|
commitHash: effectiveCommitHash
|
|
@@ -46002,12 +46022,12 @@ function addImportClaudeDesignTool(server, authStrategy, options) {
|
|
|
46002
46022
|
designUrl = new URL(args.url);
|
|
46003
46023
|
} catch {
|
|
46004
46024
|
return errorResult(
|
|
46005
|
-
"Invalid design URL \u2014 this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool \u2014 call
|
|
46025
|
+
"Invalid design URL \u2014 this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool \u2014 call StartDeployWebsite, which returns the recipe to publish the files yourself. If that tool isn't available: read https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md and publish them yourself, or send the user to https://www.wix.com/headless/drop?utm_campaign=mcp."
|
|
46006
46026
|
);
|
|
46007
46027
|
}
|
|
46008
46028
|
if (designUrl.protocol !== "https:" || !designUrl.hostname.endsWith(CLAUDE_USER_CONTENT_HOST_SUFFIX)) {
|
|
46009
46029
|
return errorResult(
|
|
46010
|
-
"Invalid design URL \u2014 this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool \u2014 call
|
|
46030
|
+
"Invalid design URL \u2014 this tool only accepts the claudeusercontent.com URL produced by Claude Design. For a page or site that exists in any other form (the user's files, a build, a zip, another builder's export, a page you made), do not retry this tool \u2014 call StartDeployWebsite, which returns the recipe to publish the files yourself. If that tool isn't available: read https://dev.wix.com/docs/api-reference/account-level/sites/skills/upload-a-website-or-html-files.md and publish them yourself, or send the user to https://www.wix.com/headless/drop?utm_campaign=mcp."
|
|
46011
46031
|
);
|
|
46012
46032
|
}
|
|
46013
46033
|
const accountHeaders = await authStrategy.getAccountAuthHeaders();
|