@hostinger/mcp 3.1.0 → 3.2.1

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 +47 -301
  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 +223 -30
  25. package/src/core/tools/all.ts +225 -30
  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.ts +2 -0
  30. package/src/core/tools/horizons.ts +2 -0
  31. package/src/core/tools/hosting.js +207 -25
  32. package/src/core/tools/hosting.ts +209 -25
  33. package/src/core/tools/mail.ts +2 -0
  34. package/src/core/tools/reach.ts +2 -0
  35. package/src/core/tools/vps.ts +2 -0
  36. package/src/core/tools/wordpress.js +10 -2
  37. package/src/core/tools/wordpress.ts +12 -2
  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 +131 -22
@@ -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",
@@ -7028,7 +7197,8 @@ const tools: OpenApiTool[] = [
7028
7197
  "apiToken": []
7029
7198
  }
7030
7199
  ],
7031
- "group": "hosting"
7200
+ "group": "hosting",
7201
+ "hidden": true
7032
7202
  },
7033
7203
  {
7034
7204
  "name": "hosting_files_list-website-and-directories",
@@ -7176,7 +7346,8 @@ const tools: OpenApiTool[] = [
7176
7346
  "apiToken": []
7177
7347
  }
7178
7348
  ],
7179
- "group": "hosting"
7349
+ "group": "hosting",
7350
+ "hidden": true
7180
7351
  },
7181
7352
  {
7182
7353
  "name": "hosting_git_update-auto-deployment-settings",
@@ -7240,7 +7411,8 @@ const tools: OpenApiTool[] = [
7240
7411
  "apiToken": []
7241
7412
  }
7242
7413
  ],
7243
- "group": "hosting"
7414
+ "group": "hosting",
7415
+ "hidden": true
7244
7416
  },
7245
7417
  {
7246
7418
  "name": "hosting_git_delete-auto-deployment-settings",
@@ -7318,7 +7490,8 @@ const tools: OpenApiTool[] = [
7318
7490
  "apiToken": []
7319
7491
  }
7320
7492
  ],
7321
- "group": "hosting"
7493
+ "group": "hosting",
7494
+ "hidden": true
7322
7495
  },
7323
7496
  {
7324
7497
  "name": "hosting_git_list-installation-repositories",
@@ -7348,7 +7521,8 @@ const tools: OpenApiTool[] = [
7348
7521
  "apiToken": []
7349
7522
  }
7350
7523
  ],
7351
- "group": "hosting"
7524
+ "group": "hosting",
7525
+ "hidden": true
7352
7526
  },
7353
7527
  {
7354
7528
  "name": "hosting_git_deploy-website-repository",
@@ -7772,7 +7946,8 @@ const tools: OpenApiTool[] = [
7772
7946
  "apiToken": []
7773
7947
  }
7774
7948
  ],
7775
- "group": "hosting"
7949
+ "group": "hosting",
7950
+ "hidden": true
7776
7951
  },
7777
7952
  {
7778
7953
  "name": "hosting_nodejs_start-build",
@@ -7908,7 +8083,8 @@ const tools: OpenApiTool[] = [
7908
8083
  "apiToken": []
7909
8084
  }
7910
8085
  ],
7911
- "group": "hosting"
8086
+ "group": "hosting",
8087
+ "hidden": true
7912
8088
  },
7913
8089
  {
7914
8090
  "name": "hosting_nodejs_build-settings",
@@ -7943,7 +8119,8 @@ const tools: OpenApiTool[] = [
7943
8119
  "apiToken": []
7944
8120
  }
7945
8121
  ],
7946
- "group": "hosting"
8122
+ "group": "hosting",
8123
+ "hidden": true
7947
8124
  },
7948
8125
  {
7949
8126
  "name": "hosting_nodejs_update-build-settings",
@@ -8040,7 +8217,8 @@ const tools: OpenApiTool[] = [
8040
8217
  "apiToken": []
8041
8218
  }
8042
8219
  ],
8043
- "group": "hosting"
8220
+ "group": "hosting",
8221
+ "hidden": true
8044
8222
  },
8045
8223
  {
8046
8224
  "name": "hosting_nodejs_build-settings-from-archive",
@@ -8080,7 +8258,8 @@ const tools: OpenApiTool[] = [
8080
8258
  "apiToken": []
8081
8259
  }
8082
8260
  ],
8083
- "group": "hosting"
8261
+ "group": "hosting",
8262
+ "hidden": true
8084
8263
  },
8085
8264
  {
8086
8265
  "name": "hosting_nodejs_list-environment-variables",
@@ -8214,7 +8393,8 @@ const tools: OpenApiTool[] = [
8214
8393
  "apiToken": []
8215
8394
  }
8216
8395
  ],
8217
- "group": "hosting"
8396
+ "group": "hosting",
8397
+ "hidden": true
8218
8398
  },
8219
8399
  {
8220
8400
  "name": "hosting_nodejs_build",
@@ -8254,7 +8434,8 @@ const tools: OpenApiTool[] = [
8254
8434
  "apiToken": []
8255
8435
  }
8256
8436
  ],
8257
- "group": "hosting"
8437
+ "group": "hosting",
8438
+ "hidden": true
8258
8439
  },
8259
8440
  {
8260
8441
  "name": "hosting_nodejs_build-logs",
@@ -8298,7 +8479,8 @@ const tools: OpenApiTool[] = [
8298
8479
  "apiToken": []
8299
8480
  }
8300
8481
  ],
8301
- "group": "hosting"
8482
+ "group": "hosting",
8483
+ "hidden": true
8302
8484
  },
8303
8485
  {
8304
8486
  "name": "hosting_nodejs_runtime-logs",
@@ -8542,7 +8724,7 @@ const tools: OpenApiTool[] = [
8542
8724
  "readOnlyHint": true,
8543
8725
  "destructiveHint": false
8544
8726
  },
8545
- "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first. Narrow the list with the\n`order_id`, `subscription_id` or `domain` filters.\n\nMeant for polling right after creating a website or starting a website setup: the\nwebsite shows up in the websites list before its server-side setup has finished, and\nwhile the setup is `running` endpoints that operate on that website may respond with\n`404` or `409`. Poll this endpoint with the `domain` filter every 10 to 15 seconds and\nwait for `status: completed` before uploading files, deploying or creating databases.\n`failed` means the setup stopped before finishing or has not reported progress for\nover an hour. Setups older than 24 hours are not listed.\n\n`type` is the website type the setup was started with (`wordpress`, `headless_wordpress`,\n`headless_ecommerce`, `headless_pocketbase`), or `null` for an empty website.",
8727
+ "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first. Narrow the list with the\n`order_id`, `subscription_id` or `domain` filters.\n\nMeant for polling right after creating a website or starting a website setup: the\nwebsite shows up in the websites list before its server-side setup has finished, and\nwhile the setup is `running` endpoints that operate on that website may respond with\n`404` or `409`. Poll this endpoint with the `domain` filter every 10 to 15 seconds and\nwait for `status: completed` before uploading files, deploying or creating databases.\n`failed` means the setup stopped before finishing or has not reported progress for\nover an hour. Setups older than 24 hours are not listed.\n\n`type` is the website type the setup was started with (`wordpress`, `headless_empty`,\n`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`), or `null` for an empty\nwebsite.",
8546
8728
  "method": "GET",
8547
8729
  "path": "/api/hosting/v1/onboardings",
8548
8730
  "inputSchema": {
@@ -8578,7 +8760,7 @@ const tools: OpenApiTool[] = [
8578
8760
  "readOnlyHint": false,
8579
8761
  "destructiveHint": false
8580
8762
  },
8581
- "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`status: completed` before uploading files, deploying or creating databases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless\nwebsite; `headless_wordpress` additionally installs WordPress into the `cms` directory\nof the website root with generated credentials.\n\nOmit `domain` to set the website up on a generated temporary free subdomain.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
8763
+ "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15\nseconds and wait for `status: completed` before uploading files, deploying or creating\ndatabases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)\ncreate a headless website; `headless_wordpress` additionally installs WordPress into the\n`cms` directory of the website root with generated credentials. `headless_empty` installs\nnothing: WordPress can be added later through\n`POST /api/hosting/v1/accounts/{username}/wordpress/installations`\n(`wordpress_installations_install`) with `type: headless`.\n\nOmit `domain` to set the website up on a generated temporary free subdomain. To know the\nfree subdomain before the call, so a timed-out call can be looked up and retried on the\nsame domain, generate one through `POST /api/hosting/v1/domains/free-subdomains`\n(`hosting_domains_generate-free-subdomain`) and send it as `domain`. It is accepted for\n24 hours, only from the client that generated it.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
8582
8764
  "method": "POST",
8583
8765
  "path": "/api/hosting/v1/orders/{order_id}/onboardings",
8584
8766
  "inputSchema": {
@@ -8590,9 +8772,10 @@ const tools: OpenApiTool[] = [
8590
8772
  },
8591
8773
  "type": {
8592
8774
  "type": "string",
8593
- "description": "Website type. Omit or `null` for an empty website. `wordpress` installs WordPress in the website root and requires `wordpress`. The headless types (`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless website; `headless_wordpress` additionally installs WordPress into the `cms` directory with generated credentials.",
8775
+ "description": "Website type. Omit or `null` for an empty website. `wordpress` installs WordPress in the website root and requires `wordpress`. The headless types (`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless website; `headless_wordpress` additionally installs WordPress into the `cms` directory with generated credentials. `headless_empty` installs nothing, so WordPress can be added later through `POST /api/hosting/v1/accounts/{username}/wordpress/installations` (`wordpress_installations_install`) with `type: headless`.",
8594
8776
  "enum": [
8595
8777
  "wordpress",
8778
+ "headless_empty",
8596
8779
  "headless_wordpress",
8597
8780
  "headless_ecommerce",
8598
8781
  "headless_pocketbase"
@@ -8600,7 +8783,7 @@ const tools: OpenApiTool[] = [
8600
8783
  },
8601
8784
  "domain": {
8602
8785
  "type": "string",
8603
- "description": "Customer-owned domain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
8786
+ "description": "Customer-owned domain, or a free subdomain you generated through `POST /api/hosting/v1/domains/free-subdomains` (`hosting_domains_generate-free-subdomain`) in the last 24 hours. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
8604
8787
  },
8605
8788
  "datacenter_code": {
8606
8789
  "type": "string",
@@ -9369,7 +9552,8 @@ const tools: OpenApiTool[] = [
9369
9552
  "apiToken": []
9370
9553
  }
9371
9554
  ],
9372
- "group": "hosting"
9555
+ "group": "hosting",
9556
+ "hidden": true
9373
9557
  },
9374
9558
  {
9375
9559
  "name": "hosting_websites_delete",
@@ -16415,7 +16599,8 @@ const tools: OpenApiTool[] = [
16415
16599
  "apiToken": []
16416
16600
  }
16417
16601
  ],
16418
- "group": "wordpress"
16602
+ "group": "wordpress",
16603
+ "hidden": true
16419
16604
  },
16420
16605
  {
16421
16606
  "name": "wordpress_installations_install",
@@ -16425,7 +16610,7 @@ const tools: OpenApiTool[] = [
16425
16610
  "readOnlyHint": false,
16426
16611
  "destructiveHint": false
16427
16612
  },
16428
- "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
16613
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/orders/{order_id}/onboardings\n(`hosting_websites_start-setup`) and poll GET /api/hosting/v1/onboardings\n(`hosting_websites_list-setups`) with the `domain` filter until its `status` is\n`completed`.\n\nSend `type: headless` to turn a headless website (for example one created by\n`hosting_websites_start-setup` with `type: headless_empty`) into a headless WordPress\nwebsite: WordPress is installed into the `cms` directory with the Hostinger headless\nMU plugin and the website is marked as a headless WordPress website. `directory` is\nnot allowed with it. The target website must already be headless: the headless\ninstall rewrites the root `.htaccess`, so on any other website the request is\nrejected with 422.\n\nCall GET /api/hosting/v1/wordpress/installations (`wordpress_installations_list`)\nfiltered by username and domain before proceeding to check whether WordPress is\nalready installed on the target domain/path. If WordPress already exists and\n`overwrite` is false (the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations\n(`wordpress_installations_list`) filtered by username and domain to track\nprogress. When the installation appears in that list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
16429
16614
  "method": "POST",
16430
16615
  "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
16431
16616
  "inputSchema": {
@@ -16447,9 +16632,17 @@ const tools: OpenApiTool[] = [
16447
16632
  "type": "string",
16448
16633
  "description": "WordPress locale. Defaults to en_US when omitted."
16449
16634
  },
16635
+ "type": {
16636
+ "type": "string",
16637
+ "description": "Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`hosting_websites_start-setup`) with `type: headless_empty`; any other website is rejected with 422.",
16638
+ "enum": [
16639
+ "default",
16640
+ "headless"
16641
+ ]
16642
+ },
16450
16643
  "directory": {
16451
16644
  "type": "string",
16452
- "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
16645
+ "description": "Installation subdirectory relative to the document root; omit for the root. Not allowed with `type: headless`, which always installs into `cms`."
16453
16646
  },
16454
16647
  "overwrite": {
16455
16648
  "type": "boolean",
@@ -17089,7 +17282,8 @@ const tools: OpenApiTool[] = [
17089
17282
  "apiToken": []
17090
17283
  }
17091
17284
  ],
17092
- "group": "wordpress"
17285
+ "group": "wordpress",
17286
+ "hidden": true
17093
17287
  },
17094
17288
  {
17095
17289
  "name": "wordpress_plugins_install",
@@ -17520,7 +17714,8 @@ const tools: OpenApiTool[] = [
17520
17714
  "apiToken": []
17521
17715
  }
17522
17716
  ],
17523
- "group": "wordpress"
17717
+ "group": "wordpress",
17718
+ "hidden": true
17524
17719
  },
17525
17720
  {
17526
17721
  "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;
@@ -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;