hostinger-api-mcp 2.2.0 → 2.3.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,22 @@ 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.3.0 — 2026-09-28
8
+
9
+ ### Operations
10
+
11
+ - Added `hosting_websites_list-setups` — List website setups
12
+ - Changed the description of `hosting_databases_create-remote-connection`
13
+ - Changed the description of `hosting_files_generate-upload-url`
14
+ - Changed the description of `hosting_websites_list`
15
+ - Changed the description of `hosting_websites_create`
16
+
17
+ ### Also in this release
18
+
19
+ - Documentation: `README.md`
20
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
21
+ - Build and packaging: `types.d.ts`
22
+
7
23
  ## v2.2.0 — 2026-09-28
8
24
 
9
25
  ### Also in this release
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 (401 total)
72
+ - `hostinger-api-mcp` — unified server over every operation (402 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` — 41 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` — 74 operations for hosting
79
+ - `hostinger-hosting-mcp` — 75 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
@@ -1904,7 +1904,9 @@ The database name must be the full name returned by the list databases endpoint.
1904
1904
  Allows a remote host to connect to the specified database.
1905
1905
 
1906
1906
  Provide an IPv4/IPv6 address, or "%" to allow any host. The database name must be
1907
- the full name returned by the list databases endpoint.
1907
+ the full name returned by the list databases endpoint. Database creation is synchronous,
1908
+ so a 404 here means no database with that name exists under the username, not that it
1909
+ is still being created.
1908
1910
 
1909
1911
  - **Method**: `POST`
1910
1912
  - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections`
@@ -2072,6 +2074,10 @@ Skip this verification when using Hostinger's free subdomains (*.hostingersite.c
2072
2074
  Generate a file browser upload URL with authentication credentials
2073
2075
  for uploading files directly to a website's file storage.
2074
2076
 
2077
+ While the website is still being set up (`status: running` on the list website setups
2078
+ endpoint) this endpoint returns 409 with a `Retry-After` header: wait that many
2079
+ seconds and retry, or poll the website setups until the status is `completed`.
2080
+
2075
2081
  Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the
2076
2082
  website's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).
2077
2083
  Send `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request
@@ -2433,6 +2439,22 @@ close or merge it before patching again. Available on Business and Cloud Hosting
2433
2439
  - **Method**: `POST`
2434
2440
  - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/vulnerabilities/patch`
2435
2441
 
2442
+ #### hosting_websites_list-setups
2443
+
2444
+ Returns the website setups started in the last 24 hours for the hosting accounts
2445
+ accessible to the authenticated client, newest first.
2446
+
2447
+ Meant for polling right after creating a website: the website shows up in the
2448
+ websites list before its server-side setup has finished, and while the setup is
2449
+ `running` endpoints that operate on that website may respond with `404` or `409`.
2450
+ Poll this endpoint with the `domain` filter every 10 to 15 seconds and wait for
2451
+ `status: completed` before uploading files, deploying or creating databases.
2452
+ `failed` means the setup stopped before finishing or has not reported progress for
2453
+ over an hour. Setups older than 24 hours are not listed.
2454
+
2455
+ - **Method**: `GET`
2456
+ - **Path**: `/api/hosting/v1/onboardings`
2457
+
2436
2458
  #### hosting_orders_list
2437
2459
 
2438
2460
  Retrieve a paginated list of orders accessible to the authenticated client.
@@ -2602,6 +2624,11 @@ WordPress websites (`website_types=wordpress`) or only Node.js websites
2602
2624
  filter by username, order ID, enabled status, or domain name for more targeted
2603
2625
  results.
2604
2626
 
2627
+ A website appears in this list before its server-side setup has finished, and
2628
+ `is_enabled` reflects suspension, not readiness. To know when a newly created website
2629
+ is ready for file, deploy or database operations, poll the list website setups
2630
+ endpoint instead.
2631
+
2605
2632
  - **Method**: `GET`
2606
2633
  - **Path**: `/api/hosting/v1/websites`
2607
2634
 
@@ -2619,8 +2646,11 @@ in the selected datacenter.
2619
2646
 
2620
2647
  Subsequent websites will be hosted on the same datacenter automatically.
2621
2648
 
2622
- Website creation takes up to a few minutes to complete. Check the
2623
- websites list endpoint to see when your new website becomes available.
2649
+ Website creation is asynchronous and takes up to a few minutes. Poll the list website
2650
+ setups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:
2651
+ completed` before uploading files, deploying or creating databases. While the setup is
2652
+ `running`, endpoints that operate on the website may respond with `404` or `409`.
2653
+ `is_enabled` on the websites list reflects suspension, not readiness.
2624
2654
 
2625
2655
  - **Method**: `POST`
2626
2656
  - **Path**: `/api/hosting/v1/websites`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.2.0",
3
+ "version": "2.3.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.2.0",
3
+ "version": "2.3.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.2.0",
9
+ "version": "2.3.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "2.2.0",
14
+ "version": "2.3.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.54.2
67
+ * Generated from OpenAPI spec version 1.55.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.54.2
97
+ * Generated from OpenAPI spec version 1.55.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -6208,7 +6208,7 @@ export default [
6208
6208
  "readOnlyHint": false,
6209
6209
  "destructiveHint": false
6210
6210
  },
6211
- "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint.",
6211
+ "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint. Database creation is synchronous,\nso a 404 here means no database with that name exists under the username, not that it\nis still being created.",
6212
6212
  "method": "POST",
6213
6213
  "path": "/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections",
6214
6214
  "inputSchema": {
@@ -6760,7 +6760,7 @@ export default [
6760
6760
  "readOnlyHint": false,
6761
6761
  "destructiveHint": false
6762
6762
  },
6763
- "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
6763
+ "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nWhile the website is still being set up (`status: running` on the list website setups\nendpoint) this endpoint returns 409 with a `Retry-After` header: wait that many\nseconds and retry, or poll the website setups until the status is `completed`.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
6764
6764
  "method": "POST",
6765
6765
  "path": "/api/hosting/v1/files/upload-urls",
6766
6766
  "inputSchema": {
@@ -7924,6 +7924,34 @@ export default [
7924
7924
  ],
7925
7925
  "group": "hosting"
7926
7926
  },
7927
+ {
7928
+ "name": "hosting_websites_list-setups",
7929
+ "title": "List website setups",
7930
+ "annotations": {
7931
+ "title": "List website setups",
7932
+ "readOnlyHint": true,
7933
+ "destructiveHint": false
7934
+ },
7935
+ "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.",
7936
+ "method": "GET",
7937
+ "path": "/api/hosting/v1/onboardings",
7938
+ "inputSchema": {
7939
+ "type": "object",
7940
+ "properties": {
7941
+ "domain": {
7942
+ "type": "string",
7943
+ "description": "Filter by domain name (exact match)"
7944
+ }
7945
+ },
7946
+ "required": []
7947
+ },
7948
+ "security": [
7949
+ {
7950
+ "apiToken": []
7951
+ }
7952
+ ],
7953
+ "group": "hosting"
7954
+ },
7927
7955
  {
7928
7956
  "name": "hosting_orders_list",
7929
7957
  "title": "List orders",
@@ -8503,7 +8531,7 @@ export default [
8503
8531
  "readOnlyHint": true,
8504
8532
  "destructiveHint": false
8505
8533
  },
8506
- "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.",
8534
+ "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.\n\nA website appears in this list before its server-side setup has finished, and\n`is_enabled` reflects suspension, not readiness. To know when a newly created website\nis ready for file, deploy or database operations, poll the list website setups\nendpoint instead.",
8507
8535
  "method": "GET",
8508
8536
  "path": "/api/hosting/v1/websites",
8509
8537
  "inputSchema": {
@@ -8566,7 +8594,7 @@ export default [
8566
8594
  "readOnlyHint": false,
8567
8595
  "destructiveHint": false
8568
8596
  },
8569
- "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation takes up to a few minutes to complete. Check the\nwebsites list endpoint to see when your new website becomes available.",
8597
+ "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation is asynchronous and takes up to a few minutes. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:\ncompleted` before uploading files, deploying or creating databases. While the setup is\n`running`, endpoints that operate on the website may respond with `404` or `409`.\n`is_enabled` on the websites list reflects suspension, not readiness.",
8570
8598
  "method": "POST",
8571
8599
  "path": "/api/hosting/v1/websites",
8572
8600
  "inputSchema": {
@@ -6222,7 +6222,7 @@ const tools: OpenApiTool[] = [
6222
6222
  "readOnlyHint": false,
6223
6223
  "destructiveHint": false
6224
6224
  },
6225
- "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint.",
6225
+ "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint. Database creation is synchronous,\nso a 404 here means no database with that name exists under the username, not that it\nis still being created.",
6226
6226
  "method": "POST",
6227
6227
  "path": "/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections",
6228
6228
  "inputSchema": {
@@ -6774,7 +6774,7 @@ const tools: OpenApiTool[] = [
6774
6774
  "readOnlyHint": false,
6775
6775
  "destructiveHint": false
6776
6776
  },
6777
- "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
6777
+ "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nWhile the website is still being set up (`status: running` on the list website setups\nendpoint) this endpoint returns 409 with a `Retry-After` header: wait that many\nseconds and retry, or poll the website setups until the status is `completed`.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
6778
6778
  "method": "POST",
6779
6779
  "path": "/api/hosting/v1/files/upload-urls",
6780
6780
  "inputSchema": {
@@ -7938,6 +7938,34 @@ const tools: OpenApiTool[] = [
7938
7938
  ],
7939
7939
  "group": "hosting"
7940
7940
  },
7941
+ {
7942
+ "name": "hosting_websites_list-setups",
7943
+ "title": "List website setups",
7944
+ "annotations": {
7945
+ "title": "List website setups",
7946
+ "readOnlyHint": true,
7947
+ "destructiveHint": false
7948
+ },
7949
+ "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.",
7950
+ "method": "GET",
7951
+ "path": "/api/hosting/v1/onboardings",
7952
+ "inputSchema": {
7953
+ "type": "object",
7954
+ "properties": {
7955
+ "domain": {
7956
+ "type": "string",
7957
+ "description": "Filter by domain name (exact match)"
7958
+ }
7959
+ },
7960
+ "required": []
7961
+ },
7962
+ "security": [
7963
+ {
7964
+ "apiToken": []
7965
+ }
7966
+ ],
7967
+ "group": "hosting"
7968
+ },
7941
7969
  {
7942
7970
  "name": "hosting_orders_list",
7943
7971
  "title": "List orders",
@@ -8517,7 +8545,7 @@ const tools: OpenApiTool[] = [
8517
8545
  "readOnlyHint": true,
8518
8546
  "destructiveHint": false
8519
8547
  },
8520
- "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.",
8548
+ "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.\n\nA website appears in this list before its server-side setup has finished, and\n`is_enabled` reflects suspension, not readiness. To know when a newly created website\nis ready for file, deploy or database operations, poll the list website setups\nendpoint instead.",
8521
8549
  "method": "GET",
8522
8550
  "path": "/api/hosting/v1/websites",
8523
8551
  "inputSchema": {
@@ -8580,7 +8608,7 @@ const tools: OpenApiTool[] = [
8580
8608
  "readOnlyHint": false,
8581
8609
  "destructiveHint": false
8582
8610
  },
8583
- "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation takes up to a few minutes to complete. Check the\nwebsites list endpoint to see when your new website becomes available.",
8611
+ "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation is asynchronous and takes up to a few minutes. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:\ncompleted` before uploading files, deploying or creating databases. While the setup is\n`running`, endpoints that operate on the website may respond with `404` or `409`.\n`is_enabled` on the websites list reflects suspension, not readiness.",
8584
8612
  "method": "POST",
8585
8613
  "path": "/api/hosting/v1/websites",
8586
8614
  "inputSchema": {
@@ -747,7 +747,7 @@ export default [
747
747
  "readOnlyHint": false,
748
748
  "destructiveHint": false
749
749
  },
750
- "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint.",
750
+ "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint. Database creation is synchronous,\nso a 404 here means no database with that name exists under the username, not that it\nis still being created.",
751
751
  "method": "POST",
752
752
  "path": "/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections",
753
753
  "inputSchema": {
@@ -1299,7 +1299,7 @@ export default [
1299
1299
  "readOnlyHint": false,
1300
1300
  "destructiveHint": false
1301
1301
  },
1302
- "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
1302
+ "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nWhile the website is still being set up (`status: running` on the list website setups\nendpoint) this endpoint returns 409 with a `Retry-After` header: wait that many\nseconds and retry, or poll the website setups until the status is `completed`.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
1303
1303
  "method": "POST",
1304
1304
  "path": "/api/hosting/v1/files/upload-urls",
1305
1305
  "inputSchema": {
@@ -2463,6 +2463,34 @@ export default [
2463
2463
  ],
2464
2464
  "group": "hosting"
2465
2465
  },
2466
+ {
2467
+ "name": "hosting_websites_list-setups",
2468
+ "title": "List website setups",
2469
+ "annotations": {
2470
+ "title": "List website setups",
2471
+ "readOnlyHint": true,
2472
+ "destructiveHint": false
2473
+ },
2474
+ "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.",
2475
+ "method": "GET",
2476
+ "path": "/api/hosting/v1/onboardings",
2477
+ "inputSchema": {
2478
+ "type": "object",
2479
+ "properties": {
2480
+ "domain": {
2481
+ "type": "string",
2482
+ "description": "Filter by domain name (exact match)"
2483
+ }
2484
+ },
2485
+ "required": []
2486
+ },
2487
+ "security": [
2488
+ {
2489
+ "apiToken": []
2490
+ }
2491
+ ],
2492
+ "group": "hosting"
2493
+ },
2466
2494
  {
2467
2495
  "name": "hosting_orders_list",
2468
2496
  "title": "List orders",
@@ -3042,7 +3070,7 @@ export default [
3042
3070
  "readOnlyHint": true,
3043
3071
  "destructiveHint": false
3044
3072
  },
3045
- "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.",
3073
+ "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.\n\nA website appears in this list before its server-side setup has finished, and\n`is_enabled` reflects suspension, not readiness. To know when a newly created website\nis ready for file, deploy or database operations, poll the list website setups\nendpoint instead.",
3046
3074
  "method": "GET",
3047
3075
  "path": "/api/hosting/v1/websites",
3048
3076
  "inputSchema": {
@@ -3105,7 +3133,7 @@ export default [
3105
3133
  "readOnlyHint": false,
3106
3134
  "destructiveHint": false
3107
3135
  },
3108
- "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation takes up to a few minutes to complete. Check the\nwebsites list endpoint to see when your new website becomes available.",
3136
+ "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation is asynchronous and takes up to a few minutes. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:\ncompleted` before uploading files, deploying or creating databases. While the setup is\n`running`, endpoints that operate on the website may respond with `404` or `409`.\n`is_enabled` on the websites list reflects suspension, not readiness.",
3109
3137
  "method": "POST",
3110
3138
  "path": "/api/hosting/v1/websites",
3111
3139
  "inputSchema": {
@@ -761,7 +761,7 @@ const tools: OpenApiTool[] = [
761
761
  "readOnlyHint": false,
762
762
  "destructiveHint": false
763
763
  },
764
- "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint.",
764
+ "description": "Allows a remote host to connect to the specified database.\n\nProvide an IPv4/IPv6 address, or \"%\" to allow any host. The database name must be\nthe full name returned by the list databases endpoint. Database creation is synchronous,\nso a 404 here means no database with that name exists under the username, not that it\nis still being created.",
765
765
  "method": "POST",
766
766
  "path": "/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections",
767
767
  "inputSchema": {
@@ -1313,7 +1313,7 @@ const tools: OpenApiTool[] = [
1313
1313
  "readOnlyHint": false,
1314
1314
  "destructiveHint": false
1315
1315
  },
1316
- "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
1316
+ "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nWhile the website is still being set up (`status: running` on the list website setups\nendpoint) this endpoint returns 409 with a `Retry-After` header: wait that many\nseconds and retry, or poll the website setups until the status is `completed`.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
1317
1317
  "method": "POST",
1318
1318
  "path": "/api/hosting/v1/files/upload-urls",
1319
1319
  "inputSchema": {
@@ -2477,6 +2477,34 @@ const tools: OpenApiTool[] = [
2477
2477
  ],
2478
2478
  "group": "hosting"
2479
2479
  },
2480
+ {
2481
+ "name": "hosting_websites_list-setups",
2482
+ "title": "List website setups",
2483
+ "annotations": {
2484
+ "title": "List website setups",
2485
+ "readOnlyHint": true,
2486
+ "destructiveHint": false
2487
+ },
2488
+ "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.",
2489
+ "method": "GET",
2490
+ "path": "/api/hosting/v1/onboardings",
2491
+ "inputSchema": {
2492
+ "type": "object",
2493
+ "properties": {
2494
+ "domain": {
2495
+ "type": "string",
2496
+ "description": "Filter by domain name (exact match)"
2497
+ }
2498
+ },
2499
+ "required": []
2500
+ },
2501
+ "security": [
2502
+ {
2503
+ "apiToken": []
2504
+ }
2505
+ ],
2506
+ "group": "hosting"
2507
+ },
2480
2508
  {
2481
2509
  "name": "hosting_orders_list",
2482
2510
  "title": "List orders",
@@ -3056,7 +3084,7 @@ const tools: OpenApiTool[] = [
3056
3084
  "readOnlyHint": true,
3057
3085
  "destructiveHint": false
3058
3086
  },
3059
- "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.",
3087
+ "description": "Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the\nauthenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nEach website includes a `website_type` field describing the type of\nwebsite detected on the underlying platform (`wordpress`, `builder`,\n`horizons`, `nodejs`, or `other`). Some fields, such as\n`vhost_type`, `username`, and `root_directory`, only apply to\nCloudLinux websites and are null for other platforms.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with the other available query parameters to\nfilter by username, order ID, enabled status, or domain name for more targeted\nresults.\n\nA website appears in this list before its server-side setup has finished, and\n`is_enabled` reflects suspension, not readiness. To know when a newly created website\nis ready for file, deploy or database operations, poll the list website setups\nendpoint instead.",
3060
3088
  "method": "GET",
3061
3089
  "path": "/api/hosting/v1/websites",
3062
3090
  "inputSchema": {
@@ -3119,7 +3147,7 @@ const tools: OpenApiTool[] = [
3119
3147
  "readOnlyHint": false,
3120
3148
  "destructiveHint": false
3121
3149
  },
3122
- "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation takes up to a few minutes to complete. Check the\nwebsites list endpoint to see when your new website becomes available.",
3150
+ "description": "Create a new website for the authenticated client.\n\nYou must choose which hosting order to create this website on. Pass that\norder as `order_id` together with the domain name. List orders to see\navailable IDs; the website is provisioned on that order's hosting plan.\n\nThe datacenter_code parameter is required when creating the first website\non a new hosting plan - this will set up and configure new hosting account\nin the selected datacenter.\n\nSubsequent websites will be hosted on the same datacenter automatically.\n\nWebsite creation is asynchronous and takes up to a few minutes. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:\ncompleted` before uploading files, deploying or creating databases. While the setup is\n`running`, endpoints that operate on the website may respond with `404` or `409`.\n`is_enabled` on the websites list reflects suspension, not readiness.",
3123
3151
  "method": "POST",
3124
3152
  "path": "/api/hosting/v1/websites",
3125
3153
  "inputSchema": {
@@ -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.2.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.3.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.2.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.3.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.2.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.3.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.2.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.3.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.2.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.3.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.2.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.3.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.2.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.3.0', tools });
package/types.d.ts CHANGED
@@ -3446,7 +3446,9 @@ The database name must be the full name returned by the list databases endpoint.
3446
3446
  * Allows a remote host to connect to the specified database.
3447
3447
 
3448
3448
  Provide an IPv4/IPv6 address, or "%" to allow any host. The database name must be
3449
- the full name returned by the list databases endpoint.
3449
+ the full name returned by the list databases endpoint. Database creation is synchronous,
3450
+ so a 404 here means no database with that name exists under the username, not that it
3451
+ is still being created.
3450
3452
  */
3451
3453
  "hosting_databases_create-remote-connection": {
3452
3454
  params: {
@@ -3797,6 +3799,10 @@ Skip this verification when using Hostinger's free subdomains (*.hostingersite.c
3797
3799
  * Generate a file browser upload URL with authentication credentials
3798
3800
  for uploading files directly to a website's file storage.
3799
3801
 
3802
+ While the website is still being set up (`status: running` on the list website setups
3803
+ endpoint) this endpoint returns 409 with a `Retry-After` header: wait that many
3804
+ seconds and retry, or poll the website setups until the status is `completed`.
3805
+
3800
3806
  Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the
3801
3807
  website's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).
3802
3808
  Send `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request
@@ -4576,6 +4582,28 @@ close or merge it before patching again. Available on Business and Cloud Hosting
4576
4582
  response: any; // Response structure will depend on the API
4577
4583
  };
4578
4584
 
4585
+ /**
4586
+ * Returns the website setups started in the last 24 hours for the hosting accounts
4587
+ accessible to the authenticated client, newest first.
4588
+
4589
+ Meant for polling right after creating a website: the website shows up in the
4590
+ websites list before its server-side setup has finished, and while the setup is
4591
+ `running` endpoints that operate on that website may respond with `404` or `409`.
4592
+ Poll this endpoint with the `domain` filter every 10 to 15 seconds and wait for
4593
+ `status: completed` before uploading files, deploying or creating databases.
4594
+ `failed` means the setup stopped before finishing or has not reported progress for
4595
+ over an hour. Setups older than 24 hours are not listed.
4596
+ */
4597
+ "hosting_websites_list-setups": {
4598
+ params: {
4599
+ /**
4600
+ * Filter by domain name (exact match)
4601
+ */
4602
+ domain?: string;
4603
+ };
4604
+ response: any; // Response structure will depend on the API
4605
+ };
4606
+
4579
4607
  /**
4580
4608
  * Retrieve a paginated list of orders accessible to the authenticated client.
4581
4609
 
@@ -4931,6 +4959,11 @@ WordPress websites (`website_types=wordpress`) or only Node.js websites
4931
4959
  (`website_types=nodejs`). Combine with the other available query parameters to
4932
4960
  filter by username, order ID, enabled status, or domain name for more targeted
4933
4961
  results.
4962
+
4963
+ A website appears in this list before its server-side setup has finished, and
4964
+ `is_enabled` reflects suspension, not readiness. To know when a newly created website
4965
+ is ready for file, deploy or database operations, poll the list website setups
4966
+ endpoint instead.
4934
4967
  */
4935
4968
  "hosting_websites_list": {
4936
4969
  params: {
@@ -4979,8 +5012,11 @@ in the selected datacenter.
4979
5012
 
4980
5013
  Subsequent websites will be hosted on the same datacenter automatically.
4981
5014
 
4982
- Website creation takes up to a few minutes to complete. Check the
4983
- websites list endpoint to see when your new website becomes available.
5015
+ Website creation is asynchronous and takes up to a few minutes. Poll the list website
5016
+ setups endpoint with the `domain` filter every 10 to 15 seconds and wait for `status:
5017
+ completed` before uploading files, deploying or creating databases. While the setup is
5018
+ `running`, endpoints that operate on the website may respond with `404` or `409`.
5019
+ `is_enabled` on the websites list reflects suspension, not readiness.
4984
5020
  */
4985
5021
  "hosting_websites_create": {
4986
5022
  params: {