hostinger-api-mcp 2.7.3 → 2.8.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ Generated at release time from the diff between the previous and current
4
4
  build. Tool changes are listed individually; everything else is summarised
5
5
  by area.
6
6
 
7
+ ## v2.8.0 — 2026-10-06
8
+
9
+ ### Operations
10
+
11
+ - Added `hosting_websites_start-setup` — Start website setup
12
+ - Changed the description and input schema of `hosting_websites_list-setups`
13
+
14
+ ### Also in this release
15
+
16
+ - Documentation: `README.md`
17
+ - Dependencies: `package-lock.json`
18
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
19
+ - Build and packaging: `types.d.ts`
20
+
7
21
  ## v2.7.3 — 2026-10-05
8
22
 
9
23
  ### Operations
package/README.md CHANGED
@@ -69,14 +69,14 @@ pnpm update -g @hostinger/mcp
69
69
 
70
70
  This package installs the following MCP server commands:
71
71
 
72
- - `hostinger-api-mcp` — unified server over every operation (407 total)
72
+ - `hostinger-api-mcp` — unified server over every operation (408 total)
73
73
  - `hostinger-agency-hosting-mcp` — 42 operations for agency-hosting
74
74
  - `hostinger-billing-mcp` — 9 operations for billing
75
75
  - `hostinger-dns-mcp` — 8 operations for dns
76
76
  - `hostinger-domains-mcp` — 42 operations for domains
77
77
  - `hostinger-ecommerce-mcp` — 29 operations for ecommerce
78
78
  - `hostinger-horizons-mcp` — 6 operations for horizons
79
- - `hostinger-hosting-mcp` — 79 operations for hosting
79
+ - `hostinger-hosting-mcp` — 80 operations for hosting
80
80
  - `hostinger-mail-mcp` — 38 operations for mail
81
81
  - `hostinger-reach-mcp` — 52 operations for reach
82
82
  - `hostinger-vps-mcp` — 64 operations for vps
@@ -2510,19 +2510,48 @@ close or merge it before patching again. Available on Business and Cloud Hosting
2510
2510
  #### hosting_websites_list-setups
2511
2511
 
2512
2512
  Returns the website setups started in the last 24 hours for the hosting accounts
2513
- accessible to the authenticated client, newest first.
2514
-
2515
- Meant for polling right after creating a website: the website shows up in the
2516
- websites list before its server-side setup has finished, and while the setup is
2517
- `running` endpoints that operate on that website may respond with `404` or `409`.
2518
- Poll this endpoint with the `domain` filter every 10 to 15 seconds and wait for
2519
- `status: completed` before uploading files, deploying or creating databases.
2513
+ accessible to the authenticated client, newest first. Narrow the list with the
2514
+ `order_id`, `subscription_id` or `domain` filters.
2515
+
2516
+ Meant for polling right after creating a website or starting a website setup: the
2517
+ website shows up in the websites list before its server-side setup has finished, and
2518
+ while the setup is `running` endpoints that operate on that website may respond with
2519
+ `404` or `409`. Poll this endpoint with the `domain` filter every 10 to 15 seconds and
2520
+ wait for `status: completed` before uploading files, deploying or creating databases.
2520
2521
  `failed` means the setup stopped before finishing or has not reported progress for
2521
2522
  over an hour. Setups older than 24 hours are not listed.
2522
2523
 
2524
+ `type` is the website type the setup was started with (`wordpress`, `headless_wordpress`,
2525
+ `headless_ecommerce`, `headless_pocketbase`), or `null` for an empty website.
2526
+
2523
2527
  - **Method**: `GET`
2524
2528
  - **Path**: `/api/hosting/v1/onboardings`
2525
2529
 
2530
+ #### hosting_websites_start-setup
2531
+
2532
+ Starts a website setup on a Web or Cloud hosting order and returns the created setup
2533
+ right away; the website itself is provisioned asynchronously. Poll the list website
2534
+ setups endpoint with the `domain` filter every 10 to 15 seconds and wait for
2535
+ `status: completed` before uploading files, deploying or creating databases.
2536
+
2537
+ Omit `type` for an empty website. `type: wordpress` installs WordPress in the website
2538
+ root with the admin user, email and password from `wordpress`, the domain as the site
2539
+ title, and `en_US` when `wordpress.language` is omitted. The headless types
2540
+ (`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless
2541
+ website; `headless_wordpress` additionally installs WordPress into the `cms` directory
2542
+ of the website root with generated credentials.
2543
+
2544
+ Omit `domain` to set the website up on a generated temporary free subdomain.
2545
+
2546
+ The order must already have a hosting account: to create the first website on a new
2547
+ hosting plan use the create website endpoint, which takes the `datacenter_code`.
2548
+ Returns 404 when the order does not exist or is not accessible to the authenticated
2549
+ client, and 409 with a `Retry-After` header while a setup for the same domain is still
2550
+ running.
2551
+
2552
+ - **Method**: `POST`
2553
+ - **Path**: `/api/hosting/v1/orders/{order_id}/onboardings`
2554
+
2526
2555
  #### hosting_orders_list
2527
2556
 
2528
2557
  Retrieve a paginated list of orders accessible to the authenticated client.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.7.3",
3
+ "version": "2.8.0",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.7.3",
3
+ "version": "2.8.0",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "2.7.3",
9
+ "version": "2.8.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "2.7.3",
14
+ "version": "2.8.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -64,7 +64,7 @@ const GetSkillRequestSchema = z.object({
64
64
 
65
65
  /**
66
66
  * MCP Server for Hostinger API
67
- * Generated from OpenAPI spec version 1.58.3
67
+ * Generated from OpenAPI spec version 1.59.0
68
68
  */
69
69
  class MCPServer {
70
70
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -94,7 +94,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
94
94
 
95
95
  /**
96
96
  * MCP Server for Hostinger API
97
- * Generated from OpenAPI spec version 1.58.3
97
+ * Generated from OpenAPI spec version 1.59.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -8138,12 +8138,20 @@ export default [
8138
8138
  "readOnlyHint": true,
8139
8139
  "destructiveHint": false
8140
8140
  },
8141
- "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first.\n\nMeant for polling right after creating a website: the website shows up in the\nwebsites list before its server-side setup has finished, and while the setup is\n`running` endpoints that operate on that website may respond with `404` or `409`.\nPoll this endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`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.",
8141
+ "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.",
8142
8142
  "method": "GET",
8143
8143
  "path": "/api/hosting/v1/onboardings",
8144
8144
  "inputSchema": {
8145
8145
  "type": "object",
8146
8146
  "properties": {
8147
+ "order_id": {
8148
+ "type": "integer",
8149
+ "description": "Order ID"
8150
+ },
8151
+ "subscription_id": {
8152
+ "type": "string",
8153
+ "description": "Filter by hosting order subscription ID"
8154
+ },
8147
8155
  "domain": {
8148
8156
  "type": "string",
8149
8157
  "description": "Filter by domain name (exact match)"
@@ -8158,6 +8166,90 @@ export default [
8158
8166
  ],
8159
8167
  "group": "hosting"
8160
8168
  },
8169
+ {
8170
+ "name": "hosting_websites_start-setup",
8171
+ "title": "Start website setup",
8172
+ "annotations": {
8173
+ "title": "Start website setup",
8174
+ "readOnlyHint": false,
8175
+ "destructiveHint": false
8176
+ },
8177
+ "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\nThe order must already have a hosting account: to create the first website on a new\nhosting plan use the create website endpoint, which takes the `datacenter_code`.\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.",
8178
+ "method": "POST",
8179
+ "path": "/api/hosting/v1/orders/{order_id}/onboardings",
8180
+ "inputSchema": {
8181
+ "type": "object",
8182
+ "properties": {
8183
+ "order_id": {
8184
+ "type": "integer",
8185
+ "description": "Hosting order ID. List orders to find available IDs."
8186
+ },
8187
+ "type": {
8188
+ "type": "string",
8189
+ "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.",
8190
+ "enum": [
8191
+ "wordpress",
8192
+ "headless_wordpress",
8193
+ "headless_ecommerce",
8194
+ "headless_pocketbase"
8195
+ ]
8196
+ },
8197
+ "domain": {
8198
+ "type": "string",
8199
+ "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
8200
+ },
8201
+ "wordpress": {
8202
+ "type": "object",
8203
+ "description": "WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.",
8204
+ "properties": {
8205
+ "language": {
8206
+ "type": "string",
8207
+ "description": "WordPress locale, for example `en_US` or `lt_LT`. Defaults to `en_US` when omitted."
8208
+ },
8209
+ "is_ai_builder": {
8210
+ "type": "boolean",
8211
+ "description": "When `true`, installs the Hostinger AI theme (`hostinger-ai-theme`). Defaults to `false` when omitted."
8212
+ },
8213
+ "admin": {
8214
+ "type": "object",
8215
+ "description": "WordPress administrator account",
8216
+ "properties": {
8217
+ "user": {
8218
+ "type": "string",
8219
+ "description": "WordPress admin username (letters, numbers, and underscore)"
8220
+ },
8221
+ "password": {
8222
+ "type": "string",
8223
+ "description": "WordPress admin password (8-50 characters, mixed case, a digit, and not compromised)"
8224
+ },
8225
+ "email": {
8226
+ "type": "string",
8227
+ "description": "WordPress admin email address"
8228
+ }
8229
+ },
8230
+ "required": [
8231
+ "user",
8232
+ "password",
8233
+ "email"
8234
+ ]
8235
+ }
8236
+ },
8237
+ "required": [
8238
+ "admin"
8239
+ ]
8240
+ }
8241
+ },
8242
+ "required": [
8243
+ "order_id"
8244
+ ]
8245
+ },
8246
+ "security": [
8247
+ {
8248
+ "apiToken": []
8249
+ }
8250
+ ],
8251
+ "group": "hosting"
8252
+ },
8161
8253
  {
8162
8254
  "name": "hosting_orders_list",
8163
8255
  "title": "List orders",
@@ -8152,12 +8152,20 @@ const tools: OpenApiTool[] = [
8152
8152
  "readOnlyHint": true,
8153
8153
  "destructiveHint": false
8154
8154
  },
8155
- "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first.\n\nMeant for polling right after creating a website: the website shows up in the\nwebsites list before its server-side setup has finished, and while the setup is\n`running` endpoints that operate on that website may respond with `404` or `409`.\nPoll this endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`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.",
8155
+ "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.",
8156
8156
  "method": "GET",
8157
8157
  "path": "/api/hosting/v1/onboardings",
8158
8158
  "inputSchema": {
8159
8159
  "type": "object",
8160
8160
  "properties": {
8161
+ "order_id": {
8162
+ "type": "integer",
8163
+ "description": "Order ID"
8164
+ },
8165
+ "subscription_id": {
8166
+ "type": "string",
8167
+ "description": "Filter by hosting order subscription ID"
8168
+ },
8161
8169
  "domain": {
8162
8170
  "type": "string",
8163
8171
  "description": "Filter by domain name (exact match)"
@@ -8172,6 +8180,90 @@ const tools: OpenApiTool[] = [
8172
8180
  ],
8173
8181
  "group": "hosting"
8174
8182
  },
8183
+ {
8184
+ "name": "hosting_websites_start-setup",
8185
+ "title": "Start website setup",
8186
+ "annotations": {
8187
+ "title": "Start website setup",
8188
+ "readOnlyHint": false,
8189
+ "destructiveHint": false
8190
+ },
8191
+ "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\nThe order must already have a hosting account: to create the first website on a new\nhosting plan use the create website endpoint, which takes the `datacenter_code`.\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.",
8192
+ "method": "POST",
8193
+ "path": "/api/hosting/v1/orders/{order_id}/onboardings",
8194
+ "inputSchema": {
8195
+ "type": "object",
8196
+ "properties": {
8197
+ "order_id": {
8198
+ "type": "integer",
8199
+ "description": "Hosting order ID. List orders to find available IDs."
8200
+ },
8201
+ "type": {
8202
+ "type": "string",
8203
+ "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.",
8204
+ "enum": [
8205
+ "wordpress",
8206
+ "headless_wordpress",
8207
+ "headless_ecommerce",
8208
+ "headless_pocketbase"
8209
+ ]
8210
+ },
8211
+ "domain": {
8212
+ "type": "string",
8213
+ "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
8214
+ },
8215
+ "wordpress": {
8216
+ "type": "object",
8217
+ "description": "WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.",
8218
+ "properties": {
8219
+ "language": {
8220
+ "type": "string",
8221
+ "description": "WordPress locale, for example `en_US` or `lt_LT`. Defaults to `en_US` when omitted."
8222
+ },
8223
+ "is_ai_builder": {
8224
+ "type": "boolean",
8225
+ "description": "When `true`, installs the Hostinger AI theme (`hostinger-ai-theme`). Defaults to `false` when omitted."
8226
+ },
8227
+ "admin": {
8228
+ "type": "object",
8229
+ "description": "WordPress administrator account",
8230
+ "properties": {
8231
+ "user": {
8232
+ "type": "string",
8233
+ "description": "WordPress admin username (letters, numbers, and underscore)"
8234
+ },
8235
+ "password": {
8236
+ "type": "string",
8237
+ "description": "WordPress admin password (8-50 characters, mixed case, a digit, and not compromised)"
8238
+ },
8239
+ "email": {
8240
+ "type": "string",
8241
+ "description": "WordPress admin email address"
8242
+ }
8243
+ },
8244
+ "required": [
8245
+ "user",
8246
+ "password",
8247
+ "email"
8248
+ ]
8249
+ }
8250
+ },
8251
+ "required": [
8252
+ "admin"
8253
+ ]
8254
+ }
8255
+ },
8256
+ "required": [
8257
+ "order_id"
8258
+ ]
8259
+ },
8260
+ "security": [
8261
+ {
8262
+ "apiToken": []
8263
+ }
8264
+ ],
8265
+ "group": "hosting"
8266
+ },
8175
8267
  {
8176
8268
  "name": "hosting_orders_list",
8177
8269
  "title": "List orders",
@@ -2615,12 +2615,20 @@ export default [
2615
2615
  "readOnlyHint": true,
2616
2616
  "destructiveHint": false
2617
2617
  },
2618
- "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first.\n\nMeant for polling right after creating a website: the website shows up in the\nwebsites list before its server-side setup has finished, and while the setup is\n`running` endpoints that operate on that website may respond with `404` or `409`.\nPoll this endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`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.",
2618
+ "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.",
2619
2619
  "method": "GET",
2620
2620
  "path": "/api/hosting/v1/onboardings",
2621
2621
  "inputSchema": {
2622
2622
  "type": "object",
2623
2623
  "properties": {
2624
+ "order_id": {
2625
+ "type": "integer",
2626
+ "description": "Order ID"
2627
+ },
2628
+ "subscription_id": {
2629
+ "type": "string",
2630
+ "description": "Filter by hosting order subscription ID"
2631
+ },
2624
2632
  "domain": {
2625
2633
  "type": "string",
2626
2634
  "description": "Filter by domain name (exact match)"
@@ -2635,6 +2643,90 @@ export default [
2635
2643
  ],
2636
2644
  "group": "hosting"
2637
2645
  },
2646
+ {
2647
+ "name": "hosting_websites_start-setup",
2648
+ "title": "Start website setup",
2649
+ "annotations": {
2650
+ "title": "Start website setup",
2651
+ "readOnlyHint": false,
2652
+ "destructiveHint": false
2653
+ },
2654
+ "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\nThe order must already have a hosting account: to create the first website on a new\nhosting plan use the create website endpoint, which takes the `datacenter_code`.\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.",
2655
+ "method": "POST",
2656
+ "path": "/api/hosting/v1/orders/{order_id}/onboardings",
2657
+ "inputSchema": {
2658
+ "type": "object",
2659
+ "properties": {
2660
+ "order_id": {
2661
+ "type": "integer",
2662
+ "description": "Hosting order ID. List orders to find available IDs."
2663
+ },
2664
+ "type": {
2665
+ "type": "string",
2666
+ "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.",
2667
+ "enum": [
2668
+ "wordpress",
2669
+ "headless_wordpress",
2670
+ "headless_ecommerce",
2671
+ "headless_pocketbase"
2672
+ ]
2673
+ },
2674
+ "domain": {
2675
+ "type": "string",
2676
+ "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
2677
+ },
2678
+ "wordpress": {
2679
+ "type": "object",
2680
+ "description": "WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.",
2681
+ "properties": {
2682
+ "language": {
2683
+ "type": "string",
2684
+ "description": "WordPress locale, for example `en_US` or `lt_LT`. Defaults to `en_US` when omitted."
2685
+ },
2686
+ "is_ai_builder": {
2687
+ "type": "boolean",
2688
+ "description": "When `true`, installs the Hostinger AI theme (`hostinger-ai-theme`). Defaults to `false` when omitted."
2689
+ },
2690
+ "admin": {
2691
+ "type": "object",
2692
+ "description": "WordPress administrator account",
2693
+ "properties": {
2694
+ "user": {
2695
+ "type": "string",
2696
+ "description": "WordPress admin username (letters, numbers, and underscore)"
2697
+ },
2698
+ "password": {
2699
+ "type": "string",
2700
+ "description": "WordPress admin password (8-50 characters, mixed case, a digit, and not compromised)"
2701
+ },
2702
+ "email": {
2703
+ "type": "string",
2704
+ "description": "WordPress admin email address"
2705
+ }
2706
+ },
2707
+ "required": [
2708
+ "user",
2709
+ "password",
2710
+ "email"
2711
+ ]
2712
+ }
2713
+ },
2714
+ "required": [
2715
+ "admin"
2716
+ ]
2717
+ }
2718
+ },
2719
+ "required": [
2720
+ "order_id"
2721
+ ]
2722
+ },
2723
+ "security": [
2724
+ {
2725
+ "apiToken": []
2726
+ }
2727
+ ],
2728
+ "group": "hosting"
2729
+ },
2638
2730
  {
2639
2731
  "name": "hosting_orders_list",
2640
2732
  "title": "List orders",
@@ -2629,12 +2629,20 @@ const tools: OpenApiTool[] = [
2629
2629
  "readOnlyHint": true,
2630
2630
  "destructiveHint": false
2631
2631
  },
2632
- "description": "Returns the website setups started in the last 24 hours for the hosting accounts\naccessible to the authenticated client, newest first.\n\nMeant for polling right after creating a website: the website shows up in the\nwebsites list before its server-side setup has finished, and while the setup is\n`running` endpoints that operate on that website may respond with `404` or `409`.\nPoll this endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`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.",
2632
+ "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.",
2633
2633
  "method": "GET",
2634
2634
  "path": "/api/hosting/v1/onboardings",
2635
2635
  "inputSchema": {
2636
2636
  "type": "object",
2637
2637
  "properties": {
2638
+ "order_id": {
2639
+ "type": "integer",
2640
+ "description": "Order ID"
2641
+ },
2642
+ "subscription_id": {
2643
+ "type": "string",
2644
+ "description": "Filter by hosting order subscription ID"
2645
+ },
2638
2646
  "domain": {
2639
2647
  "type": "string",
2640
2648
  "description": "Filter by domain name (exact match)"
@@ -2649,6 +2657,90 @@ const tools: OpenApiTool[] = [
2649
2657
  ],
2650
2658
  "group": "hosting"
2651
2659
  },
2660
+ {
2661
+ "name": "hosting_websites_start-setup",
2662
+ "title": "Start website setup",
2663
+ "annotations": {
2664
+ "title": "Start website setup",
2665
+ "readOnlyHint": false,
2666
+ "destructiveHint": false
2667
+ },
2668
+ "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\nThe order must already have a hosting account: to create the first website on a new\nhosting plan use the create website endpoint, which takes the `datacenter_code`.\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.",
2669
+ "method": "POST",
2670
+ "path": "/api/hosting/v1/orders/{order_id}/onboardings",
2671
+ "inputSchema": {
2672
+ "type": "object",
2673
+ "properties": {
2674
+ "order_id": {
2675
+ "type": "integer",
2676
+ "description": "Hosting order ID. List orders to find available IDs."
2677
+ },
2678
+ "type": {
2679
+ "type": "string",
2680
+ "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.",
2681
+ "enum": [
2682
+ "wordpress",
2683
+ "headless_wordpress",
2684
+ "headless_ecommerce",
2685
+ "headless_pocketbase"
2686
+ ]
2687
+ },
2688
+ "domain": {
2689
+ "type": "string",
2690
+ "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
2691
+ },
2692
+ "wordpress": {
2693
+ "type": "object",
2694
+ "description": "WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.",
2695
+ "properties": {
2696
+ "language": {
2697
+ "type": "string",
2698
+ "description": "WordPress locale, for example `en_US` or `lt_LT`. Defaults to `en_US` when omitted."
2699
+ },
2700
+ "is_ai_builder": {
2701
+ "type": "boolean",
2702
+ "description": "When `true`, installs the Hostinger AI theme (`hostinger-ai-theme`). Defaults to `false` when omitted."
2703
+ },
2704
+ "admin": {
2705
+ "type": "object",
2706
+ "description": "WordPress administrator account",
2707
+ "properties": {
2708
+ "user": {
2709
+ "type": "string",
2710
+ "description": "WordPress admin username (letters, numbers, and underscore)"
2711
+ },
2712
+ "password": {
2713
+ "type": "string",
2714
+ "description": "WordPress admin password (8-50 characters, mixed case, a digit, and not compromised)"
2715
+ },
2716
+ "email": {
2717
+ "type": "string",
2718
+ "description": "WordPress admin email address"
2719
+ }
2720
+ },
2721
+ "required": [
2722
+ "user",
2723
+ "password",
2724
+ "email"
2725
+ ]
2726
+ }
2727
+ },
2728
+ "required": [
2729
+ "admin"
2730
+ ]
2731
+ }
2732
+ },
2733
+ "required": [
2734
+ "order_id"
2735
+ ]
2736
+ },
2737
+ "security": [
2738
+ {
2739
+ "apiToken": []
2740
+ }
2741
+ ],
2742
+ "group": "hosting"
2743
+ },
2652
2744
  {
2653
2745
  "name": "hosting_orders_list",
2654
2746
  "title": "List orders",
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.3', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.8.0', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.3', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.8.0', tools, instructions });
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
  import skills from '../core/skills.js';
7
7
 
8
- startServer({ name: 'hostinger-api-mcp', version: '2.7.3', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.8.0', tools, instructions, skills });
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
  import skills from '../core/skills.js';
7
7
 
8
- startServer({ name: 'hostinger-api-mcp', version: '2.7.3', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.8.0', tools, instructions, skills });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.8.0', tools });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-hosting-mcp', version: '2.7.3', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.8.0', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-hosting-mcp', version: '2.7.3', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.8.0', tools, instructions });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.8.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.3', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.8.0', tools });
package/types.d.ts CHANGED
@@ -4717,18 +4717,30 @@ close or merge it before patching again. Available on Business and Cloud Hosting
4717
4717
 
4718
4718
  /**
4719
4719
  * Returns the website setups started in the last 24 hours for the hosting accounts
4720
- accessible to the authenticated client, newest first.
4721
-
4722
- Meant for polling right after creating a website: the website shows up in the
4723
- websites list before its server-side setup has finished, and while the setup is
4724
- `running` endpoints that operate on that website may respond with `404` or `409`.
4725
- Poll this endpoint with the `domain` filter every 10 to 15 seconds and wait for
4726
- `status: completed` before uploading files, deploying or creating databases.
4720
+ accessible to the authenticated client, newest first. Narrow the list with the
4721
+ `order_id`, `subscription_id` or `domain` filters.
4722
+
4723
+ Meant for polling right after creating a website or starting a website setup: the
4724
+ website shows up in the websites list before its server-side setup has finished, and
4725
+ while the setup is `running` endpoints that operate on that website may respond with
4726
+ `404` or `409`. Poll this endpoint with the `domain` filter every 10 to 15 seconds and
4727
+ wait for `status: completed` before uploading files, deploying or creating databases.
4727
4728
  `failed` means the setup stopped before finishing or has not reported progress for
4728
4729
  over an hour. Setups older than 24 hours are not listed.
4730
+
4731
+ `type` is the website type the setup was started with (`wordpress`, `headless_wordpress`,
4732
+ `headless_ecommerce`, `headless_pocketbase`), or `null` for an empty website.
4729
4733
  */
4730
4734
  "hosting_websites_list-setups": {
4731
4735
  params: {
4736
+ /**
4737
+ * Order ID
4738
+ */
4739
+ order_id?: number;
4740
+ /**
4741
+ * Filter by hosting order subscription ID
4742
+ */
4743
+ subscription_id?: string;
4732
4744
  /**
4733
4745
  * Filter by domain name (exact match)
4734
4746
  */
@@ -4737,6 +4749,49 @@ over an hour. Setups older than 24 hours are not listed.
4737
4749
  response: any; // Response structure will depend on the API
4738
4750
  };
4739
4751
 
4752
+ /**
4753
+ * Starts a website setup on a Web or Cloud hosting order and returns the created setup
4754
+ right away; the website itself is provisioned asynchronously. Poll the list website
4755
+ setups endpoint with the `domain` filter every 10 to 15 seconds and wait for
4756
+ `status: completed` before uploading files, deploying or creating databases.
4757
+
4758
+ Omit `type` for an empty website. `type: wordpress` installs WordPress in the website
4759
+ root with the admin user, email and password from `wordpress`, the domain as the site
4760
+ title, and `en_US` when `wordpress.language` is omitted. The headless types
4761
+ (`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless
4762
+ website; `headless_wordpress` additionally installs WordPress into the `cms` directory
4763
+ of the website root with generated credentials.
4764
+
4765
+ Omit `domain` to set the website up on a generated temporary free subdomain.
4766
+
4767
+ The order must already have a hosting account: to create the first website on a new
4768
+ hosting plan use the create website endpoint, which takes the `datacenter_code`.
4769
+ Returns 404 when the order does not exist or is not accessible to the authenticated
4770
+ client, and 409 with a `Retry-After` header while a setup for the same domain is still
4771
+ running.
4772
+ */
4773
+ "hosting_websites_start-setup": {
4774
+ params: {
4775
+ /**
4776
+ * Hosting order ID. List orders to find available IDs.
4777
+ */
4778
+ order_id: number;
4779
+ /**
4780
+ * 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.
4781
+ */
4782
+ type?: string;
4783
+ /**
4784
+ * Customer-owned domain. Cannot start with "www.". Omit or `null` to set the website up on a generated temporary free subdomain.
4785
+ */
4786
+ domain?: string;
4787
+ /**
4788
+ * WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.
4789
+ */
4790
+ wordpress?: object;
4791
+ };
4792
+ response: any; // Response structure will depend on the API
4793
+ };
4794
+
4740
4795
  /**
4741
4796
  * Retrieve a paginated list of orders accessible to the authenticated client.
4742
4797