hostinger-api-mcp 1.62.0 → 1.63.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -153,8 +153,28 @@ jobs:
153
153
  - name: Login to MCP Registry using GitHub OIDC
154
154
  run: ./mcp-publisher login github-oidc
155
155
 
156
+ # The registry validates that the npm version in server.json actually
157
+ # exists, and npm says a fresh publish "may take a few minutes to become
158
+ # available" — so this job reliably loses the race with the publish-npmjs
159
+ # job it depends on and 400s with "version was not found (status: 404)".
160
+ # Retry until npm catches up. The backoff totals ~7.5 minutes, well past
161
+ # the propagation delays seen in practice (~3 minutes); if it is still
162
+ # failing by then it is not a propagation problem and notify-failure
163
+ # should page.
156
164
  - name: Publish to MCP Registry
157
- run: ./mcp-publisher publish
165
+ run: |
166
+ for delay in 30 60 120 240 0; do
167
+ if ./mcp-publisher publish; then
168
+ exit 0
169
+ fi
170
+ if [ "$delay" -eq 0 ]; then
171
+ break
172
+ fi
173
+ echo "Publish failed — npm may not have propagated yet. Retrying in ${delay}s."
174
+ sleep "$delay"
175
+ done
176
+ echo "MCP registry publish still failing after all retries."
177
+ exit 1
158
178
 
159
179
  notify-failure:
160
180
  needs: [release, publish-npmjs, release-github, publish-mcp]
package/CHANGELOG.md CHANGED
@@ -4,6 +4,27 @@ 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
+ ## v1.63.1 — 2026-09-21
8
+
9
+ ### Also in this release
10
+
11
+ - Release automation: `.github/workflows/build-release.yaml`
12
+
13
+ ## v1.63.0 — 2026-09-21
14
+
15
+ ### Tools
16
+
17
+ - Added `agency-hosting_reinstallWebsiteSSLV1` — Reinstall website SSL
18
+ - Added `agency-hosting_installWebsiteSSLV1` — Install website SSL
19
+ - Added `agency-hosting_getWebsiteSSLStatusV1` — Get website SSL status
20
+ - Added `agency-hosting_uninstallWebsiteSSLV1` — Uninstall website SSL
21
+
22
+ ### Also in this release
23
+
24
+ - Documentation: `README.md`
25
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
26
+ - Build and packaging: `types.d.ts`
27
+
7
28
  ## v1.62.0 — 2026-09-21
8
29
 
9
30
  ### Also in this release
package/README.md CHANGED
@@ -69,8 +69,8 @@ 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 with every tool (396 total)
73
- - `hostinger-agency-hosting-mcp` — 38 tools for agency-hosting
72
+ - `hostinger-api-mcp` — unified server with every tool (400 total)
73
+ - `hostinger-agency-hosting-mcp` — 42 tools for agency-hosting
74
74
  - `hostinger-billing-mcp` — 9 tools for billing
75
75
  - `hostinger-dns-mcp` — 8 tools for dns
76
76
  - `hostinger-domains-mcp` — 41 tools for domains
@@ -455,6 +455,64 @@ Poll this endpoint using the `setup_uuid` returned from the provisioning request
455
455
  - **Method**: `GET`
456
456
  - **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/setups/{setup_uuid}`
457
457
 
458
+ #### agency-hosting_reinstallWebsiteSSLV1
459
+
460
+ Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when
461
+ one is recorded, is revoked and removed, then a new setup starts in the background. Returns at
462
+ once; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.
463
+
464
+ Returns 422 for free subdomains, when a certificate process is recorded for the domain (a
465
+ failed setup counts until it is cleaned up), or when the domain hit its limit of three setups
466
+ per seven days. Returns 429 when the same domain was requested less than a minute ago, and 403
467
+ when the website is suspended or locked, and 404 when the website or the domain does not exist.
468
+
469
+ - **Method**: `POST`
470
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall`
471
+
472
+ #### agency-hosting_installWebsiteSSLV1
473
+
474
+ Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in
475
+ the background. `Get website SSL status` reports `installing` while it runs, then `active` or
476
+ `failed`; the `ssl_setup` entry of `List website processes` shows the same progress.
477
+
478
+ Returns 422 when the domain already has a platform certificate that is not expired, when a
479
+ certificate process is recorded for the domain (a failed setup counts until it is cleaned up),
480
+ or when the domain hit its limit of three setups per seven days. Returns 429 when the same
481
+ domain was requested less than a minute ago, 403 when the website is suspended or locked, and
482
+ 404 when the website or the domain does not exist.
483
+
484
+ - **Method**: `POST`
485
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup`
486
+
487
+ #### agency-hosting_getWebsiteSSLStatusV1
488
+
489
+ Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,
490
+ whether the certificate was uploaded by the customer, and when it stops being valid.
491
+
492
+ `installing` means a certificate setup is running or retrying; the `ssl_setup` entry of
493
+ `List website processes` shows the same progress. `active` means a valid certificate is in
494
+ place: uploaded by the customer, issued by the platform, or a lifetime certificate bought for
495
+ the domain. `failed` means the last setup gave up and no valid certificate is in place.
496
+ `expired` means the certificate has run out. `not_installed` means the domain has no
497
+ certificate and no setup process. Returns 404 when the website or the domain does not exist.
498
+
499
+ - **Method**: `GET`
500
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status`
501
+
502
+ #### agency-hosting_uninstallWebsiteSSLV1
503
+
504
+ Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked
505
+ and deleted before the response, so the domain is no longer served with a platform certificate
506
+ until a new setup completes. Also succeeds when the domain has no platform certificate to
507
+ remove. Uploaded (custom) certificates are not affected.
508
+
509
+ Returns 422 when a certificate process is recorded for the domain (a failed setup counts until
510
+ it is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when
511
+ the website is suspended or locked, and 404 when the website or the domain does not exist.
512
+
513
+ - **Method**: `DELETE`
514
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl`
515
+
458
516
  #### agency-hosting_buildWebsiteNodeJSAssetsV1
459
517
 
460
518
  Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.62.0",
3
+ "version": "1.63.1",
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": "1.62.0",
3
+ "version": "1.63.1",
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": "1.62.0",
9
+ "version": "1.63.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "1.62.0",
14
+ "version": "1.63.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -44,7 +44,7 @@ const SECURITY_SCHEMES = {
44
44
 
45
45
  /**
46
46
  * MCP Server for Hostinger API
47
- * Generated from OpenAPI spec version 1.53.1
47
+ * Generated from OpenAPI spec version 1.54.0
48
48
  */
49
49
  class MCPServer {
50
50
  constructor({ name, version, tools, instructions }) {
@@ -70,7 +70,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
70
70
 
71
71
  /**
72
72
  * MCP Server for Hostinger API
73
- * Generated from OpenAPI spec version 1.53.1
73
+ * Generated from OpenAPI spec version 1.54.0
74
74
  */
75
75
  class MCPServer {
76
76
  private readonly name: string;
@@ -841,6 +841,147 @@ export default [
841
841
  ],
842
842
  "group": "agency-hosting"
843
843
  },
844
+ {
845
+ "name": "agency-hosting_reinstallWebsiteSSLV1",
846
+ "title": "Reinstall website SSL",
847
+ "annotations": {
848
+ "title": "Reinstall website SSL",
849
+ "readOnlyHint": false,
850
+ "destructiveHint": false
851
+ },
852
+ "description": "Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when\none is recorded, is revoked and removed, then a new setup starts in the background. Returns at\nonce; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.\n\nReturns 422 for free subdomains, when a certificate process is recorded for the domain (a\nfailed setup counts until it is cleaned up), or when the domain hit its limit of three setups\nper seven days. Returns 429 when the same domain was requested less than a minute ago, and 403\nwhen the website is suspended or locked, and 404 when the website or the domain does not exist.",
853
+ "method": "POST",
854
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall",
855
+ "inputSchema": {
856
+ "type": "object",
857
+ "properties": {
858
+ "website_uid": {
859
+ "type": "string",
860
+ "description": "Agency Plan website UID"
861
+ },
862
+ "domain": {
863
+ "type": "string",
864
+ "description": "Domain name"
865
+ }
866
+ },
867
+ "required": [
868
+ "website_uid",
869
+ "domain"
870
+ ]
871
+ },
872
+ "security": [
873
+ {
874
+ "apiToken": []
875
+ }
876
+ ],
877
+ "group": "agency-hosting"
878
+ },
879
+ {
880
+ "name": "agency-hosting_installWebsiteSSLV1",
881
+ "title": "Install website SSL",
882
+ "annotations": {
883
+ "title": "Install website SSL",
884
+ "readOnlyHint": false,
885
+ "destructiveHint": false
886
+ },
887
+ "description": "Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in\nthe background. `Get website SSL status` reports `installing` while it runs, then `active` or\n`failed`; the `ssl_setup` entry of `List website processes` shows the same progress.\n\nReturns 422 when the domain already has a platform certificate that is not expired, when a\ncertificate process is recorded for the domain (a failed setup counts until it is cleaned up),\nor when the domain hit its limit of three setups per seven days. Returns 429 when the same\ndomain was requested less than a minute ago, 403 when the website is suspended or locked, and\n404 when the website or the domain does not exist.",
888
+ "method": "POST",
889
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup",
890
+ "inputSchema": {
891
+ "type": "object",
892
+ "properties": {
893
+ "website_uid": {
894
+ "type": "string",
895
+ "description": "Agency Plan website UID"
896
+ },
897
+ "domain": {
898
+ "type": "string",
899
+ "description": "Domain name"
900
+ }
901
+ },
902
+ "required": [
903
+ "website_uid",
904
+ "domain"
905
+ ]
906
+ },
907
+ "security": [
908
+ {
909
+ "apiToken": []
910
+ }
911
+ ],
912
+ "group": "agency-hosting"
913
+ },
914
+ {
915
+ "name": "agency-hosting_getWebsiteSSLStatusV1",
916
+ "title": "Get website SSL status",
917
+ "annotations": {
918
+ "title": "Get website SSL status",
919
+ "readOnlyHint": true,
920
+ "destructiveHint": false
921
+ },
922
+ "description": "Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,\nwhether the certificate was uploaded by the customer, and when it stops being valid.\n\n`installing` means a certificate setup is running or retrying; the `ssl_setup` entry of\n`List website processes` shows the same progress. `active` means a valid certificate is in\nplace: uploaded by the customer, issued by the platform, or a lifetime certificate bought for\nthe domain. `failed` means the last setup gave up and no valid certificate is in place.\n`expired` means the certificate has run out. `not_installed` means the domain has no\ncertificate and no setup process. Returns 404 when the website or the domain does not exist.",
923
+ "method": "GET",
924
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status",
925
+ "inputSchema": {
926
+ "type": "object",
927
+ "properties": {
928
+ "website_uid": {
929
+ "type": "string",
930
+ "description": "Agency Plan website UID"
931
+ },
932
+ "domain": {
933
+ "type": "string",
934
+ "description": "Domain name"
935
+ }
936
+ },
937
+ "required": [
938
+ "website_uid",
939
+ "domain"
940
+ ]
941
+ },
942
+ "security": [
943
+ {
944
+ "apiToken": []
945
+ }
946
+ ],
947
+ "group": "agency-hosting"
948
+ },
949
+ {
950
+ "name": "agency-hosting_uninstallWebsiteSSLV1",
951
+ "title": "Uninstall website SSL",
952
+ "annotations": {
953
+ "title": "Uninstall website SSL",
954
+ "readOnlyHint": false,
955
+ "destructiveHint": true,
956
+ "idempotentHint": true
957
+ },
958
+ "description": "Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked\nand deleted before the response, so the domain is no longer served with a platform certificate\nuntil a new setup completes. Also succeeds when the domain has no platform certificate to\nremove. Uploaded (custom) certificates are not affected.\n\nReturns 422 when a certificate process is recorded for the domain (a failed setup counts until\nit is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when\nthe website is suspended or locked, and 404 when the website or the domain does not exist.",
959
+ "method": "DELETE",
960
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl",
961
+ "inputSchema": {
962
+ "type": "object",
963
+ "properties": {
964
+ "website_uid": {
965
+ "type": "string",
966
+ "description": "Agency Plan website UID"
967
+ },
968
+ "domain": {
969
+ "type": "string",
970
+ "description": "Domain name"
971
+ }
972
+ },
973
+ "required": [
974
+ "website_uid",
975
+ "domain"
976
+ ]
977
+ },
978
+ "security": [
979
+ {
980
+ "apiToken": []
981
+ }
982
+ ],
983
+ "group": "agency-hosting"
984
+ },
844
985
  {
845
986
  "name": "agency-hosting_buildWebsiteNodeJSAssetsV1",
846
987
  "title": "Build website NodeJS assets",
@@ -855,6 +855,147 @@ const tools: OpenApiTool[] = [
855
855
  ],
856
856
  "group": "agency-hosting"
857
857
  },
858
+ {
859
+ "name": "agency-hosting_reinstallWebsiteSSLV1",
860
+ "title": "Reinstall website SSL",
861
+ "annotations": {
862
+ "title": "Reinstall website SSL",
863
+ "readOnlyHint": false,
864
+ "destructiveHint": false
865
+ },
866
+ "description": "Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when\none is recorded, is revoked and removed, then a new setup starts in the background. Returns at\nonce; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.\n\nReturns 422 for free subdomains, when a certificate process is recorded for the domain (a\nfailed setup counts until it is cleaned up), or when the domain hit its limit of three setups\nper seven days. Returns 429 when the same domain was requested less than a minute ago, and 403\nwhen the website is suspended or locked, and 404 when the website or the domain does not exist.",
867
+ "method": "POST",
868
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall",
869
+ "inputSchema": {
870
+ "type": "object",
871
+ "properties": {
872
+ "website_uid": {
873
+ "type": "string",
874
+ "description": "Agency Plan website UID"
875
+ },
876
+ "domain": {
877
+ "type": "string",
878
+ "description": "Domain name"
879
+ }
880
+ },
881
+ "required": [
882
+ "website_uid",
883
+ "domain"
884
+ ]
885
+ },
886
+ "security": [
887
+ {
888
+ "apiToken": []
889
+ }
890
+ ],
891
+ "group": "agency-hosting"
892
+ },
893
+ {
894
+ "name": "agency-hosting_installWebsiteSSLV1",
895
+ "title": "Install website SSL",
896
+ "annotations": {
897
+ "title": "Install website SSL",
898
+ "readOnlyHint": false,
899
+ "destructiveHint": false
900
+ },
901
+ "description": "Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in\nthe background. `Get website SSL status` reports `installing` while it runs, then `active` or\n`failed`; the `ssl_setup` entry of `List website processes` shows the same progress.\n\nReturns 422 when the domain already has a platform certificate that is not expired, when a\ncertificate process is recorded for the domain (a failed setup counts until it is cleaned up),\nor when the domain hit its limit of three setups per seven days. Returns 429 when the same\ndomain was requested less than a minute ago, 403 when the website is suspended or locked, and\n404 when the website or the domain does not exist.",
902
+ "method": "POST",
903
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup",
904
+ "inputSchema": {
905
+ "type": "object",
906
+ "properties": {
907
+ "website_uid": {
908
+ "type": "string",
909
+ "description": "Agency Plan website UID"
910
+ },
911
+ "domain": {
912
+ "type": "string",
913
+ "description": "Domain name"
914
+ }
915
+ },
916
+ "required": [
917
+ "website_uid",
918
+ "domain"
919
+ ]
920
+ },
921
+ "security": [
922
+ {
923
+ "apiToken": []
924
+ }
925
+ ],
926
+ "group": "agency-hosting"
927
+ },
928
+ {
929
+ "name": "agency-hosting_getWebsiteSSLStatusV1",
930
+ "title": "Get website SSL status",
931
+ "annotations": {
932
+ "title": "Get website SSL status",
933
+ "readOnlyHint": true,
934
+ "destructiveHint": false
935
+ },
936
+ "description": "Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,\nwhether the certificate was uploaded by the customer, and when it stops being valid.\n\n`installing` means a certificate setup is running or retrying; the `ssl_setup` entry of\n`List website processes` shows the same progress. `active` means a valid certificate is in\nplace: uploaded by the customer, issued by the platform, or a lifetime certificate bought for\nthe domain. `failed` means the last setup gave up and no valid certificate is in place.\n`expired` means the certificate has run out. `not_installed` means the domain has no\ncertificate and no setup process. Returns 404 when the website or the domain does not exist.",
937
+ "method": "GET",
938
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status",
939
+ "inputSchema": {
940
+ "type": "object",
941
+ "properties": {
942
+ "website_uid": {
943
+ "type": "string",
944
+ "description": "Agency Plan website UID"
945
+ },
946
+ "domain": {
947
+ "type": "string",
948
+ "description": "Domain name"
949
+ }
950
+ },
951
+ "required": [
952
+ "website_uid",
953
+ "domain"
954
+ ]
955
+ },
956
+ "security": [
957
+ {
958
+ "apiToken": []
959
+ }
960
+ ],
961
+ "group": "agency-hosting"
962
+ },
963
+ {
964
+ "name": "agency-hosting_uninstallWebsiteSSLV1",
965
+ "title": "Uninstall website SSL",
966
+ "annotations": {
967
+ "title": "Uninstall website SSL",
968
+ "readOnlyHint": false,
969
+ "destructiveHint": true,
970
+ "idempotentHint": true
971
+ },
972
+ "description": "Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked\nand deleted before the response, so the domain is no longer served with a platform certificate\nuntil a new setup completes. Also succeeds when the domain has no platform certificate to\nremove. Uploaded (custom) certificates are not affected.\n\nReturns 422 when a certificate process is recorded for the domain (a failed setup counts until\nit is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when\nthe website is suspended or locked, and 404 when the website or the domain does not exist.",
973
+ "method": "DELETE",
974
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl",
975
+ "inputSchema": {
976
+ "type": "object",
977
+ "properties": {
978
+ "website_uid": {
979
+ "type": "string",
980
+ "description": "Agency Plan website UID"
981
+ },
982
+ "domain": {
983
+ "type": "string",
984
+ "description": "Domain name"
985
+ }
986
+ },
987
+ "required": [
988
+ "website_uid",
989
+ "domain"
990
+ ]
991
+ },
992
+ "security": [
993
+ {
994
+ "apiToken": []
995
+ }
996
+ ],
997
+ "group": "agency-hosting"
998
+ },
858
999
  {
859
1000
  "name": "agency-hosting_buildWebsiteNodeJSAssetsV1",
860
1001
  "title": "Build website NodeJS assets",
@@ -1140,6 +1140,147 @@ export default [
1140
1140
  ],
1141
1141
  "group": "agency-hosting"
1142
1142
  },
1143
+ {
1144
+ "name": "agency-hosting_reinstallWebsiteSSLV1",
1145
+ "title": "Reinstall website SSL",
1146
+ "annotations": {
1147
+ "title": "Reinstall website SSL",
1148
+ "readOnlyHint": false,
1149
+ "destructiveHint": false
1150
+ },
1151
+ "description": "Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when\none is recorded, is revoked and removed, then a new setup starts in the background. Returns at\nonce; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.\n\nReturns 422 for free subdomains, when a certificate process is recorded for the domain (a\nfailed setup counts until it is cleaned up), or when the domain hit its limit of three setups\nper seven days. Returns 429 when the same domain was requested less than a minute ago, and 403\nwhen the website is suspended or locked, and 404 when the website or the domain does not exist.",
1152
+ "method": "POST",
1153
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall",
1154
+ "inputSchema": {
1155
+ "type": "object",
1156
+ "properties": {
1157
+ "website_uid": {
1158
+ "type": "string",
1159
+ "description": "Agency Plan website UID"
1160
+ },
1161
+ "domain": {
1162
+ "type": "string",
1163
+ "description": "Domain name"
1164
+ }
1165
+ },
1166
+ "required": [
1167
+ "website_uid",
1168
+ "domain"
1169
+ ]
1170
+ },
1171
+ "security": [
1172
+ {
1173
+ "apiToken": []
1174
+ }
1175
+ ],
1176
+ "group": "agency-hosting"
1177
+ },
1178
+ {
1179
+ "name": "agency-hosting_installWebsiteSSLV1",
1180
+ "title": "Install website SSL",
1181
+ "annotations": {
1182
+ "title": "Install website SSL",
1183
+ "readOnlyHint": false,
1184
+ "destructiveHint": false
1185
+ },
1186
+ "description": "Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in\nthe background. `Get website SSL status` reports `installing` while it runs, then `active` or\n`failed`; the `ssl_setup` entry of `List website processes` shows the same progress.\n\nReturns 422 when the domain already has a platform certificate that is not expired, when a\ncertificate process is recorded for the domain (a failed setup counts until it is cleaned up),\nor when the domain hit its limit of three setups per seven days. Returns 429 when the same\ndomain was requested less than a minute ago, 403 when the website is suspended or locked, and\n404 when the website or the domain does not exist.",
1187
+ "method": "POST",
1188
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup",
1189
+ "inputSchema": {
1190
+ "type": "object",
1191
+ "properties": {
1192
+ "website_uid": {
1193
+ "type": "string",
1194
+ "description": "Agency Plan website UID"
1195
+ },
1196
+ "domain": {
1197
+ "type": "string",
1198
+ "description": "Domain name"
1199
+ }
1200
+ },
1201
+ "required": [
1202
+ "website_uid",
1203
+ "domain"
1204
+ ]
1205
+ },
1206
+ "security": [
1207
+ {
1208
+ "apiToken": []
1209
+ }
1210
+ ],
1211
+ "group": "agency-hosting"
1212
+ },
1213
+ {
1214
+ "name": "agency-hosting_getWebsiteSSLStatusV1",
1215
+ "title": "Get website SSL status",
1216
+ "annotations": {
1217
+ "title": "Get website SSL status",
1218
+ "readOnlyHint": true,
1219
+ "destructiveHint": false
1220
+ },
1221
+ "description": "Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,\nwhether the certificate was uploaded by the customer, and when it stops being valid.\n\n`installing` means a certificate setup is running or retrying; the `ssl_setup` entry of\n`List website processes` shows the same progress. `active` means a valid certificate is in\nplace: uploaded by the customer, issued by the platform, or a lifetime certificate bought for\nthe domain. `failed` means the last setup gave up and no valid certificate is in place.\n`expired` means the certificate has run out. `not_installed` means the domain has no\ncertificate and no setup process. Returns 404 when the website or the domain does not exist.",
1222
+ "method": "GET",
1223
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status",
1224
+ "inputSchema": {
1225
+ "type": "object",
1226
+ "properties": {
1227
+ "website_uid": {
1228
+ "type": "string",
1229
+ "description": "Agency Plan website UID"
1230
+ },
1231
+ "domain": {
1232
+ "type": "string",
1233
+ "description": "Domain name"
1234
+ }
1235
+ },
1236
+ "required": [
1237
+ "website_uid",
1238
+ "domain"
1239
+ ]
1240
+ },
1241
+ "security": [
1242
+ {
1243
+ "apiToken": []
1244
+ }
1245
+ ],
1246
+ "group": "agency-hosting"
1247
+ },
1248
+ {
1249
+ "name": "agency-hosting_uninstallWebsiteSSLV1",
1250
+ "title": "Uninstall website SSL",
1251
+ "annotations": {
1252
+ "title": "Uninstall website SSL",
1253
+ "readOnlyHint": false,
1254
+ "destructiveHint": true,
1255
+ "idempotentHint": true
1256
+ },
1257
+ "description": "Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked\nand deleted before the response, so the domain is no longer served with a platform certificate\nuntil a new setup completes. Also succeeds when the domain has no platform certificate to\nremove. Uploaded (custom) certificates are not affected.\n\nReturns 422 when a certificate process is recorded for the domain (a failed setup counts until\nit is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when\nthe website is suspended or locked, and 404 when the website or the domain does not exist.",
1258
+ "method": "DELETE",
1259
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl",
1260
+ "inputSchema": {
1261
+ "type": "object",
1262
+ "properties": {
1263
+ "website_uid": {
1264
+ "type": "string",
1265
+ "description": "Agency Plan website UID"
1266
+ },
1267
+ "domain": {
1268
+ "type": "string",
1269
+ "description": "Domain name"
1270
+ }
1271
+ },
1272
+ "required": [
1273
+ "website_uid",
1274
+ "domain"
1275
+ ]
1276
+ },
1277
+ "security": [
1278
+ {
1279
+ "apiToken": []
1280
+ }
1281
+ ],
1282
+ "group": "agency-hosting"
1283
+ },
1143
1284
  {
1144
1285
  "name": "agency-hosting_buildWebsiteNodeJSAssetsV1",
1145
1286
  "title": "Build website NodeJS assets",
@@ -1154,6 +1154,147 @@ const tools: OpenApiTool[] = [
1154
1154
  ],
1155
1155
  "group": "agency-hosting"
1156
1156
  },
1157
+ {
1158
+ "name": "agency-hosting_reinstallWebsiteSSLV1",
1159
+ "title": "Reinstall website SSL",
1160
+ "annotations": {
1161
+ "title": "Reinstall website SSL",
1162
+ "readOnlyHint": false,
1163
+ "destructiveHint": false
1164
+ },
1165
+ "description": "Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when\none is recorded, is revoked and removed, then a new setup starts in the background. Returns at\nonce; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.\n\nReturns 422 for free subdomains, when a certificate process is recorded for the domain (a\nfailed setup counts until it is cleaned up), or when the domain hit its limit of three setups\nper seven days. Returns 429 when the same domain was requested less than a minute ago, and 403\nwhen the website is suspended or locked, and 404 when the website or the domain does not exist.",
1166
+ "method": "POST",
1167
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall",
1168
+ "inputSchema": {
1169
+ "type": "object",
1170
+ "properties": {
1171
+ "website_uid": {
1172
+ "type": "string",
1173
+ "description": "Agency Plan website UID"
1174
+ },
1175
+ "domain": {
1176
+ "type": "string",
1177
+ "description": "Domain name"
1178
+ }
1179
+ },
1180
+ "required": [
1181
+ "website_uid",
1182
+ "domain"
1183
+ ]
1184
+ },
1185
+ "security": [
1186
+ {
1187
+ "apiToken": []
1188
+ }
1189
+ ],
1190
+ "group": "agency-hosting"
1191
+ },
1192
+ {
1193
+ "name": "agency-hosting_installWebsiteSSLV1",
1194
+ "title": "Install website SSL",
1195
+ "annotations": {
1196
+ "title": "Install website SSL",
1197
+ "readOnlyHint": false,
1198
+ "destructiveHint": false
1199
+ },
1200
+ "description": "Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in\nthe background. `Get website SSL status` reports `installing` while it runs, then `active` or\n`failed`; the `ssl_setup` entry of `List website processes` shows the same progress.\n\nReturns 422 when the domain already has a platform certificate that is not expired, when a\ncertificate process is recorded for the domain (a failed setup counts until it is cleaned up),\nor when the domain hit its limit of three setups per seven days. Returns 429 when the same\ndomain was requested less than a minute ago, 403 when the website is suspended or locked, and\n404 when the website or the domain does not exist.",
1201
+ "method": "POST",
1202
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup",
1203
+ "inputSchema": {
1204
+ "type": "object",
1205
+ "properties": {
1206
+ "website_uid": {
1207
+ "type": "string",
1208
+ "description": "Agency Plan website UID"
1209
+ },
1210
+ "domain": {
1211
+ "type": "string",
1212
+ "description": "Domain name"
1213
+ }
1214
+ },
1215
+ "required": [
1216
+ "website_uid",
1217
+ "domain"
1218
+ ]
1219
+ },
1220
+ "security": [
1221
+ {
1222
+ "apiToken": []
1223
+ }
1224
+ ],
1225
+ "group": "agency-hosting"
1226
+ },
1227
+ {
1228
+ "name": "agency-hosting_getWebsiteSSLStatusV1",
1229
+ "title": "Get website SSL status",
1230
+ "annotations": {
1231
+ "title": "Get website SSL status",
1232
+ "readOnlyHint": true,
1233
+ "destructiveHint": false
1234
+ },
1235
+ "description": "Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,\nwhether the certificate was uploaded by the customer, and when it stops being valid.\n\n`installing` means a certificate setup is running or retrying; the `ssl_setup` entry of\n`List website processes` shows the same progress. `active` means a valid certificate is in\nplace: uploaded by the customer, issued by the platform, or a lifetime certificate bought for\nthe domain. `failed` means the last setup gave up and no valid certificate is in place.\n`expired` means the certificate has run out. `not_installed` means the domain has no\ncertificate and no setup process. Returns 404 when the website or the domain does not exist.",
1236
+ "method": "GET",
1237
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status",
1238
+ "inputSchema": {
1239
+ "type": "object",
1240
+ "properties": {
1241
+ "website_uid": {
1242
+ "type": "string",
1243
+ "description": "Agency Plan website UID"
1244
+ },
1245
+ "domain": {
1246
+ "type": "string",
1247
+ "description": "Domain name"
1248
+ }
1249
+ },
1250
+ "required": [
1251
+ "website_uid",
1252
+ "domain"
1253
+ ]
1254
+ },
1255
+ "security": [
1256
+ {
1257
+ "apiToken": []
1258
+ }
1259
+ ],
1260
+ "group": "agency-hosting"
1261
+ },
1262
+ {
1263
+ "name": "agency-hosting_uninstallWebsiteSSLV1",
1264
+ "title": "Uninstall website SSL",
1265
+ "annotations": {
1266
+ "title": "Uninstall website SSL",
1267
+ "readOnlyHint": false,
1268
+ "destructiveHint": true,
1269
+ "idempotentHint": true
1270
+ },
1271
+ "description": "Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked\nand deleted before the response, so the domain is no longer served with a platform certificate\nuntil a new setup completes. Also succeeds when the domain has no platform certificate to\nremove. Uploaded (custom) certificates are not affected.\n\nReturns 422 when a certificate process is recorded for the domain (a failed setup counts until\nit is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when\nthe website is suspended or locked, and 404 when the website or the domain does not exist.",
1272
+ "method": "DELETE",
1273
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl",
1274
+ "inputSchema": {
1275
+ "type": "object",
1276
+ "properties": {
1277
+ "website_uid": {
1278
+ "type": "string",
1279
+ "description": "Agency Plan website UID"
1280
+ },
1281
+ "domain": {
1282
+ "type": "string",
1283
+ "description": "Domain name"
1284
+ }
1285
+ },
1286
+ "required": [
1287
+ "website_uid",
1288
+ "domain"
1289
+ ]
1290
+ },
1291
+ "security": [
1292
+ {
1293
+ "apiToken": []
1294
+ }
1295
+ ],
1296
+ "group": "agency-hosting"
1297
+ },
1157
1298
  {
1158
1299
  "name": "agency-hosting_buildWebsiteNodeJSAssetsV1",
1159
1300
  "title": "Build website NodeJS assets",
@@ -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: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.63.1', 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: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.63.1', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-api-mcp', version: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-api-mcp', version: '1.63.1', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-api-mcp', version: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-api-mcp', version: '1.63.1', tools, instructions });
@@ -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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.63.1', 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: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.63.1', 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: '1.62.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.63.1', 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: '1.62.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.63.1', tools });
package/types.d.ts CHANGED
@@ -612,6 +612,104 @@ Poll this endpoint using the `setup_uuid` returned from the provisioning request
612
612
  response: any; // Response structure will depend on the API
613
613
  };
614
614
 
615
+ /**
616
+ * Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when
617
+ one is recorded, is revoked and removed, then a new setup starts in the background. Returns at
618
+ once; `Get website SSL status` reports `installing` while it runs, then `active` or `failed`.
619
+
620
+ Returns 422 for free subdomains, when a certificate process is recorded for the domain (a
621
+ failed setup counts until it is cleaned up), or when the domain hit its limit of three setups
622
+ per seven days. Returns 429 when the same domain was requested less than a minute ago, and 403
623
+ when the website is suspended or locked, and 404 when the website or the domain does not exist.
624
+ */
625
+ "agency-hosting_reinstallWebsiteSSLV1": {
626
+ params: {
627
+ /**
628
+ * Agency Plan website UID
629
+ */
630
+ website_uid: string;
631
+ /**
632
+ * Domain name
633
+ */
634
+ domain: string;
635
+ };
636
+ response: any; // Response structure will depend on the API
637
+ };
638
+
639
+ /**
640
+ * Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in
641
+ the background. `Get website SSL status` reports `installing` while it runs, then `active` or
642
+ `failed`; the `ssl_setup` entry of `List website processes` shows the same progress.
643
+
644
+ Returns 422 when the domain already has a platform certificate that is not expired, when a
645
+ certificate process is recorded for the domain (a failed setup counts until it is cleaned up),
646
+ or when the domain hit its limit of three setups per seven days. Returns 429 when the same
647
+ domain was requested less than a minute ago, 403 when the website is suspended or locked, and
648
+ 404 when the website or the domain does not exist.
649
+ */
650
+ "agency-hosting_installWebsiteSSLV1": {
651
+ params: {
652
+ /**
653
+ * Agency Plan website UID
654
+ */
655
+ website_uid: string;
656
+ /**
657
+ * Domain name
658
+ */
659
+ domain: string;
660
+ };
661
+ response: any; // Response structure will depend on the API
662
+ };
663
+
664
+ /**
665
+ * Returns the SSL state of one domain of an Agency Plan website: the certificate `status`,
666
+ whether the certificate was uploaded by the customer, and when it stops being valid.
667
+
668
+ `installing` means a certificate setup is running or retrying; the `ssl_setup` entry of
669
+ `List website processes` shows the same progress. `active` means a valid certificate is in
670
+ place: uploaded by the customer, issued by the platform, or a lifetime certificate bought for
671
+ the domain. `failed` means the last setup gave up and no valid certificate is in place.
672
+ `expired` means the certificate has run out. `not_installed` means the domain has no
673
+ certificate and no setup process. Returns 404 when the website or the domain does not exist.
674
+ */
675
+ "agency-hosting_getWebsiteSSLStatusV1": {
676
+ params: {
677
+ /**
678
+ * Agency Plan website UID
679
+ */
680
+ website_uid: string;
681
+ /**
682
+ * Domain name
683
+ */
684
+ domain: string;
685
+ };
686
+ response: any; // Response structure will depend on the API
687
+ };
688
+
689
+ /**
690
+ * Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked
691
+ and deleted before the response, so the domain is no longer served with a platform certificate
692
+ until a new setup completes. Also succeeds when the domain has no platform certificate to
693
+ remove. Uploaded (custom) certificates are not affected.
694
+
695
+ Returns 422 when a certificate process is recorded for the domain (a failed setup counts until
696
+ it is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when
697
+ the website is suspended or locked, and 404 when the website or the domain does not exist.
698
+ */
699
+ "agency-hosting_uninstallWebsiteSSLV1": {
700
+ params: {
701
+ /**
702
+ * Agency Plan website UID
703
+ */
704
+ website_uid: string;
705
+ /**
706
+ * Domain name
707
+ */
708
+ domain: string;
709
+ };
710
+ response: any; // Response structure will depend on the API
711
+ };
712
+
615
713
  /**
616
714
  * Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.
617
715