@hostinger/mcp 2.17.0 → 2.18.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,32 @@ 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.18.0 — 2026-10-15
8
+
9
+ ### Operations
10
+
11
+ - Changed the description and input schema of `hosting_websites_start-setup`
12
+ - Changed the description and input schema of `hosting_websites_create`
13
+
14
+ ### Also in this release
15
+
16
+ - Documentation: `README.md`
17
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
18
+ - Build and packaging: `types.d.ts`
19
+
20
+ ## v2.17.1 — 2026-10-15
21
+
22
+ ### Operations
23
+
24
+ - Renamed `agent-readiness_scans_run-website` → `agent-readiness_scans_run`
25
+ - Renamed `agent-readiness_scans_website` → `agent-readiness_scans_get`
26
+
27
+ ### Also in this release
28
+
29
+ - Documentation: `README.md`
30
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
31
+ - Build and packaging: `types.d.ts`
32
+
7
33
  ## v2.17.0 — 2026-10-15
8
34
 
9
35
  ### Operations
package/README.md CHANGED
@@ -691,12 +691,12 @@ Use it to show the human-readable name of each `check_id` in a scan's results.
691
691
  - **Method**: `GET`
692
692
  - **Path**: `/api/agent-readiness/v1/checks`
693
693
 
694
- #### agent-readiness_scans_run-website
694
+ #### agent-readiness_scans_run
695
695
 
696
696
  Start a scan of how ready a public website is for AI agents to discover, read and act on.\n
697
697
  Scanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`
698
- with no results yet. To get the results, poll the `Get website scan` operation with the same domain every
699
- few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,
698
+ with no results yet. To get the results, poll the `Get agent readiness scan` operation with the same
699
+ domain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,
700
700
  plus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\n
701
701
  Starting a scan for a domain that already has a pending scan from the last 5 minutes
702
702
  returns that scan instead of starting a new one.
@@ -704,15 +704,15 @@ returns that scan instead of starting a new one.
704
704
  - **Method**: `POST`
705
705
  - **Path**: `/api/agent-readiness/v1/scans`
706
706
 
707
- #### agent-readiness_scans_website
707
+ #### agent-readiness_scans_get
708
708
 
709
709
  Get the latest agent readiness scan of a website.\n
710
- Scans started with the `Run website scan` operation are asynchronous. While the status is `pending`,
711
- the result fields are null; wait a few seconds and call this operation again until the status is
710
+ Scans started with the `Run agent readiness scan` operation are asynchronous. While the status is
711
+ `pending`, the result fields are null; wait a few seconds and call this operation again until the status is
712
712
  `completed` or `failed`. A `failed` scan is not retried; run the scan again.\n
713
713
  A completed scan has a 0-100 score, a letter grade, a score per category, and the result of every
714
714
  check with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\n
715
- Returns 404 when the domain has never been scanned; use the `Run website scan` operation first.
715
+ Returns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.
716
716
 
717
717
  - **Method**: `GET`
718
718
  - **Path**: `/api/agent-readiness/v1/scans/{domain}`
@@ -2600,8 +2600,8 @@ of the website root with generated credentials.
2600
2600
 
2601
2601
  Omit `domain` to set the website up on a generated temporary free subdomain.
2602
2602
 
2603
- The order must already have a hosting account: to create the first website on a new
2604
- hosting plan use the create website endpoint, which takes the `datacenter_code`.
2603
+ When the order has no hosting account yet, the setup creates one first, in the datacenter
2604
+ given by `datacenter_code` or the order's default datacenter when it is omitted.
2605
2605
  Returns 404 when the order does not exist or is not accessible to the authenticated
2606
2606
  client, and 409 with a `Retry-After` header while a setup for the same domain is still
2607
2607
  running.
@@ -2791,6 +2791,10 @@ endpoint instead.
2791
2791
 
2792
2792
  #### hosting_websites_create
2793
2793
 
2794
+ Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)
2795
+ instead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and
2796
+ returns the created setup.
2797
+
2794
2798
  Create a new website for the authenticated client.
2795
2799
 
2796
2800
  You must choose which hosting order to create this website on. Pass that
@@ -2800,10 +2804,8 @@ available IDs; the website is provisioned on that order's hosting plan.
2800
2804
  Only Web and Cloud hosting orders are accepted. To create a website on an Agency
2801
2805
  Plan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.
2802
2806
 
2803
- The datacenter_code parameter is required when creating the first website
2804
- on a new hosting plan - this will set up and configure new hosting account
2805
- in the selected datacenter.
2806
-
2807
+ When the order has no hosting account yet, a new hosting account is set up first, in the
2808
+ datacenter given by `datacenter_code` or the order's default datacenter when it is omitted.
2807
2809
  Subsequent websites will be hosted on the same datacenter automatically.
2808
2810
 
2809
2811
  Website creation is asynchronous and takes up to a few minutes. Poll the list website
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.17.0",
3
+ "version": "2.18.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/mcp",
3
- "version": "2.17.0",
3
+ "version": "2.18.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.17.0",
9
+ "version": "2.18.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "2.17.0",
14
+ "version": "2.18.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.67.0
67
+ * Generated from OpenAPI spec version 1.68.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.67.0
97
+ * Generated from OpenAPI spec version 1.68.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -24,14 +24,14 @@ export default [
24
24
  "group": "agent-readiness"
25
25
  },
26
26
  {
27
- "name": "agent-readiness_scans_run-website",
28
- "title": "Run website scan",
27
+ "name": "agent-readiness_scans_run",
28
+ "title": "Run agent readiness scan",
29
29
  "annotations": {
30
- "title": "Run website scan",
30
+ "title": "Run agent readiness scan",
31
31
  "readOnlyHint": false,
32
32
  "destructiveHint": false
33
33
  },
34
- "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get website scan` operation with the same domain every\nfew seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
34
+ "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get agent readiness scan` operation with the same\ndomain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
35
35
  "method": "POST",
36
36
  "path": "/api/agent-readiness/v1/scans",
37
37
  "inputSchema": {
@@ -54,14 +54,14 @@ export default [
54
54
  "group": "agent-readiness"
55
55
  },
56
56
  {
57
- "name": "agent-readiness_scans_website",
58
- "title": "Get website scan",
57
+ "name": "agent-readiness_scans_get",
58
+ "title": "Get agent readiness scan",
59
59
  "annotations": {
60
- "title": "Get website scan",
60
+ "title": "Get agent readiness scan",
61
61
  "readOnlyHint": true,
62
62
  "destructiveHint": false
63
63
  },
64
- "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run website scan` operation are asynchronous. While the status is `pending`,\nthe result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run website scan` operation first.",
64
+ "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run agent readiness scan` operation are asynchronous. While the status is\n`pending`, the result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.",
65
65
  "method": "GET",
66
66
  "path": "/api/agent-readiness/v1/scans/{domain}",
67
67
  "inputSchema": {
@@ -38,14 +38,14 @@ const tools: OpenApiTool[] = [
38
38
  "group": "agent-readiness"
39
39
  },
40
40
  {
41
- "name": "agent-readiness_scans_run-website",
42
- "title": "Run website scan",
41
+ "name": "agent-readiness_scans_run",
42
+ "title": "Run agent readiness scan",
43
43
  "annotations": {
44
- "title": "Run website scan",
44
+ "title": "Run agent readiness scan",
45
45
  "readOnlyHint": false,
46
46
  "destructiveHint": false
47
47
  },
48
- "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get website scan` operation with the same domain every\nfew seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
48
+ "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get agent readiness scan` operation with the same\ndomain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
49
49
  "method": "POST",
50
50
  "path": "/api/agent-readiness/v1/scans",
51
51
  "inputSchema": {
@@ -68,14 +68,14 @@ const tools: OpenApiTool[] = [
68
68
  "group": "agent-readiness"
69
69
  },
70
70
  {
71
- "name": "agent-readiness_scans_website",
72
- "title": "Get website scan",
71
+ "name": "agent-readiness_scans_get",
72
+ "title": "Get agent readiness scan",
73
73
  "annotations": {
74
- "title": "Get website scan",
74
+ "title": "Get agent readiness scan",
75
75
  "readOnlyHint": true,
76
76
  "destructiveHint": false
77
77
  },
78
- "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run website scan` operation are asynchronous. While the status is `pending`,\nthe result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run website scan` operation first.",
78
+ "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run agent readiness scan` operation are asynchronous. While the status is\n`pending`, the result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.",
79
79
  "method": "GET",
80
80
  "path": "/api/agent-readiness/v1/scans/{domain}",
81
81
  "inputSchema": {
@@ -1955,14 +1955,14 @@ export default [
1955
1955
  "group": "agent-readiness"
1956
1956
  },
1957
1957
  {
1958
- "name": "agent-readiness_scans_run-website",
1959
- "title": "Run website scan",
1958
+ "name": "agent-readiness_scans_run",
1959
+ "title": "Run agent readiness scan",
1960
1960
  "annotations": {
1961
- "title": "Run website scan",
1961
+ "title": "Run agent readiness scan",
1962
1962
  "readOnlyHint": false,
1963
1963
  "destructiveHint": false
1964
1964
  },
1965
- "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get website scan` operation with the same domain every\nfew seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
1965
+ "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get agent readiness scan` operation with the same\ndomain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
1966
1966
  "method": "POST",
1967
1967
  "path": "/api/agent-readiness/v1/scans",
1968
1968
  "inputSchema": {
@@ -1985,14 +1985,14 @@ export default [
1985
1985
  "group": "agent-readiness"
1986
1986
  },
1987
1987
  {
1988
- "name": "agent-readiness_scans_website",
1989
- "title": "Get website scan",
1988
+ "name": "agent-readiness_scans_get",
1989
+ "title": "Get agent readiness scan",
1990
1990
  "annotations": {
1991
- "title": "Get website scan",
1991
+ "title": "Get agent readiness scan",
1992
1992
  "readOnlyHint": true,
1993
1993
  "destructiveHint": false
1994
1994
  },
1995
- "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run website scan` operation are asynchronous. While the status is `pending`,\nthe result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run website scan` operation first.",
1995
+ "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run agent readiness scan` operation are asynchronous. While the status is\n`pending`, the result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.",
1996
1996
  "method": "GET",
1997
1997
  "path": "/api/agent-readiness/v1/scans/{domain}",
1998
1998
  "inputSchema": {
@@ -8484,7 +8484,7 @@ export default [
8484
8484
  "readOnlyHint": false,
8485
8485
  "destructiveHint": false
8486
8486
  },
8487
- "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.",
8487
+ "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`status: completed` before uploading files, deploying or creating databases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless\nwebsite; `headless_wordpress` additionally installs WordPress into the `cms` directory\nof the website root with generated credentials.\n\nOmit `domain` to set the website up on a generated temporary free subdomain.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
8488
8488
  "method": "POST",
8489
8489
  "path": "/api/hosting/v1/orders/{order_id}/onboardings",
8490
8490
  "inputSchema": {
@@ -8506,7 +8506,11 @@ export default [
8506
8506
  },
8507
8507
  "domain": {
8508
8508
  "type": "string",
8509
- "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
8509
+ "description": "Customer-owned domain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
8510
+ },
8511
+ "datacenter_code": {
8512
+ "type": "string",
8513
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. List available datacenters to find valid codes."
8510
8514
  },
8511
8515
  "wordpress": {
8512
8516
  "type": "object",
@@ -9202,7 +9206,7 @@ export default [
9202
9206
  "readOnlyHint": false,
9203
9207
  "destructiveHint": false
9204
9208
  },
9205
- "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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\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.",
9209
+ "description": "Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)\ninstead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and\nreturns the created setup.\n\nCreate 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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\n\nWhen the order has no hosting account yet, a new hosting account is set up first, in the\ndatacenter given by `datacenter_code` or the order's default datacenter when it is omitted.\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.",
9206
9210
  "method": "POST",
9207
9211
  "path": "/api/hosting/v1/websites",
9208
9212
  "inputSchema": {
@@ -9210,7 +9214,7 @@ export default [
9210
9214
  "properties": {
9211
9215
  "domain": {
9212
9216
  "type": "string",
9213
- "description": "Domain name for the website. Cannot start with \"www.\""
9217
+ "description": "Domain name for the website. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`."
9214
9218
  },
9215
9219
  "order_id": {
9216
9220
  "type": "integer",
@@ -9218,7 +9222,7 @@ export default [
9218
9222
  },
9219
9223
  "datacenter_code": {
9220
9224
  "type": "string",
9221
- "description": "Datacenter code. This parameter is required when creating the first website on a new hosting plan."
9225
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. Must be an available datacenter; list available datacenters to find valid codes."
9222
9226
  }
9223
9227
  },
9224
9228
  "required": [
@@ -1969,14 +1969,14 @@ const tools: OpenApiTool[] = [
1969
1969
  "group": "agent-readiness"
1970
1970
  },
1971
1971
  {
1972
- "name": "agent-readiness_scans_run-website",
1973
- "title": "Run website scan",
1972
+ "name": "agent-readiness_scans_run",
1973
+ "title": "Run agent readiness scan",
1974
1974
  "annotations": {
1975
- "title": "Run website scan",
1975
+ "title": "Run agent readiness scan",
1976
1976
  "readOnlyHint": false,
1977
1977
  "destructiveHint": false
1978
1978
  },
1979
- "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get website scan` operation with the same domain every\nfew seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
1979
+ "description": "Start a scan of how ready a public website is for AI agents to discover, read and act on.\\n\nScanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`\nwith no results yet. To get the results, poll the `Get agent readiness scan` operation with the same\ndomain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,\nplus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\\n\nStarting a scan for a domain that already has a pending scan from the last 5 minutes\nreturns that scan instead of starting a new one.",
1980
1980
  "method": "POST",
1981
1981
  "path": "/api/agent-readiness/v1/scans",
1982
1982
  "inputSchema": {
@@ -1999,14 +1999,14 @@ const tools: OpenApiTool[] = [
1999
1999
  "group": "agent-readiness"
2000
2000
  },
2001
2001
  {
2002
- "name": "agent-readiness_scans_website",
2003
- "title": "Get website scan",
2002
+ "name": "agent-readiness_scans_get",
2003
+ "title": "Get agent readiness scan",
2004
2004
  "annotations": {
2005
- "title": "Get website scan",
2005
+ "title": "Get agent readiness scan",
2006
2006
  "readOnlyHint": true,
2007
2007
  "destructiveHint": false
2008
2008
  },
2009
- "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run website scan` operation are asynchronous. While the status is `pending`,\nthe result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run website scan` operation first.",
2009
+ "description": "Get the latest agent readiness scan of a website.\\n\nScans started with the `Run agent readiness scan` operation are asynchronous. While the status is\n`pending`, the result fields are null; wait a few seconds and call this operation again until the status is\n`completed` or `failed`. A `failed` scan is not retried; run the scan again.\\n\nA completed scan has a 0-100 score, a letter grade, a score per category, and the result of every\ncheck with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\\n\nReturns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.",
2010
2010
  "method": "GET",
2011
2011
  "path": "/api/agent-readiness/v1/scans/{domain}",
2012
2012
  "inputSchema": {
@@ -8498,7 +8498,7 @@ const tools: OpenApiTool[] = [
8498
8498
  "readOnlyHint": false,
8499
8499
  "destructiveHint": false
8500
8500
  },
8501
- "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.",
8501
+ "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`status: completed` before uploading files, deploying or creating databases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless\nwebsite; `headless_wordpress` additionally installs WordPress into the `cms` directory\nof the website root with generated credentials.\n\nOmit `domain` to set the website up on a generated temporary free subdomain.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
8502
8502
  "method": "POST",
8503
8503
  "path": "/api/hosting/v1/orders/{order_id}/onboardings",
8504
8504
  "inputSchema": {
@@ -8520,7 +8520,11 @@ const tools: OpenApiTool[] = [
8520
8520
  },
8521
8521
  "domain": {
8522
8522
  "type": "string",
8523
- "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
8523
+ "description": "Customer-owned domain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
8524
+ },
8525
+ "datacenter_code": {
8526
+ "type": "string",
8527
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. List available datacenters to find valid codes."
8524
8528
  },
8525
8529
  "wordpress": {
8526
8530
  "type": "object",
@@ -9216,7 +9220,7 @@ const tools: OpenApiTool[] = [
9216
9220
  "readOnlyHint": false,
9217
9221
  "destructiveHint": false
9218
9222
  },
9219
- "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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\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.",
9223
+ "description": "Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)\ninstead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and\nreturns the created setup.\n\nCreate 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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\n\nWhen the order has no hosting account yet, a new hosting account is set up first, in the\ndatacenter given by `datacenter_code` or the order's default datacenter when it is omitted.\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.",
9220
9224
  "method": "POST",
9221
9225
  "path": "/api/hosting/v1/websites",
9222
9226
  "inputSchema": {
@@ -9224,7 +9228,7 @@ const tools: OpenApiTool[] = [
9224
9228
  "properties": {
9225
9229
  "domain": {
9226
9230
  "type": "string",
9227
- "description": "Domain name for the website. Cannot start with \"www.\""
9231
+ "description": "Domain name for the website. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`."
9228
9232
  },
9229
9233
  "order_id": {
9230
9234
  "type": "integer",
@@ -9232,7 +9236,7 @@ const tools: OpenApiTool[] = [
9232
9236
  },
9233
9237
  "datacenter_code": {
9234
9238
  "type": "string",
9235
- "description": "Datacenter code. This parameter is required when creating the first website on a new hosting plan."
9239
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. Must be an available datacenter; list available datacenters to find valid codes."
9236
9240
  }
9237
9241
  },
9238
9242
  "required": [
@@ -2874,7 +2874,7 @@ export default [
2874
2874
  "readOnlyHint": false,
2875
2875
  "destructiveHint": false
2876
2876
  },
2877
- "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.",
2877
+ "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`status: completed` before uploading files, deploying or creating databases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless\nwebsite; `headless_wordpress` additionally installs WordPress into the `cms` directory\nof the website root with generated credentials.\n\nOmit `domain` to set the website up on a generated temporary free subdomain.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
2878
2878
  "method": "POST",
2879
2879
  "path": "/api/hosting/v1/orders/{order_id}/onboardings",
2880
2880
  "inputSchema": {
@@ -2896,7 +2896,11 @@ export default [
2896
2896
  },
2897
2897
  "domain": {
2898
2898
  "type": "string",
2899
- "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
2899
+ "description": "Customer-owned domain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
2900
+ },
2901
+ "datacenter_code": {
2902
+ "type": "string",
2903
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. List available datacenters to find valid codes."
2900
2904
  },
2901
2905
  "wordpress": {
2902
2906
  "type": "object",
@@ -3592,7 +3596,7 @@ export default [
3592
3596
  "readOnlyHint": false,
3593
3597
  "destructiveHint": false
3594
3598
  },
3595
- "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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\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.",
3599
+ "description": "Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)\ninstead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and\nreturns the created setup.\n\nCreate 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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\n\nWhen the order has no hosting account yet, a new hosting account is set up first, in the\ndatacenter given by `datacenter_code` or the order's default datacenter when it is omitted.\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.",
3596
3600
  "method": "POST",
3597
3601
  "path": "/api/hosting/v1/websites",
3598
3602
  "inputSchema": {
@@ -3600,7 +3604,7 @@ export default [
3600
3604
  "properties": {
3601
3605
  "domain": {
3602
3606
  "type": "string",
3603
- "description": "Domain name for the website. Cannot start with \"www.\""
3607
+ "description": "Domain name for the website. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`."
3604
3608
  },
3605
3609
  "order_id": {
3606
3610
  "type": "integer",
@@ -3608,7 +3612,7 @@ export default [
3608
3612
  },
3609
3613
  "datacenter_code": {
3610
3614
  "type": "string",
3611
- "description": "Datacenter code. This parameter is required when creating the first website on a new hosting plan."
3615
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. Must be an available datacenter; list available datacenters to find valid codes."
3612
3616
  }
3613
3617
  },
3614
3618
  "required": [
@@ -2888,7 +2888,7 @@ const tools: OpenApiTool[] = [
2888
2888
  "readOnlyHint": false,
2889
2889
  "destructiveHint": false
2890
2890
  },
2891
- "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.",
2891
+ "description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint with the `domain` filter every 10 to 15 seconds and wait for\n`status: completed` before uploading files, deploying or creating databases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless\nwebsite; `headless_wordpress` additionally installs WordPress into the `cms` directory\nof the website root with generated credentials.\n\nOmit `domain` to set the website up on a generated temporary free subdomain.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
2892
2892
  "method": "POST",
2893
2893
  "path": "/api/hosting/v1/orders/{order_id}/onboardings",
2894
2894
  "inputSchema": {
@@ -2910,7 +2910,11 @@ const tools: OpenApiTool[] = [
2910
2910
  },
2911
2911
  "domain": {
2912
2912
  "type": "string",
2913
- "description": "Customer-owned domain. Cannot start with \"www.\". Omit or `null` to set the website up on a generated temporary free subdomain."
2913
+ "description": "Customer-owned domain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain."
2914
+ },
2915
+ "datacenter_code": {
2916
+ "type": "string",
2917
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. List available datacenters to find valid codes."
2914
2918
  },
2915
2919
  "wordpress": {
2916
2920
  "type": "object",
@@ -3606,7 +3610,7 @@ const tools: OpenApiTool[] = [
3606
3610
  "readOnlyHint": false,
3607
3611
  "destructiveHint": false
3608
3612
  },
3609
- "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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\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.",
3613
+ "description": "Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)\ninstead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and\nreturns the created setup.\n\nCreate 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\nOnly Web and Cloud hosting orders are accepted. To create a website on an Agency\nPlan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.\n\nWhen the order has no hosting account yet, a new hosting account is set up first, in the\ndatacenter given by `datacenter_code` or the order's default datacenter when it is omitted.\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.",
3610
3614
  "method": "POST",
3611
3615
  "path": "/api/hosting/v1/websites",
3612
3616
  "inputSchema": {
@@ -3614,7 +3618,7 @@ const tools: OpenApiTool[] = [
3614
3618
  "properties": {
3615
3619
  "domain": {
3616
3620
  "type": "string",
3617
- "description": "Domain name for the website. Cannot start with \"www.\""
3621
+ "description": "Domain name for the website. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`."
3618
3622
  },
3619
3623
  "order_id": {
3620
3624
  "type": "integer",
@@ -3622,7 +3626,7 @@ const tools: OpenApiTool[] = [
3622
3626
  },
3623
3627
  "datacenter_code": {
3624
3628
  "type": "string",
3625
- "description": "Datacenter code. This parameter is required when creating the first website on a new hosting plan."
3629
+ "description": "Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. Must be an available datacenter; list available datacenters to find valid codes."
3626
3630
  }
3627
3631
  },
3628
3632
  "required": [
@@ -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.17.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.18.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.17.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.18.0', tools, instructions });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agent-readiness.js';
5
5
 
6
- startServer({ name: 'hostinger-agent-readiness-mcp', version: '2.17.0', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '2.18.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agent-readiness.js';
5
5
 
6
- startServer({ name: 'hostinger-agent-readiness-mcp', version: '2.17.0', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '2.18.0', tools });
@@ -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.17.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.18.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.17.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.18.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.17.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.18.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.17.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.18.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.17.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.18.0', tools });
package/types.d.ts CHANGED
@@ -1081,13 +1081,13 @@ Use it to show the human-readable name of each `check_id` in a scan's results.
1081
1081
  /**
1082
1082
  * Start a scan of how ready a public website is for AI agents to discover, read and act on.\n
1083
1083
  Scanning is asynchronous: this operation only starts the scan, and the returned scan is usually `pending`
1084
- with no results yet. To get the results, poll the `Get website scan` operation with the same domain every
1085
- few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,
1084
+ with no results yet. To get the results, poll the `Get agent readiness scan` operation with the same
1085
+ domain every few seconds until its status is `completed` or `failed`. The scan itself is limited to 60 seconds,
1086
1086
  plus any time it waits in the queue. A `failed` scan is not retried; run this operation again.\n
1087
1087
  Starting a scan for a domain that already has a pending scan from the last 5 minutes
1088
1088
  returns that scan instead of starting a new one.
1089
1089
  */
1090
- "agent-readiness_scans_run-website": {
1090
+ "agent-readiness_scans_run": {
1091
1091
  params: {
1092
1092
  /**
1093
1093
  * Domain name or full URL of the website to scan. Only the host is used.
@@ -1099,14 +1099,14 @@ returns that scan instead of starting a new one.
1099
1099
 
1100
1100
  /**
1101
1101
  * Get the latest agent readiness scan of a website.\n
1102
- Scans started with the `Run website scan` operation are asynchronous. While the status is `pending`,
1103
- the result fields are null; wait a few seconds and call this operation again until the status is
1102
+ Scans started with the `Run agent readiness scan` operation are asynchronous. While the status is
1103
+ `pending`, the result fields are null; wait a few seconds and call this operation again until the status is
1104
1104
  `completed` or `failed`. A `failed` scan is not retried; run the scan again.\n
1105
1105
  A completed scan has a 0-100 score, a letter grade, a score per category, and the result of every
1106
1106
  check with the evidence found and how to fix it. Check names are listed by the `List checks` operation.\n
1107
- Returns 404 when the domain has never been scanned; use the `Run website scan` operation first.
1107
+ Returns 404 when the domain has never been scanned; use the `Run agent readiness scan` operation first.
1108
1108
  */
1109
- "agent-readiness_scans_website": {
1109
+ "agent-readiness_scans_get": {
1110
1110
  params: {
1111
1111
  /**
1112
1112
  * Domain name the scan was run for
@@ -4893,8 +4893,8 @@ of the website root with generated credentials.
4893
4893
 
4894
4894
  Omit `domain` to set the website up on a generated temporary free subdomain.
4895
4895
 
4896
- The order must already have a hosting account: to create the first website on a new
4897
- hosting plan use the create website endpoint, which takes the `datacenter_code`.
4896
+ When the order has no hosting account yet, the setup creates one first, in the datacenter
4897
+ given by `datacenter_code` or the order's default datacenter when it is omitted.
4898
4898
  Returns 404 when the order does not exist or is not accessible to the authenticated
4899
4899
  client, and 409 with a `Retry-After` header while a setup for the same domain is still
4900
4900
  running.
@@ -4910,9 +4910,13 @@ running.
4910
4910
  */
4911
4911
  type?: string;
4912
4912
  /**
4913
- * Customer-owned domain. Cannot start with "www.". Omit or `null` to set the website up on a generated temporary free subdomain.
4913
+ * Customer-owned domain. Cannot start with "www." and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain.
4914
4914
  */
4915
4915
  domain?: string;
4916
+ /**
4917
+ * Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. List available datacenters to find valid codes.
4918
+ */
4919
+ datacenter_code?: string;
4916
4920
  /**
4917
4921
  * WordPress install settings. Required when `type` is `wordpress`, not allowed otherwise. The site title is the domain.
4918
4922
  */
@@ -5320,7 +5324,11 @@ endpoint instead.
5320
5324
  };
5321
5325
 
5322
5326
  /**
5323
- * Create a new website for the authenticated client.
5327
+ * Deprecated: use `POST /api/hosting/v1/orders/{order_id}/onboardings` (start website setup)
5328
+ instead. It takes the same `domain` and `datacenter_code`, can also install WordPress, and
5329
+ returns the created setup.
5330
+
5331
+ Create a new website for the authenticated client.
5324
5332
 
5325
5333
  You must choose which hosting order to create this website on. Pass that
5326
5334
  order as `order_id` together with the domain name. List orders to see
@@ -5329,10 +5337,8 @@ available IDs; the website is provisioned on that order's hosting plan.
5329
5337
  Only Web and Cloud hosting orders are accepted. To create a website on an Agency
5330
5338
  Plan order, use `POST /api/agency-hosting/v1/orders/{order_id}/websites/setups`.
5331
5339
 
5332
- The datacenter_code parameter is required when creating the first website
5333
- on a new hosting plan - this will set up and configure new hosting account
5334
- in the selected datacenter.
5335
-
5340
+ When the order has no hosting account yet, a new hosting account is set up first, in the
5341
+ datacenter given by `datacenter_code` or the order's default datacenter when it is omitted.
5336
5342
  Subsequent websites will be hosted on the same datacenter automatically.
5337
5343
 
5338
5344
  Website creation is asynchronous and takes up to a few minutes. Poll the list website
@@ -5344,7 +5350,7 @@ completed` before uploading files, deploying or creating databases. While the se
5344
5350
  "hosting_websites_create": {
5345
5351
  params: {
5346
5352
  /**
5347
- * Domain name for the website. Cannot start with "www."
5353
+ * Domain name for the website. Cannot start with "www." and can have at most one subdomain level, e.g. `blog.example.com`.
5348
5354
  */
5349
5355
  domain: string;
5350
5356
  /**
@@ -5352,7 +5358,7 @@ completed` before uploading files, deploying or creating databases. While the se
5352
5358
  */
5353
5359
  order_id: number;
5354
5360
  /**
5355
- * Datacenter code. This parameter is required when creating the first website on a new hosting plan.
5361
+ * Datacenter for the hosting account when the order does not have one yet. Omit to use the order's default datacenter. Ignored when the order already has a hosting account. Must be an available datacenter; list available datacenters to find valid codes.
5356
5362
  */
5357
5363
  datacenter_code?: string;
5358
5364
  };