@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;
@@ -597,7 +599,7 @@ const tools: OpenApiTool[] = [
597
599
  "destructiveHint": true,
598
600
  "idempotentHint": true
599
601
  },
600
- "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.",
602
+ "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.",
601
603
  "method": "PATCH",
602
604
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
603
605
  "inputSchema": {
@@ -627,6 +629,64 @@ const tools: OpenApiTool[] = [
627
629
  "published",
628
630
  "archived"
629
631
  ]
632
+ },
633
+ "seo_settings": {
634
+ "type": "object",
635
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
636
+ "properties": {
637
+ "title": {
638
+ "type": "string",
639
+ "description": "Search-engine title for the product page."
640
+ },
641
+ "description": {
642
+ "type": "string",
643
+ "description": "Search-engine description for the product page."
644
+ },
645
+ "slug": {
646
+ "type": "string",
647
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
648
+ }
649
+ }
650
+ },
651
+ "collection_changes": {
652
+ "type": "object",
653
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
654
+ "properties": {
655
+ "add": {
656
+ "type": "array",
657
+ "description": "Collections to add the product to. Every id must exist in the store.",
658
+ "items": {
659
+ "type": "object",
660
+ "description": "add parameter",
661
+ "properties": {
662
+ "id": {
663
+ "type": "string",
664
+ "description": "The collection id."
665
+ }
666
+ },
667
+ "required": [
668
+ "id"
669
+ ]
670
+ }
671
+ },
672
+ "remove": {
673
+ "type": "array",
674
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
675
+ "items": {
676
+ "type": "object",
677
+ "description": "remove parameter",
678
+ "properties": {
679
+ "id": {
680
+ "type": "string",
681
+ "description": "The collection id."
682
+ }
683
+ },
684
+ "required": [
685
+ "id"
686
+ ]
687
+ }
688
+ }
689
+ }
630
690
  }
631
691
  },
632
692
  "required": [
@@ -799,6 +859,24 @@ const tools: OpenApiTool[] = [
799
859
  "currency": {
800
860
  "type": "string",
801
861
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
862
+ },
863
+ "seo_settings": {
864
+ "type": "object",
865
+ "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.",
866
+ "properties": {
867
+ "title": {
868
+ "type": "string",
869
+ "description": "Search-engine title for the product page."
870
+ },
871
+ "description": {
872
+ "type": "string",
873
+ "description": "Search-engine description for the product page."
874
+ },
875
+ "slug": {
876
+ "type": "string",
877
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
878
+ }
879
+ }
802
880
  }
803
881
  },
804
882
  "required": [
@@ -1176,7 +1254,7 @@ const tools: OpenApiTool[] = [
1176
1254
  "destructiveHint": true,
1177
1255
  "idempotentHint": true
1178
1256
  },
1179
- "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.",
1257
+ "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.",
1180
1258
  "method": "PATCH",
1181
1259
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
1182
1260
  "inputSchema": {
@@ -1205,6 +1283,10 @@ const tools: OpenApiTool[] = [
1205
1283
  "type": "string",
1206
1284
  "description": "The variant title."
1207
1285
  },
1286
+ "sku": {
1287
+ "type": "string",
1288
+ "description": "The variant SKU."
1289
+ },
1208
1290
  "inventory_quantity": {
1209
1291
  "type": "integer",
1210
1292
  "description": "Units in stock."
@@ -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;
@@ -1,5 +1,165 @@
1
1
  // Auto-generated tool list for group: hosting
2
2
  export default [
3
+ {
4
+ "name": "hosting_deploy",
5
+ "title": "Deploy website, nodejs app, WordPress plugin or theme",
6
+ "annotations": {
7
+ "title": "Deploy website, nodejs app, WordPress plugin or theme",
8
+ "readOnlyHint": false,
9
+ "destructiveHint": true
10
+ },
11
+ "topic": "hosting",
12
+ "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.",
13
+ "method": "",
14
+ "path": "",
15
+ "inputSchema": {
16
+ "type": "object",
17
+ "properties": {
18
+ "domain": {
19
+ "type": "string",
20
+ "description": "Domain name of the website to deploy to (e.g., example.com)"
21
+ },
22
+ "path": {
23
+ "type": "string",
24
+ "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."
25
+ },
26
+ "git": {
27
+ "type": "object",
28
+ "description": "Deploy a repository branch instead of local files. Not together with path.",
29
+ "properties": {
30
+ "repository": {
31
+ "type": "string",
32
+ "description": "owner/name, e.g. hostinger/my-site (GitLab group paths may have more slashes)"
33
+ },
34
+ "branch": {
35
+ "type": "string",
36
+ "description": "Branch to deploy, e.g. main"
37
+ },
38
+ "directory": {
39
+ "type": "string",
40
+ "description": "Folder under the website's document root to deploy into (static deploys only; default the document root), e.g. my-api"
41
+ }
42
+ },
43
+ "required": [
44
+ "repository",
45
+ "branch"
46
+ ]
47
+ },
48
+ "type": {
49
+ "type": "string",
50
+ "enum": [
51
+ "static",
52
+ "nodejs",
53
+ "wordpress-site",
54
+ "wordpress-plugin",
55
+ "wordpress-theme"
56
+ ],
57
+ "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."
58
+ },
59
+ "slug": {
60
+ "type": "string",
61
+ "description": "WordPress plugin or theme slug: lower-case letters, digits, - and _ (default: the directory name)"
62
+ },
63
+ "activate": {
64
+ "type": "boolean",
65
+ "description": "Activate the theme after deployment (WordPress themes only, default: false)"
66
+ },
67
+ "databaseDump": {
68
+ "type": "string",
69
+ "description": "Path to a .sql dump; required for a WordPress site import"
70
+ },
71
+ "nodeVersion": {
72
+ "type": "integer",
73
+ "enum": [
74
+ 18,
75
+ 20,
76
+ 22,
77
+ 24
78
+ ],
79
+ "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)"
80
+ },
81
+ "appType": {
82
+ "type": "string",
83
+ "description": "Node.js framework, e.g. next, nuxt, vite, express, react, vue, astro; overrides detection or stored settings"
84
+ },
85
+ "rootDirectory": {
86
+ "type": "string",
87
+ "description": "Directory with the package.json, relative to the site root (default .)"
88
+ },
89
+ "outputDirectory": {
90
+ "type": "string",
91
+ "description": "Build output directory relative to the root directory, e.g. dist"
92
+ },
93
+ "buildScript": {
94
+ "type": "string",
95
+ "description": "The package.json script that builds the app, e.g. build"
96
+ },
97
+ "entryFile": {
98
+ "type": "string",
99
+ "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."
100
+ },
101
+ "packageManager": {
102
+ "type": "string",
103
+ "enum": [
104
+ "npm",
105
+ "yarn",
106
+ "pnpm"
107
+ ],
108
+ "description": "Package manager used to install dependencies"
109
+ }
110
+ },
111
+ "required": [
112
+ "domain"
113
+ ]
114
+ },
115
+ "security": [],
116
+ "custom": true,
117
+ "replacesHidden": true,
118
+ "templateFile": "deploy.template.js",
119
+ "templateFileTS": "deploy.template.ts",
120
+ "handlerMethod": "handleHostingDeploy",
121
+ "group": "hosting"
122
+ },
123
+ {
124
+ "name": "hosting_get-deployment",
125
+ "title": "Get deployment status, build status, build logs and failure analysis",
126
+ "annotations": {
127
+ "title": "Get deployment status, build status, build logs and failure analysis",
128
+ "readOnlyHint": true,
129
+ "destructiveHint": false
130
+ },
131
+ "topic": "hosting",
132
+ "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.",
133
+ "method": "",
134
+ "path": "",
135
+ "inputSchema": {
136
+ "type": "object",
137
+ "properties": {
138
+ "domain": {
139
+ "type": "string",
140
+ "description": "Domain name of the website (e.g., example.com)"
141
+ },
142
+ "buildUuid": {
143
+ "type": "string",
144
+ "description": "Build to inspect, as returned by hosting_deploy (default: the latest build)"
145
+ },
146
+ "fromLine": {
147
+ "type": "integer",
148
+ "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."
149
+ }
150
+ },
151
+ "required": [
152
+ "domain"
153
+ ]
154
+ },
155
+ "security": [],
156
+ "custom": true,
157
+ "replacesHidden": true,
158
+ "templateFile": "get-deployment.template.js",
159
+ "templateFileTS": "get-deployment.template.ts",
160
+ "handlerMethod": "handleHostingGetDeployment",
161
+ "group": "hosting"
162
+ },
3
163
  {
4
164
  "name": "hosting_import-wordpress-website",
5
165
  "title": "Import WordPress website",
@@ -39,7 +199,8 @@ export default [
39
199
  "templateFile": "import-wordpress.template.js",
40
200
  "templateFileTS": "import-wordpress.template.ts",
41
201
  "handlerMethod": "handleWordpressWebsiteImport",
42
- "group": "hosting"
202
+ "group": "hosting",
203
+ "hidden": true
43
204
  },
44
205
  {
45
206
  "name": "hosting_deploy-wordpress-plugin",
@@ -80,7 +241,8 @@ export default [
80
241
  "templateFile": "deploy-wordpress-plugin.template.js",
81
242
  "templateFileTS": "deploy-wordpress-plugin.template.ts",
82
243
  "handlerMethod": "handleWordpressPluginDeploy",
83
- "group": "hosting"
244
+ "group": "hosting",
245
+ "hidden": true
84
246
  },
85
247
  {
86
248
  "name": "hosting_deploy-wordpress-theme",
@@ -125,7 +287,8 @@ export default [
125
287
  "templateFile": "deploy-wordpress-theme.template.js",
126
288
  "templateFileTS": "deploy-wordpress-theme.template.ts",
127
289
  "handlerMethod": "handleWordpressThemeDeploy",
128
- "group": "hosting"
290
+ "group": "hosting",
291
+ "hidden": true
129
292
  },
130
293
  {
131
294
  "name": "hosting_deploy-js-application",
@@ -165,7 +328,8 @@ export default [
165
328
  "templateFile": "deploy-javascript-app.template.js",
166
329
  "templateFileTS": "deploy-javascript-app.template.ts",
167
330
  "handlerMethod": "handleJavascriptApplicationDeploy",
168
- "group": "hosting"
331
+ "group": "hosting",
332
+ "hidden": true
169
333
  },
170
334
  {
171
335
  "name": "hosting_deploy-static-website",
@@ -205,7 +369,8 @@ export default [
205
369
  "templateFile": "deploy-static-website.template.js",
206
370
  "templateFileTS": "deploy-static-website.template.ts",
207
371
  "handlerMethod": "handleStaticWebsiteDeploy",
208
- "group": "hosting"
372
+ "group": "hosting",
373
+ "hidden": true
209
374
  },
210
375
  {
211
376
  "name": "hosting_list-js-deployments",
@@ -257,7 +422,8 @@ export default [
257
422
  "templateFile": "list-javascript-deployments.template.js",
258
423
  "templateFileTS": "list-javascript-deployments.template.ts",
259
424
  "handlerMethod": "handleListJavascriptDeployments",
260
- "group": "hosting"
425
+ "group": "hosting",
426
+ "hidden": true
261
427
  },
262
428
  {
263
429
  "name": "hosting_show-js-deployment-logs",
@@ -297,7 +463,8 @@ export default [
297
463
  "templateFile": "show-javascript-deployment-logs.template.js",
298
464
  "templateFileTS": "show-javascript-deployment-logs.template.ts",
299
465
  "handlerMethod": "handleShowJsDeploymentLogs",
300
- "group": "hosting"
466
+ "group": "hosting",
467
+ "hidden": true
301
468
  },
302
469
  {
303
470
  "name": "hosting_cache_clear-website",
@@ -1324,7 +1491,8 @@ export default [
1324
1491
  "apiToken": []
1325
1492
  }
1326
1493
  ],
1327
- "group": "hosting"
1494
+ "group": "hosting",
1495
+ "hidden": true
1328
1496
  },
1329
1497
  {
1330
1498
  "name": "hosting_files_list-website-and-directories",
@@ -1472,7 +1640,8 @@ export default [
1472
1640
  "apiToken": []
1473
1641
  }
1474
1642
  ],
1475
- "group": "hosting"
1643
+ "group": "hosting",
1644
+ "hidden": true
1476
1645
  },
1477
1646
  {
1478
1647
  "name": "hosting_git_update-auto-deployment-settings",
@@ -1536,7 +1705,8 @@ export default [
1536
1705
  "apiToken": []
1537
1706
  }
1538
1707
  ],
1539
- "group": "hosting"
1708
+ "group": "hosting",
1709
+ "hidden": true
1540
1710
  },
1541
1711
  {
1542
1712
  "name": "hosting_git_delete-auto-deployment-settings",
@@ -1614,7 +1784,8 @@ export default [
1614
1784
  "apiToken": []
1615
1785
  }
1616
1786
  ],
1617
- "group": "hosting"
1787
+ "group": "hosting",
1788
+ "hidden": true
1618
1789
  },
1619
1790
  {
1620
1791
  "name": "hosting_git_list-installation-repositories",
@@ -1644,7 +1815,8 @@ export default [
1644
1815
  "apiToken": []
1645
1816
  }
1646
1817
  ],
1647
- "group": "hosting"
1818
+ "group": "hosting",
1819
+ "hidden": true
1648
1820
  },
1649
1821
  {
1650
1822
  "name": "hosting_git_deploy-website-repository",
@@ -2068,7 +2240,8 @@ export default [
2068
2240
  "apiToken": []
2069
2241
  }
2070
2242
  ],
2071
- "group": "hosting"
2243
+ "group": "hosting",
2244
+ "hidden": true
2072
2245
  },
2073
2246
  {
2074
2247
  "name": "hosting_nodejs_start-build",
@@ -2204,7 +2377,8 @@ export default [
2204
2377
  "apiToken": []
2205
2378
  }
2206
2379
  ],
2207
- "group": "hosting"
2380
+ "group": "hosting",
2381
+ "hidden": true
2208
2382
  },
2209
2383
  {
2210
2384
  "name": "hosting_nodejs_build-settings",
@@ -2239,7 +2413,8 @@ export default [
2239
2413
  "apiToken": []
2240
2414
  }
2241
2415
  ],
2242
- "group": "hosting"
2416
+ "group": "hosting",
2417
+ "hidden": true
2243
2418
  },
2244
2419
  {
2245
2420
  "name": "hosting_nodejs_update-build-settings",
@@ -2336,7 +2511,8 @@ export default [
2336
2511
  "apiToken": []
2337
2512
  }
2338
2513
  ],
2339
- "group": "hosting"
2514
+ "group": "hosting",
2515
+ "hidden": true
2340
2516
  },
2341
2517
  {
2342
2518
  "name": "hosting_nodejs_build-settings-from-archive",
@@ -2376,7 +2552,8 @@ export default [
2376
2552
  "apiToken": []
2377
2553
  }
2378
2554
  ],
2379
- "group": "hosting"
2555
+ "group": "hosting",
2556
+ "hidden": true
2380
2557
  },
2381
2558
  {
2382
2559
  "name": "hosting_nodejs_list-environment-variables",
@@ -2510,7 +2687,8 @@ export default [
2510
2687
  "apiToken": []
2511
2688
  }
2512
2689
  ],
2513
- "group": "hosting"
2690
+ "group": "hosting",
2691
+ "hidden": true
2514
2692
  },
2515
2693
  {
2516
2694
  "name": "hosting_nodejs_build",
@@ -2550,7 +2728,8 @@ export default [
2550
2728
  "apiToken": []
2551
2729
  }
2552
2730
  ],
2553
- "group": "hosting"
2731
+ "group": "hosting",
2732
+ "hidden": true
2554
2733
  },
2555
2734
  {
2556
2735
  "name": "hosting_nodejs_build-logs",
@@ -2594,7 +2773,8 @@ export default [
2594
2773
  "apiToken": []
2595
2774
  }
2596
2775
  ],
2597
- "group": "hosting"
2776
+ "group": "hosting",
2777
+ "hidden": true
2598
2778
  },
2599
2779
  {
2600
2780
  "name": "hosting_nodejs_runtime-logs",
@@ -3665,7 +3845,8 @@ export default [
3665
3845
  "apiToken": []
3666
3846
  }
3667
3847
  ],
3668
- "group": "hosting"
3848
+ "group": "hosting",
3849
+ "hidden": true
3669
3850
  },
3670
3851
  {
3671
3852
  "name": "hosting_websites_delete",