hostinger-api-mcp 2.7.2 → 2.7.3

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
+ ## v2.7.3 — 2026-10-05
8
+
9
+ ### Operations
10
+
11
+ - Changed the description and input schema of `wordpress_installations_install`
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
  ## v2.7.2 — 2026-10-05
8
20
 
9
21
  ### Operations
package/README.md CHANGED
@@ -4534,6 +4534,9 @@ takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered
4534
4534
  by username and domain to track progress. When the installation appears in
4535
4535
  that list, WordPress is ready.
4536
4536
 
4537
+ Returns 422 when the account already uses all the databases its plan allows,
4538
+ unless `database.name` is an existing database on the account.
4539
+
4537
4540
  - **Method**: `POST`
4538
4541
  - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/installations`
4539
4542
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "2.7.2",
9
+ "version": "2.7.3",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "2.7.2",
14
+ "version": "2.7.3",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -64,7 +64,7 @@ const GetSkillRequestSchema = z.object({
64
64
 
65
65
  /**
66
66
  * MCP Server for Hostinger API
67
- * Generated from OpenAPI spec version 1.58.2
67
+ * Generated from OpenAPI spec version 1.58.3
68
68
  */
69
69
  class MCPServer {
70
70
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -94,7 +94,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
94
94
 
95
95
  /**
96
96
  * MCP Server for Hostinger API
97
- * Generated from OpenAPI spec version 1.58.2
97
+ * Generated from OpenAPI spec version 1.58.3
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -15472,7 +15472,7 @@ export default [
15472
15472
  "readOnlyHint": false,
15473
15473
  "destructiveHint": false
15474
15474
  },
15475
- "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
15475
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
15476
15476
  "method": "POST",
15477
15477
  "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
15478
15478
  "inputSchema": {
@@ -15540,7 +15540,7 @@ export default [
15540
15540
  },
15541
15541
  "database": {
15542
15542
  "type": "object",
15543
- "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
15543
+ "description": "Optional. If the named database already exists on the account, it is used for this WordPress install. Otherwise a new database is created with this name, or with a generated name when database is omitted or null. A new database gets a random database user and counts toward the plan's database limit.",
15544
15544
  "properties": {
15545
15545
  "name": {
15546
15546
  "type": "string",
@@ -15548,7 +15548,7 @@ export default [
15548
15548
  },
15549
15549
  "password": {
15550
15550
  "type": "string",
15551
- "description": "password parameter"
15551
+ "description": "Password for a new database. Random when omitted or null. Ignored when the named database already exists."
15552
15552
  }
15553
15553
  }
15554
15554
  }
@@ -15486,7 +15486,7 @@ const tools: OpenApiTool[] = [
15486
15486
  "readOnlyHint": false,
15487
15487
  "destructiveHint": false
15488
15488
  },
15489
- "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
15489
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
15490
15490
  "method": "POST",
15491
15491
  "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
15492
15492
  "inputSchema": {
@@ -15554,7 +15554,7 @@ const tools: OpenApiTool[] = [
15554
15554
  },
15555
15555
  "database": {
15556
15556
  "type": "object",
15557
- "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
15557
+ "description": "Optional. If the named database already exists on the account, it is used for this WordPress install. Otherwise a new database is created with this name, or with a generated name when database is omitted or null. A new database gets a random database user and counts toward the plan's database limit.",
15558
15558
  "properties": {
15559
15559
  "name": {
15560
15560
  "type": "string",
@@ -15562,7 +15562,7 @@ const tools: OpenApiTool[] = [
15562
15562
  },
15563
15563
  "password": {
15564
15564
  "type": "string",
15565
- "description": "password parameter"
15565
+ "description": "Password for a new database. Random when omitted or null. Ignored when the named database already exists."
15566
15566
  }
15567
15567
  }
15568
15568
  }
@@ -255,7 +255,7 @@ export default [
255
255
  "readOnlyHint": false,
256
256
  "destructiveHint": false
257
257
  },
258
- "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
258
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
259
259
  "method": "POST",
260
260
  "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
261
261
  "inputSchema": {
@@ -323,7 +323,7 @@ export default [
323
323
  },
324
324
  "database": {
325
325
  "type": "object",
326
- "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
326
+ "description": "Optional. If the named database already exists on the account, it is used for this WordPress install. Otherwise a new database is created with this name, or with a generated name when database is omitted or null. A new database gets a random database user and counts toward the plan's database limit.",
327
327
  "properties": {
328
328
  "name": {
329
329
  "type": "string",
@@ -331,7 +331,7 @@ export default [
331
331
  },
332
332
  "password": {
333
333
  "type": "string",
334
- "description": "password parameter"
334
+ "description": "Password for a new database. Random when omitted or null. Ignored when the named database already exists."
335
335
  }
336
336
  }
337
337
  }
@@ -269,7 +269,7 @@ const tools: OpenApiTool[] = [
269
269
  "readOnlyHint": false,
270
270
  "destructiveHint": false
271
271
  },
272
- "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
272
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
273
273
  "method": "POST",
274
274
  "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
275
275
  "inputSchema": {
@@ -337,7 +337,7 @@ const tools: OpenApiTool[] = [
337
337
  },
338
338
  "database": {
339
339
  "type": "object",
340
- "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
340
+ "description": "Optional. If the named database already exists on the account, it is used for this WordPress install. Otherwise a new database is created with this name, or with a generated name when database is omitted or null. A new database gets a random database user and counts toward the plan's database limit.",
341
341
  "properties": {
342
342
  "name": {
343
343
  "type": "string",
@@ -345,7 +345,7 @@ const tools: OpenApiTool[] = [
345
345
  },
346
346
  "password": {
347
347
  "type": "string",
348
- "description": "password parameter"
348
+ "description": "Password for a new database. Random when omitted or null. Ignored when the named database already exists."
349
349
  }
350
350
  }
351
351
  }
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.2', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.3', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.2', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.7.3', tools, instructions });
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
  import skills from '../core/skills.js';
7
7
 
8
- startServer({ name: 'hostinger-api-mcp', version: '2.7.2', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.7.3', tools, instructions, skills });
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
5
5
  import instructions from '../core/instructions.js';
6
6
  import skills from '../core/skills.js';
7
7
 
8
- startServer({ name: 'hostinger-api-mcp', version: '2.7.2', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.7.3', tools, instructions, skills });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.7.3', tools });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-hosting-mcp', version: '2.7.2', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.7.3', tools, instructions });
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
  import instructions from '../core/instructions.js';
6
6
 
7
- startServer({ name: 'hostinger-hosting-mcp', version: '2.7.2', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.7.3', tools, instructions });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.3', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.2', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.7.3', tools });
package/types.d.ts CHANGED
@@ -9045,6 +9045,9 @@ job has been queued, not that WordPress is ready. Installation typically
9045
9045
  takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered
9046
9046
  by username and domain to track progress. When the installation appears in
9047
9047
  that list, WordPress is ready.
9048
+
9049
+ Returns 422 when the account already uses all the databases its plan allows,
9050
+ unless `database.name` is an existing database on the account.
9048
9051
  */
9049
9052
  "wordpress_installations_install": {
9050
9053
  params: {
@@ -9085,7 +9088,7 @@ that list, WordPress is ready.
9085
9088
  */
9086
9089
  credentials: object;
9087
9090
  /**
9088
- * Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.
9091
+ * Optional. If the named database already exists on the account, it is used for this WordPress install. Otherwise a new database is created with this name, or with a generated name when database is omitted or null. A new database gets a random database user and counts toward the plan's database limit.
9089
9092
  */
9090
9093
  database?: object;
9091
9094
  };