@hostinger/mcp 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ Generated at release time from the diff between the previous and current
4
4
  build. Tool changes are listed individually; everything else is summarised
5
5
  by area.
6
6
 
7
+ ## v3.1.0 — 2026-10-16
8
+
9
+ ### Operations
10
+
11
+ - Changed the description and input schema of `ecommerce_products_update`
12
+ - Changed the input schema of `ecommerce_products_create-physical`
13
+ - Changed the description and input schema of `ecommerce_product-variants_update-in-batch`
14
+
15
+ ### Also in this release
16
+
17
+ - Documentation: `README.md`
18
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
19
+ - Build and packaging: `types.d.ts`
20
+
7
21
  ## v3.0.0 — 2026-10-15
8
22
 
9
23
  ### Operations
package/README.md CHANGED
@@ -1554,9 +1554,11 @@ subscribers is archived instead of deleted so its data stays available.
1554
1554
 
1555
1555
  #### ecommerce_products_update
1556
1556
 
1557
- Update a product's name, description or status. Set status to published to make it buyable,
1558
- draft to hide it, or archived to retire it. Variants, prices and inventory are managed
1559
- through the variant endpoints, not here. Returns the updated product summary.
1557
+ Update a product's name, description, status, SEO settings or collections. Set status to
1558
+ published to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,
1559
+ description, slug) left out keep their values. collection_changes adds or removes collections
1560
+ without touching the others. Variants, prices and inventory are managed through the variant
1561
+ endpoints, not here. Returns the updated product summary.
1560
1562
 
1561
1563
  - **Method**: `PATCH`
1562
1564
  - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}`
@@ -1662,8 +1664,8 @@ plus its default currency. Useful to verify prerequisites before building a stor
1662
1664
 
1663
1665
  #### ecommerce_product-variants_update-in-batch
1664
1666
 
1665
- Update up to 100 existing variants in place by id — title, inventory, stock tracking and
1666
- prices. Variants omitted from the request are left untouched. Prices replace the variant's
1667
+ Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking
1668
+ and prices. Variants omitted from the request are left untouched. Prices replace the variant's
1667
1669
  existing prices in full. Returns the updated variants.
1668
1670
 
1669
1671
  - **Method**: `PATCH`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.0.0",
3
+ "version": "3.1.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": "3.0.0",
3
+ "version": "3.1.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": "3.0.0",
9
+ "version": "3.1.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.0.0",
14
+ "version": "3.1.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 2.0.0
67
+ * Generated from OpenAPI spec version 2.1.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 2.0.0
97
+ * Generated from OpenAPI spec version 2.1.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -4845,7 +4845,7 @@ export default [
4845
4845
  "destructiveHint": true,
4846
4846
  "idempotentHint": true
4847
4847
  },
4848
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
4848
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
4849
4849
  "method": "PATCH",
4850
4850
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
4851
4851
  "inputSchema": {
@@ -4875,6 +4875,64 @@ export default [
4875
4875
  "published",
4876
4876
  "archived"
4877
4877
  ]
4878
+ },
4879
+ "seo_settings": {
4880
+ "type": "object",
4881
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
4882
+ "properties": {
4883
+ "title": {
4884
+ "type": "string",
4885
+ "description": "Search-engine title for the product page."
4886
+ },
4887
+ "description": {
4888
+ "type": "string",
4889
+ "description": "Search-engine description for the product page."
4890
+ },
4891
+ "slug": {
4892
+ "type": "string",
4893
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
4894
+ }
4895
+ }
4896
+ },
4897
+ "collection_changes": {
4898
+ "type": "object",
4899
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
4900
+ "properties": {
4901
+ "add": {
4902
+ "type": "array",
4903
+ "description": "Collections to add the product to. Every id must exist in the store.",
4904
+ "items": {
4905
+ "type": "object",
4906
+ "description": "add parameter",
4907
+ "properties": {
4908
+ "id": {
4909
+ "type": "string",
4910
+ "description": "The collection id."
4911
+ }
4912
+ },
4913
+ "required": [
4914
+ "id"
4915
+ ]
4916
+ }
4917
+ },
4918
+ "remove": {
4919
+ "type": "array",
4920
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
4921
+ "items": {
4922
+ "type": "object",
4923
+ "description": "remove parameter",
4924
+ "properties": {
4925
+ "id": {
4926
+ "type": "string",
4927
+ "description": "The collection id."
4928
+ }
4929
+ },
4930
+ "required": [
4931
+ "id"
4932
+ ]
4933
+ }
4934
+ }
4935
+ }
4878
4936
  }
4879
4937
  },
4880
4938
  "required": [
@@ -5047,6 +5105,24 @@ export default [
5047
5105
  "currency": {
5048
5106
  "type": "string",
5049
5107
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
5108
+ },
5109
+ "seo_settings": {
5110
+ "type": "object",
5111
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
5112
+ "properties": {
5113
+ "title": {
5114
+ "type": "string",
5115
+ "description": "Search-engine title for the product page."
5116
+ },
5117
+ "description": {
5118
+ "type": "string",
5119
+ "description": "Search-engine description for the product page."
5120
+ },
5121
+ "slug": {
5122
+ "type": "string",
5123
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
5124
+ }
5125
+ }
5050
5126
  }
5051
5127
  },
5052
5128
  "required": [
@@ -5424,7 +5500,7 @@ export default [
5424
5500
  "destructiveHint": true,
5425
5501
  "idempotentHint": true
5426
5502
  },
5427
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5503
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5428
5504
  "method": "PATCH",
5429
5505
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
5430
5506
  "inputSchema": {
@@ -5453,6 +5529,10 @@ export default [
5453
5529
  "type": "string",
5454
5530
  "description": "The variant title."
5455
5531
  },
5532
+ "sku": {
5533
+ "type": "string",
5534
+ "description": "The variant SKU."
5535
+ },
5456
5536
  "inventory_quantity": {
5457
5537
  "type": "integer",
5458
5538
  "description": "Units in stock."
@@ -4859,7 +4859,7 @@ const tools: OpenApiTool[] = [
4859
4859
  "destructiveHint": true,
4860
4860
  "idempotentHint": true
4861
4861
  },
4862
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
4862
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
4863
4863
  "method": "PATCH",
4864
4864
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
4865
4865
  "inputSchema": {
@@ -4889,6 +4889,64 @@ const tools: OpenApiTool[] = [
4889
4889
  "published",
4890
4890
  "archived"
4891
4891
  ]
4892
+ },
4893
+ "seo_settings": {
4894
+ "type": "object",
4895
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
4896
+ "properties": {
4897
+ "title": {
4898
+ "type": "string",
4899
+ "description": "Search-engine title for the product page."
4900
+ },
4901
+ "description": {
4902
+ "type": "string",
4903
+ "description": "Search-engine description for the product page."
4904
+ },
4905
+ "slug": {
4906
+ "type": "string",
4907
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
4908
+ }
4909
+ }
4910
+ },
4911
+ "collection_changes": {
4912
+ "type": "object",
4913
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
4914
+ "properties": {
4915
+ "add": {
4916
+ "type": "array",
4917
+ "description": "Collections to add the product to. Every id must exist in the store.",
4918
+ "items": {
4919
+ "type": "object",
4920
+ "description": "add parameter",
4921
+ "properties": {
4922
+ "id": {
4923
+ "type": "string",
4924
+ "description": "The collection id."
4925
+ }
4926
+ },
4927
+ "required": [
4928
+ "id"
4929
+ ]
4930
+ }
4931
+ },
4932
+ "remove": {
4933
+ "type": "array",
4934
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
4935
+ "items": {
4936
+ "type": "object",
4937
+ "description": "remove parameter",
4938
+ "properties": {
4939
+ "id": {
4940
+ "type": "string",
4941
+ "description": "The collection id."
4942
+ }
4943
+ },
4944
+ "required": [
4945
+ "id"
4946
+ ]
4947
+ }
4948
+ }
4949
+ }
4892
4950
  }
4893
4951
  },
4894
4952
  "required": [
@@ -5061,6 +5119,24 @@ const tools: OpenApiTool[] = [
5061
5119
  "currency": {
5062
5120
  "type": "string",
5063
5121
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
5122
+ },
5123
+ "seo_settings": {
5124
+ "type": "object",
5125
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
5126
+ "properties": {
5127
+ "title": {
5128
+ "type": "string",
5129
+ "description": "Search-engine title for the product page."
5130
+ },
5131
+ "description": {
5132
+ "type": "string",
5133
+ "description": "Search-engine description for the product page."
5134
+ },
5135
+ "slug": {
5136
+ "type": "string",
5137
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
5138
+ }
5139
+ }
5064
5140
  }
5065
5141
  },
5066
5142
  "required": [
@@ -5438,7 +5514,7 @@ const tools: OpenApiTool[] = [
5438
5514
  "destructiveHint": true,
5439
5515
  "idempotentHint": true
5440
5516
  },
5441
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5517
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
5442
5518
  "method": "PATCH",
5443
5519
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
5444
5520
  "inputSchema": {
@@ -5467,6 +5543,10 @@ const tools: OpenApiTool[] = [
5467
5543
  "type": "string",
5468
5544
  "description": "The variant title."
5469
5545
  },
5546
+ "sku": {
5547
+ "type": "string",
5548
+ "description": "The variant SKU."
5549
+ },
5470
5550
  "inventory_quantity": {
5471
5551
  "type": "integer",
5472
5552
  "description": "Units in stock."
@@ -583,7 +583,7 @@ export default [
583
583
  "destructiveHint": true,
584
584
  "idempotentHint": true
585
585
  },
586
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
586
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
587
587
  "method": "PATCH",
588
588
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
589
589
  "inputSchema": {
@@ -613,6 +613,64 @@ export default [
613
613
  "published",
614
614
  "archived"
615
615
  ]
616
+ },
617
+ "seo_settings": {
618
+ "type": "object",
619
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
620
+ "properties": {
621
+ "title": {
622
+ "type": "string",
623
+ "description": "Search-engine title for the product page."
624
+ },
625
+ "description": {
626
+ "type": "string",
627
+ "description": "Search-engine description for the product page."
628
+ },
629
+ "slug": {
630
+ "type": "string",
631
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
632
+ }
633
+ }
634
+ },
635
+ "collection_changes": {
636
+ "type": "object",
637
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
638
+ "properties": {
639
+ "add": {
640
+ "type": "array",
641
+ "description": "Collections to add the product to. Every id must exist in the store.",
642
+ "items": {
643
+ "type": "object",
644
+ "description": "add parameter",
645
+ "properties": {
646
+ "id": {
647
+ "type": "string",
648
+ "description": "The collection id."
649
+ }
650
+ },
651
+ "required": [
652
+ "id"
653
+ ]
654
+ }
655
+ },
656
+ "remove": {
657
+ "type": "array",
658
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
659
+ "items": {
660
+ "type": "object",
661
+ "description": "remove parameter",
662
+ "properties": {
663
+ "id": {
664
+ "type": "string",
665
+ "description": "The collection id."
666
+ }
667
+ },
668
+ "required": [
669
+ "id"
670
+ ]
671
+ }
672
+ }
673
+ }
616
674
  }
617
675
  },
618
676
  "required": [
@@ -785,6 +843,24 @@ export default [
785
843
  "currency": {
786
844
  "type": "string",
787
845
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
846
+ },
847
+ "seo_settings": {
848
+ "type": "object",
849
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
850
+ "properties": {
851
+ "title": {
852
+ "type": "string",
853
+ "description": "Search-engine title for the product page."
854
+ },
855
+ "description": {
856
+ "type": "string",
857
+ "description": "Search-engine description for the product page."
858
+ },
859
+ "slug": {
860
+ "type": "string",
861
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
862
+ }
863
+ }
788
864
  }
789
865
  },
790
866
  "required": [
@@ -1162,7 +1238,7 @@ export default [
1162
1238
  "destructiveHint": true,
1163
1239
  "idempotentHint": true
1164
1240
  },
1165
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1241
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1166
1242
  "method": "PATCH",
1167
1243
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
1168
1244
  "inputSchema": {
@@ -1191,6 +1267,10 @@ export default [
1191
1267
  "type": "string",
1192
1268
  "description": "The variant title."
1193
1269
  },
1270
+ "sku": {
1271
+ "type": "string",
1272
+ "description": "The variant SKU."
1273
+ },
1194
1274
  "inventory_quantity": {
1195
1275
  "type": "integer",
1196
1276
  "description": "Units in stock."
@@ -597,7 +597,7 @@ const tools: OpenApiTool[] = [
597
597
  "destructiveHint": true,
598
598
  "idempotentHint": true
599
599
  },
600
- "description": "Update a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.",
600
+ "description": "Update a product's name, description, status, SEO settings or collections. Set status to\npublished to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,\ndescription, slug) left out keep their values. collection_changes adds or removes collections\nwithout touching the others. Variants, prices and inventory are managed through the variant\nendpoints, not here. Returns the updated product summary.",
601
601
  "method": "PATCH",
602
602
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}",
603
603
  "inputSchema": {
@@ -627,6 +627,64 @@ const tools: OpenApiTool[] = [
627
627
  "published",
628
628
  "archived"
629
629
  ]
630
+ },
631
+ "seo_settings": {
632
+ "type": "object",
633
+ "description": "Search-engine settings to change. Send at least one field; omitted fields keep their current values.",
634
+ "properties": {
635
+ "title": {
636
+ "type": "string",
637
+ "description": "Search-engine title for the product page."
638
+ },
639
+ "description": {
640
+ "type": "string",
641
+ "description": "Search-engine description for the product page."
642
+ },
643
+ "slug": {
644
+ "type": "string",
645
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
646
+ }
647
+ }
648
+ },
649
+ "collection_changes": {
650
+ "type": "object",
651
+ "description": "Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.",
652
+ "properties": {
653
+ "add": {
654
+ "type": "array",
655
+ "description": "Collections to add the product to. Every id must exist in the store.",
656
+ "items": {
657
+ "type": "object",
658
+ "description": "add parameter",
659
+ "properties": {
660
+ "id": {
661
+ "type": "string",
662
+ "description": "The collection id."
663
+ }
664
+ },
665
+ "required": [
666
+ "id"
667
+ ]
668
+ }
669
+ },
670
+ "remove": {
671
+ "type": "array",
672
+ "description": "Collections to take the product out of. Ids the product is not in are ignored.",
673
+ "items": {
674
+ "type": "object",
675
+ "description": "remove parameter",
676
+ "properties": {
677
+ "id": {
678
+ "type": "string",
679
+ "description": "The collection id."
680
+ }
681
+ },
682
+ "required": [
683
+ "id"
684
+ ]
685
+ }
686
+ }
687
+ }
630
688
  }
631
689
  },
632
690
  "required": [
@@ -799,6 +857,24 @@ const tools: OpenApiTool[] = [
799
857
  "currency": {
800
858
  "type": "string",
801
859
  "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
860
+ },
861
+ "seo_settings": {
862
+ "type": "object",
863
+ "description": "Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.",
864
+ "properties": {
865
+ "title": {
866
+ "type": "string",
867
+ "description": "Search-engine title for the product page."
868
+ },
869
+ "description": {
870
+ "type": "string",
871
+ "description": "Search-engine description for the product page."
872
+ },
873
+ "slug": {
874
+ "type": "string",
875
+ "description": "URL slug of the product page. Lowercase letters, digits and dashes."
876
+ }
877
+ }
802
878
  }
803
879
  },
804
880
  "required": [
@@ -1176,7 +1252,7 @@ const tools: OpenApiTool[] = [
1176
1252
  "destructiveHint": true,
1177
1253
  "idempotentHint": true
1178
1254
  },
1179
- "description": "Update up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1255
+ "description": "Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking\nand prices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.",
1180
1256
  "method": "PATCH",
1181
1257
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch",
1182
1258
  "inputSchema": {
@@ -1205,6 +1281,10 @@ const tools: OpenApiTool[] = [
1205
1281
  "type": "string",
1206
1282
  "description": "The variant title."
1207
1283
  },
1284
+ "sku": {
1285
+ "type": "string",
1286
+ "description": "The variant SKU."
1287
+ },
1208
1288
  "inventory_quantity": {
1209
1289
  "type": "integer",
1210
1290
  "description": "Units in stock."
@@ -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: '3.0.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.1.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: '3.0.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.1.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: '3.0.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '3.1.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: '3.0.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '3.1.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: '3.0.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '3.1.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: '3.0.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '3.1.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: '3.0.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '3.1.0', tools });
package/types.d.ts CHANGED
@@ -2690,9 +2690,11 @@ subscribers is archived instead of deleted so its data stays available.
2690
2690
  };
2691
2691
 
2692
2692
  /**
2693
- * Update a product's name, description or status. Set status to published to make it buyable,
2694
- draft to hide it, or archived to retire it. Variants, prices and inventory are managed
2695
- through the variant endpoints, not here. Returns the updated product summary.
2693
+ * Update a product's name, description, status, SEO settings or collections. Set status to
2694
+ published to make it buyable, draft to hide it, or archived to retire it. SEO settings (title,
2695
+ description, slug) left out keep their values. collection_changes adds or removes collections
2696
+ without touching the others. Variants, prices and inventory are managed through the variant
2697
+ endpoints, not here. Returns the updated product summary.
2696
2698
  */
2697
2699
  "ecommerce_products_update": {
2698
2700
  params: {
@@ -2716,6 +2718,14 @@ through the variant endpoints, not here. Returns the updated product summary.
2716
2718
  * Set "published" to make the product buyable, "draft" to hide it, or "archived" to retire it.
2717
2719
  */
2718
2720
  status?: string;
2721
+ /**
2722
+ * Search-engine settings to change. Send at least one field; omitted fields keep their current values.
2723
+ */
2724
+ seo_settings?: object;
2725
+ /**
2726
+ * Adds the product to or removes it from collections without touching its other collections. Send at least one collection in add or remove.
2727
+ */
2728
+ collection_changes?: object;
2719
2729
  };
2720
2730
  response: any; // Response structure will depend on the API
2721
2731
  };
@@ -2814,6 +2824,10 @@ embed each product's variants with prices and inventory, and include=media to em
2814
2824
  * ISO 4217 currency code. Defaults to the store's default currency when omitted.
2815
2825
  */
2816
2826
  currency?: string;
2827
+ /**
2828
+ * Search-engine settings. Omitted fields are generated from the name and description; a slug already in use gets a numeric suffix. Send at least one field.
2829
+ */
2830
+ seo_settings?: object;
2817
2831
  };
2818
2832
  response: any; // Response structure will depend on the API
2819
2833
  };
@@ -3019,8 +3033,8 @@ plus its default currency. Useful to verify prerequisites before building a stor
3019
3033
  };
3020
3034
 
3021
3035
  /**
3022
- * Update up to 100 existing variants in place by id — title, inventory, stock tracking and
3023
- prices. Variants omitted from the request are left untouched. Prices replace the variant's
3036
+ * Update up to 100 existing variants in place by id — title, SKU, inventory, stock tracking
3037
+ and prices. Variants omitted from the request are left untouched. Prices replace the variant's
3024
3038
  existing prices in full. Returns the updated variants.
3025
3039
  */
3026
3040
  "ecommerce_product-variants_update-in-batch": {