@hostinger/mcp 3.0.0 → 3.2.0

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +16 -287
  3. package/gemini-extension.json +1 -1
  4. package/package.json +2 -1
  5. package/server.json +2 -2
  6. package/skills/audit-hosting/SKILL.md +1 -1
  7. package/skills/deploy-to-hosting/SKILL.md +32 -15
  8. package/skills/headless/references/DATABASE.md +3 -3
  9. package/skills/headless/references/DEPLOYMENT.md +10 -12
  10. package/skills/migrate-to-hosting/SKILL.md +3 -3
  11. package/skills/troubleshoot-website/SKILL.md +2 -2
  12. package/src/core/catalog.js +4 -0
  13. package/src/core/catalog.ts +6 -1
  14. package/src/core/instructions.agency-hosting.js +2 -0
  15. package/src/core/instructions.agency-hosting.ts +3 -0
  16. package/src/core/instructions.js +1 -1
  17. package/src/core/instructions.ts +1 -1
  18. package/src/core/runtime.js +1925 -1228
  19. package/src/core/runtime.ts +1891 -1193
  20. package/src/core/skills.js +18 -18
  21. package/src/core/skills.ts +18 -18
  22. package/src/core/tools/agency-hosting.ts +2 -0
  23. package/src/core/tools/agent-readiness.ts +2 -0
  24. package/src/core/tools/all.js +290 -26
  25. package/src/core/tools/all.ts +292 -26
  26. package/src/core/tools/billing.ts +2 -0
  27. package/src/core/tools/dns.ts +2 -0
  28. package/src/core/tools/domains.ts +2 -0
  29. package/src/core/tools/ecommerce.js +82 -2
  30. package/src/core/tools/ecommerce.ts +84 -2
  31. package/src/core/tools/horizons.ts +2 -0
  32. package/src/core/tools/hosting.js +202 -21
  33. package/src/core/tools/hosting.ts +204 -21
  34. package/src/core/tools/mail.ts +2 -0
  35. package/src/core/tools/reach.ts +2 -0
  36. package/src/core/tools/vps.ts +2 -0
  37. package/src/core/tools/wordpress.ts +2 -0
  38. package/src/servers/agency-hosting.js +2 -2
  39. package/src/servers/agency-hosting.ts +2 -2
  40. package/src/servers/agent-readiness.js +1 -1
  41. package/src/servers/agent-readiness.ts +1 -1
  42. package/src/servers/all.js +1 -1
  43. package/src/servers/all.ts +1 -1
  44. package/src/servers/billing.js +1 -1
  45. package/src/servers/billing.ts +1 -1
  46. package/src/servers/dns.js +1 -1
  47. package/src/servers/dns.ts +1 -1
  48. package/src/servers/domains.js +1 -1
  49. package/src/servers/domains.ts +1 -1
  50. package/src/servers/ecommerce.js +1 -1
  51. package/src/servers/ecommerce.ts +1 -1
  52. package/src/servers/horizons.js +1 -1
  53. package/src/servers/horizons.ts +1 -1
  54. package/src/servers/hosting.js +1 -1
  55. package/src/servers/hosting.ts +1 -1
  56. package/src/servers/mail.js +1 -1
  57. package/src/servers/mail.ts +1 -1
  58. package/src/servers/reach.js +1 -1
  59. package/src/servers/reach.ts +1 -1
  60. package/src/servers/vps.js +1 -1
  61. package/src/servers/vps.ts +1 -1
  62. package/src/servers/wordpress.js +1 -1
  63. package/src/servers/wordpress.ts +1 -1
  64. package/types.d.ts +105 -5
@@ -6,6 +6,8 @@ export interface OpenApiTool extends Tool {
6
6
  path: string;
7
7
  security: unknown[];
8
8
  custom?: boolean;
9
+ hidden?: boolean;
10
+ replacesHidden?: boolean;
9
11
  group?: string;
10
12
  topic?: string;
11
13
  handlerMethod?: string;
@@ -14,6 +16,166 @@ export interface OpenApiTool extends Tool {
14
16
  }
15
17
 
16
18
  const tools: OpenApiTool[] = [
19
+ {
20
+ "name": "hosting_deploy",
21
+ "title": "Deploy website, nodejs app, WordPress plugin or theme",
22
+ "annotations": {
23
+ "title": "Deploy website, nodejs app, WordPress plugin or theme",
24
+ "readOnlyHint": false,
25
+ "destructiveHint": true
26
+ },
27
+ "topic": "hosting",
28
+ "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, pass appType and nodeVersion from the project's engines, plus outputDirectory and buildScript if the app has a build step). Git needs GitHub or GitLab connected once in hPanel.",
29
+ "method": "",
30
+ "path": "",
31
+ "inputSchema": {
32
+ "type": "object",
33
+ "properties": {
34
+ "domain": {
35
+ "type": "string",
36
+ "description": "Domain name of the website to deploy to (e.g., example.com)"
37
+ },
38
+ "path": {
39
+ "type": "string",
40
+ "description": "Local directory (preferred; it is archived for you, skipping node_modules, .git and .env files, but not reading .gitignore, so keep build output out) or archive (zip, tar, tar.gz, tgz, 7z, gz, gzip). Not together with git."
41
+ },
42
+ "git": {
43
+ "type": "object",
44
+ "description": "Deploy a repository branch instead of local files. Not together with path.",
45
+ "properties": {
46
+ "repository": {
47
+ "type": "string",
48
+ "description": "owner/name, e.g. hostinger/my-site (GitLab group paths may have more slashes)"
49
+ },
50
+ "branch": {
51
+ "type": "string",
52
+ "description": "Branch to deploy, e.g. main"
53
+ },
54
+ "directory": {
55
+ "type": "string",
56
+ "description": "Folder under the website's document root to deploy into (static deploys only; default the document root), e.g. my-api"
57
+ }
58
+ },
59
+ "required": [
60
+ "repository",
61
+ "branch"
62
+ ]
63
+ },
64
+ "type": {
65
+ "type": "string",
66
+ "enum": [
67
+ "static",
68
+ "nodejs",
69
+ "wordpress-site",
70
+ "wordpress-plugin",
71
+ "wordpress-theme"
72
+ ],
73
+ "description": "What is deployed. Detected for a directory (a Plugin Name: or Theme Name: header, wp-config.php or wp-content, a package.json with a build or start script); required for an archive, when detection reports ambiguity, and for a Git deploy unless the site already runs a Node.js app or Node.js settings are passed. static also covers PHP."
74
+ },
75
+ "slug": {
76
+ "type": "string",
77
+ "description": "WordPress plugin or theme slug: lower-case letters, digits, - and _ (default: the directory name)"
78
+ },
79
+ "activate": {
80
+ "type": "boolean",
81
+ "description": "Activate the theme after deployment (WordPress themes only, default: false)"
82
+ },
83
+ "databaseDump": {
84
+ "type": "string",
85
+ "description": "Path to a .sql dump; required for a WordPress site import"
86
+ },
87
+ "nodeVersion": {
88
+ "type": "integer",
89
+ "enum": [
90
+ 18,
91
+ 20,
92
+ 22,
93
+ 24
94
+ ],
95
+ "description": "Node.js major version (default: detected from an archive, or stored for the site, else 22; set it from the project's engines for a Git deploy)"
96
+ },
97
+ "appType": {
98
+ "type": "string",
99
+ "description": "Node.js framework, e.g. next, nuxt, vite, express, react, vue, astro; overrides detection or stored settings"
100
+ },
101
+ "rootDirectory": {
102
+ "type": "string",
103
+ "description": "Directory with the package.json, relative to the site root (default .)"
104
+ },
105
+ "outputDirectory": {
106
+ "type": "string",
107
+ "description": "Build output directory relative to the root directory, e.g. dist"
108
+ },
109
+ "buildScript": {
110
+ "type": "string",
111
+ "description": "The package.json script that builds the app, e.g. build"
112
+ },
113
+ "entryFile": {
114
+ "type": "string",
115
+ "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next."
116
+ },
117
+ "packageManager": {
118
+ "type": "string",
119
+ "enum": [
120
+ "npm",
121
+ "yarn",
122
+ "pnpm"
123
+ ],
124
+ "description": "Package manager used to install dependencies"
125
+ }
126
+ },
127
+ "required": [
128
+ "domain"
129
+ ]
130
+ },
131
+ "security": [],
132
+ "custom": true,
133
+ "replacesHidden": true,
134
+ "templateFile": "deploy.template.js",
135
+ "templateFileTS": "deploy.template.ts",
136
+ "handlerMethod": "handleHostingDeploy",
137
+ "group": "hosting"
138
+ },
139
+ {
140
+ "name": "hosting_get-deployment",
141
+ "title": "Get deployment status, build status, build logs and failure analysis",
142
+ "annotations": {
143
+ "title": "Get deployment status, build status, build logs and failure analysis",
144
+ "readOnlyHint": true,
145
+ "destructiveHint": false
146
+ },
147
+ "topic": "hosting",
148
+ "description": "Check deployment status, build status, build logs and why a build failed (failure analysis) for a website's nodejs (Node.js) deployment: the state of its latest build (or of buildUuid), the end of the build log, the failure analysis when the build failed, and the build settings and Git auto-deployment settings stored for the site. Use it after hosting_deploy starts a Node.js build, and to find out why a deployment failed. Poll until the build state is completed or failed, with growing pauses. The log comes back in full; pass fromLine (the lines count from the previous call) to read only new output. A website without Node.js builds returns build: null with an explanation, because static, PHP, plugin and theme deploys are complete when hosting_deploy returns, and a WordPress site import is ready a few minutes after it starts.",
149
+ "method": "",
150
+ "path": "",
151
+ "inputSchema": {
152
+ "type": "object",
153
+ "properties": {
154
+ "domain": {
155
+ "type": "string",
156
+ "description": "Domain name of the website (e.g., example.com)"
157
+ },
158
+ "buildUuid": {
159
+ "type": "string",
160
+ "description": "Build to inspect, as returned by hosting_deploy (default: the latest build)"
161
+ },
162
+ "fromLine": {
163
+ "type": "integer",
164
+ "description": "Read the build log from this line on (default 0, the whole log). Pass the lines count returned by the previous call to get only new output."
165
+ }
166
+ },
167
+ "required": [
168
+ "domain"
169
+ ]
170
+ },
171
+ "security": [],
172
+ "custom": true,
173
+ "replacesHidden": true,
174
+ "templateFile": "get-deployment.template.js",
175
+ "templateFileTS": "get-deployment.template.ts",
176
+ "handlerMethod": "handleHostingGetDeployment",
177
+ "group": "hosting"
178
+ },
17
179
  {
18
180
  "name": "agency-hosting_deploy-node-static-website",
19
181
  "title": "Deploy node-static website",
@@ -133,7 +295,8 @@ const tools: OpenApiTool[] = [
133
295
  "templateFile": "import-wordpress.template.js",
134
296
  "templateFileTS": "import-wordpress.template.ts",
135
297
  "handlerMethod": "handleWordpressWebsiteImport",
136
- "group": "hosting"
298
+ "group": "hosting",
299
+ "hidden": true
137
300
  },
138
301
  {
139
302
  "name": "hosting_deploy-wordpress-plugin",
@@ -174,7 +337,8 @@ const tools: OpenApiTool[] = [
174
337
  "templateFile": "deploy-wordpress-plugin.template.js",
175
338
  "templateFileTS": "deploy-wordpress-plugin.template.ts",
176
339
  "handlerMethod": "handleWordpressPluginDeploy",
177
- "group": "hosting"
340
+ "group": "hosting",
341
+ "hidden": true
178
342
  },
179
343
  {
180
344
  "name": "hosting_deploy-wordpress-theme",
@@ -219,7 +383,8 @@ const tools: OpenApiTool[] = [
219
383
  "templateFile": "deploy-wordpress-theme.template.js",
220
384
  "templateFileTS": "deploy-wordpress-theme.template.ts",
221
385
  "handlerMethod": "handleWordpressThemeDeploy",
222
- "group": "hosting"
386
+ "group": "hosting",
387
+ "hidden": true
223
388
  },
224
389
  {
225
390
  "name": "hosting_deploy-js-application",
@@ -259,7 +424,8 @@ const tools: OpenApiTool[] = [
259
424
  "templateFile": "deploy-javascript-app.template.js",
260
425
  "templateFileTS": "deploy-javascript-app.template.ts",
261
426
  "handlerMethod": "handleJavascriptApplicationDeploy",
262
- "group": "hosting"
427
+ "group": "hosting",
428
+ "hidden": true
263
429
  },
264
430
  {
265
431
  "name": "hosting_deploy-static-website",
@@ -299,7 +465,8 @@ const tools: OpenApiTool[] = [
299
465
  "templateFile": "deploy-static-website.template.js",
300
466
  "templateFileTS": "deploy-static-website.template.ts",
301
467
  "handlerMethod": "handleStaticWebsiteDeploy",
302
- "group": "hosting"
468
+ "group": "hosting",
469
+ "hidden": true
303
470
  },
304
471
  {
305
472
  "name": "hosting_list-js-deployments",
@@ -351,7 +518,8 @@ const tools: OpenApiTool[] = [
351
518
  "templateFile": "list-javascript-deployments.template.js",
352
519
  "templateFileTS": "list-javascript-deployments.template.ts",
353
520
  "handlerMethod": "handleListJavascriptDeployments",
354
- "group": "hosting"
521
+ "group": "hosting",
522
+ "hidden": true
355
523
  },
356
524
  {
357
525
  "name": "hosting_show-js-deployment-logs",
@@ -391,7 +559,8 @@ const tools: OpenApiTool[] = [
391
559
  "templateFile": "show-javascript-deployment-logs.template.js",
392
560
  "templateFileTS": "show-javascript-deployment-logs.template.ts",
393
561
  "handlerMethod": "handleShowJsDeploymentLogs",
394
- "group": "hosting"
562
+ "group": "hosting",
563
+ "hidden": true
395
564
  },
396
565
  {
397
566
  "name": "agency-hosting_datacenters_list",
@@ -4859,7 +5028,7 @@ const tools: OpenApiTool[] = [
4859
5028
  "destructiveHint": true,
4860
5029
  "idempotentHint": true
4861
5030
  },
4862
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
5031
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
4863
5032
  "method": "PATCH",
4864
5033
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
4865
5034
  "inputSchema": {
@@ -4889,6 +5058,64 @@ const tools: OpenApiTool[] = [
4889
5058
  "published",
4890
5059
  "archived"
4891
5060
  ]
5061
+ },
5062
+ "seo_settings": {
5063
+ "type": "object",
5064
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
5065
+ "properties": {
5066
+ "title": {
5067
+ "type": "string",
5068
+ "description": "Search-engine title for the product page."
5069
+ },
5070
+ "description": {
5071
+ "type": "string",
5072
+ "description": "Search-engine description for the product page."
5073
+ },
5074
+ "slug": {
5075
+ "type": "string",
5076
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
5077
+ }
5078
+ }
5079
+ },
5080
+ "collection_changes": {
5081
+ "type": "object",
5082
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
5083
+ "properties": {
5084
+ "add": {
5085
+ "type": "array",
5086
+ "description": "Collections to add the product to. Every id must exist in the store.",
5087
+ "items": {
5088
+ "type": "object",
5089
+ "description": "add parameter",
5090
+ "properties": {
5091
+ "id": {
5092
+ "type": "string",
5093
+ "description": "The collection id."
5094
+ }
5095
+ },
5096
+ "required": [
5097
+ "id"
5098
+ ]
5099
+ }
5100
+ },
5101
+ "remove": {
5102
+ "type": "array",
5103
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
5104
+ "items": {
5105
+ "type": "object",
5106
+ "description": "remove parameter",
5107
+ "properties": {
5108
+ "id": {
5109
+ "type": "string",
5110
+ "description": "The collection id."
5111
+ }
5112
+ },
5113
+ "required": [
5114
+ "id"
5115
+ ]
5116
+ }
5117
+ }
5118
+ }
4892
5119
  }
4893
5120
  },
4894
5121
  "required": [
@@ -5061,6 +5288,24 @@ const tools: OpenApiTool[] = [
5061
5288
  "currency": {
5062
5289
  "type": "string",
5063
5290
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
5291
+ },
5292
+ "seo_settings": {
5293
+ "type": "object",
5294
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
5295
+ "properties": {
5296
+ "title": {
5297
+ "type": "string",
5298
+ "description": "Search-engine title for the product page."
5299
+ },
5300
+ "description": {
5301
+ "type": "string",
5302
+ "description": "Search-engine description for the product page."
5303
+ },
5304
+ "slug": {
5305
+ "type": "string",
5306
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
5307
+ }
5308
+ }
5064
5309
  }
5065
5310
  },
5066
5311
  "required": [
@@ -5438,7 +5683,7 @@ const tools: OpenApiTool[] = [
5438
5683
  "destructiveHint": true,
5439
5684
  "idempotentHint": true
5440
5685
  },
5441
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5686
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5442
5687
  "method": "PATCH",
5443
5688
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
5444
5689
  "inputSchema": {
@@ -5467,6 +5712,10 @@ const tools: OpenApiTool[] = [
5467
5712
  "type": "string",
5468
5713
  "description": "The variant title."
5469
5714
  },
5715
+ "sku": {
5716
+ "type": "string",
5717
+ "description": "The variant SKU."
5718
+ },
5470
5719
  "inventory_quantity": {
5471
5720
  "type": "integer",
5472
5721
  "description": "Units in stock."
@@ -6948,7 +7197,8 @@ const tools: OpenApiTool[] = [
6948
7197
  "apiToken": []
6949
7198
  }
6950
7199
  ],
6951
- "group": "hosting"
7200
+ "group": "hosting",
7201
+ "hidden": true
6952
7202
  },
6953
7203
  {
6954
7204
  "name": "hosting_files_list-website-and-directories",
@@ -7096,7 +7346,8 @@ const tools: OpenApiTool[] = [
7096
7346
  "apiToken": []
7097
7347
  }
7098
7348
  ],
7099
- "group": "hosting"
7349
+ "group": "hosting",
7350
+ "hidden": true
7100
7351
  },
7101
7352
  {
7102
7353
  "name": "hosting_git_update-auto-deployment-settings",
@@ -7160,7 +7411,8 @@ const tools: OpenApiTool[] = [
7160
7411
  "apiToken": []
7161
7412
  }
7162
7413
  ],
7163
- "group": "hosting"
7414
+ "group": "hosting",
7415
+ "hidden": true
7164
7416
  },
7165
7417
  {
7166
7418
  "name": "hosting_git_delete-auto-deployment-settings",
@@ -7238,7 +7490,8 @@ const tools: OpenApiTool[] = [
7238
7490
  "apiToken": []
7239
7491
  }
7240
7492
  ],
7241
- "group": "hosting"
7493
+ "group": "hosting",
7494
+ "hidden": true
7242
7495
  },
7243
7496
  {
7244
7497
  "name": "hosting_git_list-installation-repositories",
@@ -7268,7 +7521,8 @@ const tools: OpenApiTool[] = [
7268
7521
  "apiToken": []
7269
7522
  }
7270
7523
  ],
7271
- "group": "hosting"
7524
+ "group": "hosting",
7525
+ "hidden": true
7272
7526
  },
7273
7527
  {
7274
7528
  "name": "hosting_git_deploy-website-repository",
@@ -7692,7 +7946,8 @@ const tools: OpenApiTool[] = [
7692
7946
  "apiToken": []
7693
7947
  }
7694
7948
  ],
7695
- "group": "hosting"
7949
+ "group": "hosting",
7950
+ "hidden": true
7696
7951
  },
7697
7952
  {
7698
7953
  "name": "hosting_nodejs_start-build",
@@ -7828,7 +8083,8 @@ const tools: OpenApiTool[] = [
7828
8083
  "apiToken": []
7829
8084
  }
7830
8085
  ],
7831
- "group": "hosting"
8086
+ "group": "hosting",
8087
+ "hidden": true
7832
8088
  },
7833
8089
  {
7834
8090
  "name": "hosting_nodejs_build-settings",
@@ -7863,7 +8119,8 @@ const tools: OpenApiTool[] = [
7863
8119
  "apiToken": []
7864
8120
  }
7865
8121
  ],
7866
- "group": "hosting"
8122
+ "group": "hosting",
8123
+ "hidden": true
7867
8124
  },
7868
8125
  {
7869
8126
  "name": "hosting_nodejs_update-build-settings",
@@ -7960,7 +8217,8 @@ const tools: OpenApiTool[] = [
7960
8217
  "apiToken": []
7961
8218
  }
7962
8219
  ],
7963
- "group": "hosting"
8220
+ "group": "hosting",
8221
+ "hidden": true
7964
8222
  },
7965
8223
  {
7966
8224
  "name": "hosting_nodejs_build-settings-from-archive",
@@ -8000,7 +8258,8 @@ const tools: OpenApiTool[] = [
8000
8258
  "apiToken": []
8001
8259
  }
8002
8260
  ],
8003
- "group": "hosting"
8261
+ "group": "hosting",
8262
+ "hidden": true
8004
8263
  },
8005
8264
  {
8006
8265
  "name": "hosting_nodejs_list-environment-variables",
@@ -8134,7 +8393,8 @@ const tools: OpenApiTool[] = [
8134
8393
  "apiToken": []
8135
8394
  }
8136
8395
  ],
8137
- "group": "hosting"
8396
+ "group": "hosting",
8397
+ "hidden": true
8138
8398
  },
8139
8399
  {
8140
8400
  "name": "hosting_nodejs_build",
@@ -8174,7 +8434,8 @@ const tools: OpenApiTool[] = [
8174
8434
  "apiToken": []
8175
8435
  }
8176
8436
  ],
8177
- "group": "hosting"
8437
+ "group": "hosting",
8438
+ "hidden": true
8178
8439
  },
8179
8440
  {
8180
8441
  "name": "hosting_nodejs_build-logs",
@@ -8218,7 +8479,8 @@ const tools: OpenApiTool[] = [
8218
8479
  "apiToken": []
8219
8480
  }
8220
8481
  ],
8221
- "group": "hosting"
8482
+ "group": "hosting",
8483
+ "hidden": true
8222
8484
  },
8223
8485
  {
8224
8486
  "name": "hosting_nodejs_runtime-logs",
@@ -9289,7 +9551,8 @@ const tools: OpenApiTool[] = [
9289
9551
  "apiToken": []
9290
9552
  }
9291
9553
  ],
9292
- "group": "hosting"
9554
+ "group": "hosting",
9555
+ "hidden": true
9293
9556
  },
9294
9557
  {
9295
9558
  "name": "hosting_websites_delete",
@@ -16335,7 +16598,8 @@ const tools: OpenApiTool[] = [
16335
16598
  "apiToken": []
16336
16599
  }
16337
16600
  ],
16338
- "group": "wordpress"
16601
+ "group": "wordpress",
16602
+ "hidden": true
16339
16603
  },
16340
16604
  {
16341
16605
  "name": "wordpress_installations_install",
@@ -17009,7 +17273,8 @@ const tools: OpenApiTool[] = [
17009
17273
  "apiToken": []
17010
17274
  }
17011
17275
  ],
17012
- "group": "wordpress"
17276
+ "group": "wordpress",
17277
+ "hidden": true
17013
17278
  },
17014
17279
  {
17015
17280
  "name": "wordpress_plugins_install",
@@ -17440,7 +17705,8 @@ const tools: OpenApiTool[] = [
17440
17705
  "apiToken": []
17441
17706
  }
17442
17707
  ],
17443
- "group": "wordpress"
17708
+ "group": "wordpress",
17709
+ "hidden": true
17444
17710
  },
17445
17711
  {
17446
17712
  "name": "wordpress_themes_install",
@@ -6,6 +6,8 @@ export interface OpenApiTool extends Tool {
6
6
  path: string;
7
7
  security: unknown[];
8
8
  custom?: boolean;
9
+ hidden?: boolean;
10
+ replacesHidden?: boolean;
9
11
  group?: string;
10
12
  topic?: string;
11
13
  handlerMethod?: string;
@@ -6,6 +6,8 @@ export interface OpenApiTool extends Tool {
6
6
  path: string;
7
7
  security: unknown[];
8
8
  custom?: boolean;
9
+ hidden?: boolean;
10
+ replacesHidden?: boolean;
9
11
  group?: string;
10
12
  topic?: string;
11
13
  handlerMethod?: string;
@@ -6,6 +6,8 @@ export interface OpenApiTool extends Tool {
6
6
  path: string;
7
7
  security: unknown[];
8
8
  custom?: boolean;
9
+ hidden?: boolean;
10
+ replacesHidden?: boolean;
9
11
  group?: string;
10
12
  topic?: string;
11
13
  handlerMethod?: string;
@@ -583,7 +583,7 @@ export default [
583
583
  "destructiveHint": true,
584
584
  "idempotentHint": true
585
585
  },
586
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
586
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
587
587
  "method": "PATCH",
588
588
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
589
589
  "inputSchema": {
@@ -613,6 +613,64 @@ export default [
613
613
  "published",
614
614
  "archived"
615
615
  ]
616
+ },
617
+ "seo_settings": {
618
+ "type": "object",
619
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
620
+ "properties": {
621
+ "title": {
622
+ "type": "string",
623
+ "description": "Search-engine title for the product page."
624
+ },
625
+ "description": {
626
+ "type": "string",
627
+ "description": "Search-engine description for the product page."
628
+ },
629
+ "slug": {
630
+ "type": "string",
631
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
632
+ }
633
+ }
634
+ },
635
+ "collection_changes": {
636
+ "type": "object",
637
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
638
+ "properties": {
639
+ "add": {
640
+ "type": "array",
641
+ "description": "Collections to add the product to. Every id must exist in the store.",
642
+ "items": {
643
+ "type": "object",
644
+ "description": "add parameter",
645
+ "properties": {
646
+ "id": {
647
+ "type": "string",
648
+ "description": "The collection id."
649
+ }
650
+ },
651
+ "required": [
652
+ "id"
653
+ ]
654
+ }
655
+ },
656
+ "remove": {
657
+ "type": "array",
658
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
659
+ "items": {
660
+ "type": "object",
661
+ "description": "remove parameter",
662
+ "properties": {
663
+ "id": {
664
+ "type": "string",
665
+ "description": "The collection id."
666
+ }
667
+ },
668
+ "required": [
669
+ "id"
670
+ ]
671
+ }
672
+ }
673
+ }
616
674
  }
617
675
  },
618
676
  "required": [
@@ -785,6 +843,24 @@ export default [
785
843
  "currency": {
786
844
  "type": "string",
787
845
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
846
+ },
847
+ "seo_settings": {
848
+ "type": "object",
849
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
850
+ "properties": {
851
+ "title": {
852
+ "type": "string",
853
+ "description": "Search-engine title for the product page."
854
+ },
855
+ "description": {
856
+ "type": "string",
857
+ "description": "Search-engine description for the product page."
858
+ },
859
+ "slug": {
860
+ "type": "string",
861
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
862
+ }
863
+ }
788
864
  }
789
865
  },
790
866
  "required": [
@@ -1162,7 +1238,7 @@ export default [
1162
1238
  "destructiveHint": true,
1163
1239
  "idempotentHint": true
1164
1240
  },
1165
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1241
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1166
1242
  "method": "PATCH",
1167
1243
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
1168
1244
  "inputSchema": {
@@ -1191,6 +1267,10 @@ export default [
1191
1267
  "type": "string",
1192
1268
  "description": "The variant title."
1193
1269
  },
1270
+ "sku": {
1271
+ "type": "string",
1272
+ "description": "The variant SKU."
1273
+ },
1194
1274
  "inventory_quantity": {
1195
1275
  "type": "integer",
1196
1276
  "description": "Units in stock."