hostinger-api-mcp 1.57.3 → 1.57.4

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,18 @@ 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.57.4 — 2026-09-09
8
+
9
+ ### Tools
10
+
11
+ - Changed the description and input schema of `ecommerce_uploadAndAttachAProductImageV1`
12
+
13
+ ### Also in this release
14
+
15
+ - Documentation: `README.md`
16
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
17
+ - Build and packaging: `types.d.ts`
18
+
7
19
  ## v1.57.3 — 2026-09-09
8
20
 
9
21
  ### Tools
package/README.md CHANGED
@@ -1422,8 +1422,10 @@ Create a published physical product with a single variant priced in the store cu
1422
1422
  #### ecommerce_uploadAndAttachAProductImageV1
1423
1423
 
1424
1424
  Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a
1425
- single call. The image is virus-scanned and validated by content, then stored on the CDN. Set
1426
- is_thumbnail to make it the product's primary image.
1425
+ single call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect
1426
+ is allowed, and its destination must meet the same requirements. Private or reserved network
1427
+ destinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned
1428
+ and validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.
1427
1429
 
1428
1430
  - **Method**: `POST`
1429
1431
  - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.57.3",
3
+ "version": "1.57.4",
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.57.3",
3
+ "version": "1.57.4",
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.57.3",
9
+ "version": "1.57.4",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "1.57.3",
14
+ "version": "1.57.4",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -29,7 +29,7 @@ const SECURITY_SCHEMES = {
29
29
 
30
30
  /**
31
31
  * MCP Server for Hostinger API
32
- * Generated from OpenAPI spec version 1.49.3
32
+ * Generated from OpenAPI spec version 1.49.4
33
33
  */
34
34
  class MCPServer {
35
35
  constructor({ name, version, tools }) {
@@ -52,7 +52,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
52
52
 
53
53
  /**
54
54
  * MCP Server for Hostinger API
55
- * Generated from OpenAPI spec version 1.49.3
55
+ * Generated from OpenAPI spec version 1.49.4
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -4727,7 +4727,7 @@ export default [
4727
4727
  "readOnlyHint": false,
4728
4728
  "destructiveHint": false
4729
4729
  },
4730
- "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
4730
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed, and its destination must meet the same requirements. Private or reserved network\ndestinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned\nand validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.",
4731
4731
  "method": "POST",
4732
4732
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
4733
4733
  "inputSchema": {
@@ -4743,7 +4743,7 @@ export default [
4743
4743
  },
4744
4744
  "image_url": {
4745
4745
  "type": "string",
4746
- "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
4746
+ "description": "Publicly reachable URL of a raster image (JPEG, PNG, GIF or WebP), maximum 15MB. Fetching\nthe image requires HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed; its destination must meet the same URL requirements. Private or reserved\nnetwork destinations, unsupported URLs and longer redirect chains are rejected. The image\nis fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not\naccepted. Provide either this or object_name."
4747
4747
  },
4748
4748
  "object_name": {
4749
4749
  "type": "string",
@@ -4741,7 +4741,7 @@ const tools: OpenApiTool[] = [
4741
4741
  "readOnlyHint": false,
4742
4742
  "destructiveHint": false
4743
4743
  },
4744
- "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
4744
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed, and its destination must meet the same requirements. Private or reserved network\ndestinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned\nand validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.",
4745
4745
  "method": "POST",
4746
4746
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
4747
4747
  "inputSchema": {
@@ -4757,7 +4757,7 @@ const tools: OpenApiTool[] = [
4757
4757
  },
4758
4758
  "image_url": {
4759
4759
  "type": "string",
4760
- "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
4760
+ "description": "Publicly reachable URL of a raster image (JPEG, PNG, GIF or WebP), maximum 15MB. Fetching\nthe image requires HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed; its destination must meet the same URL requirements. Private or reserved\nnetwork destinations, unsupported URLs and longer redirect chains are rejected. The image\nis fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not\naccepted. Provide either this or object_name."
4761
4761
  },
4762
4762
  "object_name": {
4763
4763
  "type": "string",
@@ -808,7 +808,7 @@ export default [
808
808
  "readOnlyHint": false,
809
809
  "destructiveHint": false
810
810
  },
811
- "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
811
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed, and its destination must meet the same requirements. Private or reserved network\ndestinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned\nand validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.",
812
812
  "method": "POST",
813
813
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
814
814
  "inputSchema": {
@@ -824,7 +824,7 @@ export default [
824
824
  },
825
825
  "image_url": {
826
826
  "type": "string",
827
- "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
827
+ "description": "Publicly reachable URL of a raster image (JPEG, PNG, GIF or WebP), maximum 15MB. Fetching\nthe image requires HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed; its destination must meet the same URL requirements. Private or reserved\nnetwork destinations, unsupported URLs and longer redirect chains are rejected. The image\nis fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not\naccepted. Provide either this or object_name."
828
828
  },
829
829
  "object_name": {
830
830
  "type": "string",
@@ -822,7 +822,7 @@ const tools: OpenApiTool[] = [
822
822
  "readOnlyHint": false,
823
823
  "destructiveHint": false
824
824
  },
825
- "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
825
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed, and its destination must meet the same requirements. Private or reserved network\ndestinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned\nand validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.",
826
826
  "method": "POST",
827
827
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
828
828
  "inputSchema": {
@@ -838,7 +838,7 @@ const tools: OpenApiTool[] = [
838
838
  },
839
839
  "image_url": {
840
840
  "type": "string",
841
- "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
841
+ "description": "Publicly reachable URL of a raster image (JPEG, PNG, GIF or WebP), maximum 15MB. Fetching\nthe image requires HTTPS on port 443 without embedded credentials. At most one redirect\nis allowed; its destination must meet the same URL requirements. Private or reserved\nnetwork destinations, unsupported URLs and longer redirect chains are rejected. The image\nis fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not\naccepted. Provide either this or object_name."
842
842
  },
843
843
  "object_name": {
844
844
  "type": "string",
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.57.4', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.57.4', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.57.4', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.57.4', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.57.4', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.57.3', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.57.4', 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.57.3', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.57.4', tools });
package/types.d.ts CHANGED
@@ -2578,8 +2578,10 @@ embed each product's variants with prices and inventory, and include=media to em
2578
2578
 
2579
2579
  /**
2580
2580
  * Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a
2581
- single call. The image is virus-scanned and validated by content, then stored on the CDN. Set
2582
- is_thumbnail to make it the product's primary image.
2581
+ single call. Image downloads require HTTPS on port 443 without embedded credentials. At most one redirect
2582
+ is allowed, and its destination must meet the same requirements. Private or reserved network
2583
+ destinations, unsupported URLs and longer redirect chains are rejected. The image is virus-scanned
2584
+ and validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.
2583
2585
  */
2584
2586
  "ecommerce_uploadAndAttachAProductImageV1": {
2585
2587
  params: {
@@ -2592,9 +2594,12 @@ is_thumbnail to make it the product's primary image.
2592
2594
  */
2593
2595
  product_id: string;
2594
2596
  /**
2595
- * Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is
2596
- fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.
2597
- Provide either this or object_name.
2597
+ * Publicly reachable URL of a raster image (JPEG, PNG, GIF or WebP), maximum 15MB. Fetching
2598
+ the image requires HTTPS on port 443 without embedded credentials. At most one redirect
2599
+ is allowed; its destination must meet the same URL requirements. Private or reserved
2600
+ network destinations, unsupported URLs and longer redirect chains are rejected. The image
2601
+ is fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not
2602
+ accepted. Provide either this or object_name.
2598
2603
  */
2599
2604
  image_url?: string;
2600
2605
  /**