hostinger-api-mcp 0.2.12 → 0.2.14

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/README.md CHANGED
@@ -49,13 +49,14 @@ pnpm update -g hostinger-api-mcp
49
49
 
50
50
  This package installs the following MCP server commands:
51
51
 
52
- - `hostinger-api-mcp` — unified server with every tool (137 total)
52
+ - `hostinger-api-mcp` — unified server with every tool (140 total)
53
53
  - `hostinger-billing-mcp` — 7 tools for billing
54
54
  - `hostinger-dns-mcp` — 8 tools for dns
55
55
  - `hostinger-domains-mcp` — 18 tools for domains
56
56
  - `hostinger-ecommerce-mcp` — 2 tools for ecommerce
57
+ - `hostinger-horizons-mcp` — 2 tools for horizons
57
58
  - `hostinger-hosting-mcp` — 30 tools for hosting
58
- - `hostinger-reach-mcp` — 10 tools for reach
59
+ - `hostinger-reach-mcp` — 11 tools for reach
59
60
  - `hostinger-vps-mcp` — 62 tools for vps
60
61
 
61
62
  Pick the binary that matches your agent's scope. `hostinger-api-mcp` remains the backwards-compatible default.
@@ -561,6 +562,58 @@ A primary sales channel is created alongside the store.
561
562
  - **Method**: `POST`
562
563
  - **Path**: `/api/ecommerce/v1/stores`
563
564
 
565
+ ### `hostinger-horizons-mcp`
566
+
567
+ #### horizons_createWebsiteV1
568
+
569
+ Create new Hostinger Horizons website from the given message.\n
570
+ Use this tool when user asks you to create a website, landing page, blog
571
+ or any other type of application.\n
572
+ This tool initiates the website creation process and returns a website URL and ID.
573
+ The generation happens asynchronously.\n
574
+ After invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing
575
+ that Hostinger Horizons is now creating their website and it will be ready in a few minutes
576
+ and you should provide the website URL to the user immediately
577
+ Do not write code.\n\nTo edit afterwards, users must go to Hostinger Horizons interface
578
+ in the provided website URL.
579
+ If the tool call fails with an error, you should provide a clear explanation of the error
580
+ and do not generate code yourself in the chat.
581
+ \n
582
+ TECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\n
583
+ The environment is limited to the following technologies.
584
+ You MUST NOT use, suggest, or implement any technology outside this list:\n
585
+ \n
586
+ - Language: JavaScript ONLY.
587
+ - Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\n
588
+ - Framework: React.\n
589
+ - Navigation: React Router.\n
590
+ - Styling: TailwindCSS.\n
591
+ - Components: shadcn/ui (built with @radix-ui primitives).\n
592
+ - Icons: Lucide React.\n
593
+ - Animations: Framer Motion.\n
594
+ \n
595
+ BACKEND & DATA STORAGE:\n
596
+ - Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,
597
+ authentication, and database needs.\n
598
+ - Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\n
599
+ - Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\n
600
+ \n
601
+ MAPS:\n
602
+ - OpenStreetMap is the default provider.\n
603
+ - Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\n
604
+
605
+ - **Method**: `POST`
606
+ - **Path**: `/api/horizons/v1/websites`
607
+
608
+ #### horizons_getWebsiteV1
609
+
610
+ Get a link for the user to edit their website in Hostinger Horizons interface.\n
611
+ Use this tool when user wants to modify, edit or add new features to an existing website.\n
612
+ Websites can only be edited in Hostinger Horizons interface in the provided website URL.
613
+
614
+ - **Method**: `GET`
615
+ - **Path**: `/api/horizons/v1/websites/{websiteId}`
616
+
564
617
  ### `hostinger-hosting-mcp`
565
618
 
566
619
  #### hosting_importWordpressWebsite
@@ -951,6 +1004,16 @@ The segment can be configured with specific criteria like email, name, subscript
951
1004
  - **Method**: `POST`
952
1005
  - **Path**: `/api/reach/v1/segmentation/segments`
953
1006
 
1007
+ #### reach_listProfileSegmentContactsV1
1008
+
1009
+ Retrieve contacts associated with a specific segment for a given profile.
1010
+
1011
+ This endpoint allows you to fetch and filter contacts that belong to a particular segment,
1012
+ identified by its UUID, scoped to a specific profile.
1013
+
1014
+ - **Method**: `GET`
1015
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts`
1016
+
954
1017
  #### reach_listSegmentContactsV1
955
1018
 
956
1019
  Retrieve contacts associated with a specific segment.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
@@ -23,6 +23,7 @@
23
23
  "hostinger-dns-mcp": "./src/servers/dns.js",
24
24
  "hostinger-domains-mcp": "./src/servers/domains.js",
25
25
  "hostinger-ecommerce-mcp": "./src/servers/ecommerce.js",
26
+ "hostinger-horizons-mcp": "./src/servers/horizons.js",
26
27
  "hostinger-hosting-mcp": "./src/servers/hosting.js",
27
28
  "hostinger-reach-mcp": "./src/servers/reach.js",
28
29
  "hostinger-vps-mcp": "./src/servers/vps.js"
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": "0.2.12",
9
+ "version": "0.2.14",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "hostinger-api-mcp",
14
- "version": "0.2.12",
14
+ "version": "0.2.14",
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 0.18.2
32
+ * Generated from OpenAPI spec version 0.19.1
33
33
  */
34
34
  class MCPServer {
35
35
  constructor({ name, version, tools }) {
@@ -116,6 +116,17 @@ class MCPServer {
116
116
  * Set up request handlers
117
117
  */
118
118
  setupHandlers() {
119
+ // Capture the connecting MCP client's identity once the initialize handshake completes.
120
+ // The name is client-controlled input, so strip CR/LF to prevent header injection.
121
+ this.server.oninitialized = () => {
122
+ const clientName = String(this.server.getClientVersion()?.name ?? "")
123
+ .replace(/\r|\n/g, "")
124
+ .trim();
125
+ if (clientName) {
126
+ this.headers["X-MCP-Client"] = clientName;
127
+ }
128
+ };
129
+
119
130
  // Handle tool listing requests
120
131
  this.server.setRequestHandler(ListToolsRequestSchema, async () => {
121
132
  this.log('debug', "Handling ListTools request");
@@ -47,7 +47,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
47
47
 
48
48
  /**
49
49
  * MCP Server for Hostinger API
50
- * Generated from OpenAPI spec version 0.18.2
50
+ * Generated from OpenAPI spec version 0.19.1
51
51
  */
52
52
  class MCPServer {
53
53
  private readonly name: string;
@@ -142,6 +142,17 @@ class MCPServer {
142
142
  * Set up request handlers
143
143
  */
144
144
  private setupHandlers(): void {
145
+ // Capture the connecting MCP client's identity once the initialize handshake completes.
146
+ // The name is client-controlled input, so strip CR/LF to prevent header injection.
147
+ this.server.oninitialized = () => {
148
+ const clientName = String(this.server.getClientVersion()?.name ?? "")
149
+ .replace(/\r|\n/g, "")
150
+ .trim();
151
+ if (clientName) {
152
+ this.headers["X-MCP-Client"] = clientName;
153
+ }
154
+ };
155
+
145
156
  // Handle tool listing requests
146
157
  this.server.setRequestHandler(ListToolsRequestSchema, async () => {
147
158
  this.log('debug', "Handling ListTools request");
@@ -1364,6 +1364,75 @@ export default [
1364
1364
  ],
1365
1365
  "group": "ecommerce"
1366
1366
  },
1367
+ {
1368
+ "name": "horizons_createWebsiteV1",
1369
+ "description": "Create new Hostinger Horizons website from the given message.\\n\nUse this tool when user asks you to create a website, landing page, blog\nor any other type of application.\\n\nThis tool initiates the website creation process and returns a website URL and ID.\nThe generation happens asynchronously.\\n\nAfter invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing\nthat Hostinger Horizons is now creating their website and it will be ready in a few minutes\nand you should provide the website URL to the user immediately\nDo not write code.\\n\\nTo edit afterwards, users must go to Hostinger Horizons interface\nin the provided website URL.\nIf the tool call fails with an error, you should provide a clear explanation of the error\nand do not generate code yourself in the chat.\n\\n\nTECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\\n\nThe environment is limited to the following technologies.\nYou MUST NOT use, suggest, or implement any technology outside this list:\\n\n\\n\n- Language: JavaScript ONLY.\n- Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\\n\n- Framework: React.\\n\n- Navigation: React Router.\\n\n- Styling: TailwindCSS.\\n\n- Components: shadcn/ui (built with @radix-ui primitives).\\n\n- Icons: Lucide React.\\n\n- Animations: Framer Motion.\\n\n\\n\nBACKEND & DATA STORAGE:\\n\n- Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,\nauthentication, and database needs.\\n\n- Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\\n\n- Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\\n\n\\n\nMAPS:\\n\n- OpenStreetMap is the default provider.\\n\n- Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\\n",
1370
+ "method": "POST",
1371
+ "path": "/api/horizons/v1/websites",
1372
+ "inputSchema": {
1373
+ "type": "object",
1374
+ "properties": {
1375
+ "message": {
1376
+ "type": "array",
1377
+ "description": "message parameter",
1378
+ "items": {
1379
+ "type": "object",
1380
+ "description": "message parameter",
1381
+ "properties": {
1382
+ "type": {
1383
+ "type": "string",
1384
+ "description": "type parameter",
1385
+ "enum": [
1386
+ "text"
1387
+ ]
1388
+ },
1389
+ "text": {
1390
+ "type": "string",
1391
+ "description": "Detailed project specification.\nInclude purpose, key features, user flows, data models, and design preferences.\nThe specification should be detailed and comprehensive, covering all aspects of the project."
1392
+ }
1393
+ },
1394
+ "required": [
1395
+ "type",
1396
+ "text"
1397
+ ]
1398
+ }
1399
+ }
1400
+ },
1401
+ "required": [
1402
+ "message"
1403
+ ]
1404
+ },
1405
+ "security": [
1406
+ {
1407
+ "apiToken": []
1408
+ }
1409
+ ],
1410
+ "group": "horizons"
1411
+ },
1412
+ {
1413
+ "name": "horizons_getWebsiteV1",
1414
+ "description": "Get a link for the user to edit their website in Hostinger Horizons interface.\\n\nUse this tool when user wants to modify, edit or add new features to an existing website.\\n\nWebsites can only be edited in Hostinger Horizons interface in the provided website URL.",
1415
+ "method": "GET",
1416
+ "path": "/api/horizons/v1/websites/{websiteId}",
1417
+ "inputSchema": {
1418
+ "type": "object",
1419
+ "properties": {
1420
+ "websiteId": {
1421
+ "type": "string",
1422
+ "description": "The website ID"
1423
+ }
1424
+ },
1425
+ "required": [
1426
+ "websiteId"
1427
+ ]
1428
+ },
1429
+ "security": [
1430
+ {
1431
+ "apiToken": []
1432
+ }
1433
+ ],
1434
+ "group": "horizons"
1435
+ },
1367
1436
  {
1368
1437
  "name": "hosting_changeDatabasePasswordV1",
1369
1438
  "description": "Changes the password for the specified database user.\n\nThe database name must be the full name returned by the list databases endpoint.\nThe password must also be updated in any website configuration that uses this database.",
@@ -2504,6 +2573,43 @@ export default [
2504
2573
  ],
2505
2574
  "group": "reach"
2506
2575
  },
2576
+ {
2577
+ "name": "reach_listProfileSegmentContactsV1",
2578
+ "description": "Retrieve contacts associated with a specific segment for a given profile.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID, scoped to a specific profile.",
2579
+ "method": "GET",
2580
+ "path": "/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts",
2581
+ "inputSchema": {
2582
+ "type": "object",
2583
+ "properties": {
2584
+ "profileUuid": {
2585
+ "type": "string",
2586
+ "description": "Profile uuid parameter"
2587
+ },
2588
+ "segmentUuid": {
2589
+ "type": "string",
2590
+ "description": "Segment uuid parameter"
2591
+ },
2592
+ "page": {
2593
+ "type": "integer",
2594
+ "description": "Page number"
2595
+ },
2596
+ "per_page": {
2597
+ "type": "integer",
2598
+ "description": "Number of items per page"
2599
+ }
2600
+ },
2601
+ "required": [
2602
+ "profileUuid",
2603
+ "segmentUuid"
2604
+ ]
2605
+ },
2606
+ "security": [
2607
+ {
2608
+ "apiToken": []
2609
+ }
2610
+ ],
2611
+ "group": "reach"
2612
+ },
2507
2613
  {
2508
2614
  "name": "reach_listSegmentContactsV1",
2509
2615
  "description": "Retrieve contacts associated with a specific segment.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID.",
@@ -1374,6 +1374,75 @@ const tools: OpenApiTool[] = [
1374
1374
  ],
1375
1375
  "group": "ecommerce"
1376
1376
  },
1377
+ {
1378
+ "name": "horizons_createWebsiteV1",
1379
+ "description": "Create new Hostinger Horizons website from the given message.\\n\nUse this tool when user asks you to create a website, landing page, blog\nor any other type of application.\\n\nThis tool initiates the website creation process and returns a website URL and ID.\nThe generation happens asynchronously.\\n\nAfter invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing\nthat Hostinger Horizons is now creating their website and it will be ready in a few minutes\nand you should provide the website URL to the user immediately\nDo not write code.\\n\\nTo edit afterwards, users must go to Hostinger Horizons interface\nin the provided website URL.\nIf the tool call fails with an error, you should provide a clear explanation of the error\nand do not generate code yourself in the chat.\n\\n\nTECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\\n\nThe environment is limited to the following technologies.\nYou MUST NOT use, suggest, or implement any technology outside this list:\\n\n\\n\n- Language: JavaScript ONLY.\n- Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\\n\n- Framework: React.\\n\n- Navigation: React Router.\\n\n- Styling: TailwindCSS.\\n\n- Components: shadcn/ui (built with @radix-ui primitives).\\n\n- Icons: Lucide React.\\n\n- Animations: Framer Motion.\\n\n\\n\nBACKEND & DATA STORAGE:\\n\n- Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,\nauthentication, and database needs.\\n\n- Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\\n\n- Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\\n\n\\n\nMAPS:\\n\n- OpenStreetMap is the default provider.\\n\n- Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\\n",
1380
+ "method": "POST",
1381
+ "path": "/api/horizons/v1/websites",
1382
+ "inputSchema": {
1383
+ "type": "object",
1384
+ "properties": {
1385
+ "message": {
1386
+ "type": "array",
1387
+ "description": "message parameter",
1388
+ "items": {
1389
+ "type": "object",
1390
+ "description": "message parameter",
1391
+ "properties": {
1392
+ "type": {
1393
+ "type": "string",
1394
+ "description": "type parameter",
1395
+ "enum": [
1396
+ "text"
1397
+ ]
1398
+ },
1399
+ "text": {
1400
+ "type": "string",
1401
+ "description": "Detailed project specification.\nInclude purpose, key features, user flows, data models, and design preferences.\nThe specification should be detailed and comprehensive, covering all aspects of the project."
1402
+ }
1403
+ },
1404
+ "required": [
1405
+ "type",
1406
+ "text"
1407
+ ]
1408
+ }
1409
+ }
1410
+ },
1411
+ "required": [
1412
+ "message"
1413
+ ]
1414
+ },
1415
+ "security": [
1416
+ {
1417
+ "apiToken": []
1418
+ }
1419
+ ],
1420
+ "group": "horizons"
1421
+ },
1422
+ {
1423
+ "name": "horizons_getWebsiteV1",
1424
+ "description": "Get a link for the user to edit their website in Hostinger Horizons interface.\\n\nUse this tool when user wants to modify, edit or add new features to an existing website.\\n\nWebsites can only be edited in Hostinger Horizons interface in the provided website URL.",
1425
+ "method": "GET",
1426
+ "path": "/api/horizons/v1/websites/{websiteId}",
1427
+ "inputSchema": {
1428
+ "type": "object",
1429
+ "properties": {
1430
+ "websiteId": {
1431
+ "type": "string",
1432
+ "description": "The website ID"
1433
+ }
1434
+ },
1435
+ "required": [
1436
+ "websiteId"
1437
+ ]
1438
+ },
1439
+ "security": [
1440
+ {
1441
+ "apiToken": []
1442
+ }
1443
+ ],
1444
+ "group": "horizons"
1445
+ },
1377
1446
  {
1378
1447
  "name": "hosting_changeDatabasePasswordV1",
1379
1448
  "description": "Changes the password for the specified database user.\n\nThe database name must be the full name returned by the list databases endpoint.\nThe password must also be updated in any website configuration that uses this database.",
@@ -2514,6 +2583,43 @@ const tools: OpenApiTool[] = [
2514
2583
  ],
2515
2584
  "group": "reach"
2516
2585
  },
2586
+ {
2587
+ "name": "reach_listProfileSegmentContactsV1",
2588
+ "description": "Retrieve contacts associated with a specific segment for a given profile.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID, scoped to a specific profile.",
2589
+ "method": "GET",
2590
+ "path": "/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts",
2591
+ "inputSchema": {
2592
+ "type": "object",
2593
+ "properties": {
2594
+ "profileUuid": {
2595
+ "type": "string",
2596
+ "description": "Profile uuid parameter"
2597
+ },
2598
+ "segmentUuid": {
2599
+ "type": "string",
2600
+ "description": "Segment uuid parameter"
2601
+ },
2602
+ "page": {
2603
+ "type": "integer",
2604
+ "description": "Page number"
2605
+ },
2606
+ "per_page": {
2607
+ "type": "integer",
2608
+ "description": "Number of items per page"
2609
+ }
2610
+ },
2611
+ "required": [
2612
+ "profileUuid",
2613
+ "segmentUuid"
2614
+ ]
2615
+ },
2616
+ "security": [
2617
+ {
2618
+ "apiToken": []
2619
+ }
2620
+ ],
2621
+ "group": "reach"
2622
+ },
2517
2623
  {
2518
2624
  "name": "reach_listSegmentContactsV1",
2519
2625
  "description": "Retrieve contacts associated with a specific segment.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID.",
@@ -0,0 +1,72 @@
1
+ // Auto-generated tool list for group: horizons
2
+ export default [
3
+ {
4
+ "name": "horizons_createWebsiteV1",
5
+ "description": "Create new Hostinger Horizons website from the given message.\\n\nUse this tool when user asks you to create a website, landing page, blog\nor any other type of application.\\n\nThis tool initiates the website creation process and returns a website URL and ID.\nThe generation happens asynchronously.\\n\nAfter invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing\nthat Hostinger Horizons is now creating their website and it will be ready in a few minutes\nand you should provide the website URL to the user immediately\nDo not write code.\\n\\nTo edit afterwards, users must go to Hostinger Horizons interface\nin the provided website URL.\nIf the tool call fails with an error, you should provide a clear explanation of the error\nand do not generate code yourself in the chat.\n\\n\nTECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\\n\nThe environment is limited to the following technologies.\nYou MUST NOT use, suggest, or implement any technology outside this list:\\n\n\\n\n- Language: JavaScript ONLY.\n- Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\\n\n- Framework: React.\\n\n- Navigation: React Router.\\n\n- Styling: TailwindCSS.\\n\n- Components: shadcn/ui (built with @radix-ui primitives).\\n\n- Icons: Lucide React.\\n\n- Animations: Framer Motion.\\n\n\\n\nBACKEND & DATA STORAGE:\\n\n- Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,\nauthentication, and database needs.\\n\n- Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\\n\n- Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\\n\n\\n\nMAPS:\\n\n- OpenStreetMap is the default provider.\\n\n- Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\\n",
6
+ "method": "POST",
7
+ "path": "/api/horizons/v1/websites",
8
+ "inputSchema": {
9
+ "type": "object",
10
+ "properties": {
11
+ "message": {
12
+ "type": "array",
13
+ "description": "message parameter",
14
+ "items": {
15
+ "type": "object",
16
+ "description": "message parameter",
17
+ "properties": {
18
+ "type": {
19
+ "type": "string",
20
+ "description": "type parameter",
21
+ "enum": [
22
+ "text"
23
+ ]
24
+ },
25
+ "text": {
26
+ "type": "string",
27
+ "description": "Detailed project specification.\nInclude purpose, key features, user flows, data models, and design preferences.\nThe specification should be detailed and comprehensive, covering all aspects of the project."
28
+ }
29
+ },
30
+ "required": [
31
+ "type",
32
+ "text"
33
+ ]
34
+ }
35
+ }
36
+ },
37
+ "required": [
38
+ "message"
39
+ ]
40
+ },
41
+ "security": [
42
+ {
43
+ "apiToken": []
44
+ }
45
+ ],
46
+ "group": "horizons"
47
+ },
48
+ {
49
+ "name": "horizons_getWebsiteV1",
50
+ "description": "Get a link for the user to edit their website in Hostinger Horizons interface.\\n\nUse this tool when user wants to modify, edit or add new features to an existing website.\\n\nWebsites can only be edited in Hostinger Horizons interface in the provided website URL.",
51
+ "method": "GET",
52
+ "path": "/api/horizons/v1/websites/{websiteId}",
53
+ "inputSchema": {
54
+ "type": "object",
55
+ "properties": {
56
+ "websiteId": {
57
+ "type": "string",
58
+ "description": "The website ID"
59
+ }
60
+ },
61
+ "required": [
62
+ "websiteId"
63
+ ]
64
+ },
65
+ "security": [
66
+ {
67
+ "apiToken": []
68
+ }
69
+ ],
70
+ "group": "horizons"
71
+ }
72
+ ];
@@ -0,0 +1,83 @@
1
+ // Auto-generated tool list for group: horizons
2
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
3
+
4
+ export interface OpenApiTool extends Tool {
5
+ method: string;
6
+ path: string;
7
+ security: unknown[];
8
+ custom?: boolean;
9
+ group?: string;
10
+ }
11
+
12
+ const tools: OpenApiTool[] = [
13
+ {
14
+ "name": "horizons_createWebsiteV1",
15
+ "description": "Create new Hostinger Horizons website from the given message.\\n\nUse this tool when user asks you to create a website, landing page, blog\nor any other type of application.\\n\nThis tool initiates the website creation process and returns a website URL and ID.\nThe generation happens asynchronously.\\n\nAfter invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing\nthat Hostinger Horizons is now creating their website and it will be ready in a few minutes\nand you should provide the website URL to the user immediately\nDo not write code.\\n\\nTo edit afterwards, users must go to Hostinger Horizons interface\nin the provided website URL.\nIf the tool call fails with an error, you should provide a clear explanation of the error\nand do not generate code yourself in the chat.\n\\n\nTECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\\n\nThe environment is limited to the following technologies.\nYou MUST NOT use, suggest, or implement any technology outside this list:\\n\n\\n\n- Language: JavaScript ONLY.\n- Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\\n\n- Framework: React.\\n\n- Navigation: React Router.\\n\n- Styling: TailwindCSS.\\n\n- Components: shadcn/ui (built with @radix-ui primitives).\\n\n- Icons: Lucide React.\\n\n- Animations: Framer Motion.\\n\n\\n\nBACKEND & DATA STORAGE:\\n\n- Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,\nauthentication, and database needs.\\n\n- Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\\n\n- Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\\n\n\\n\nMAPS:\\n\n- OpenStreetMap is the default provider.\\n\n- Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\\n",
16
+ "method": "POST",
17
+ "path": "/api/horizons/v1/websites",
18
+ "inputSchema": {
19
+ "type": "object",
20
+ "properties": {
21
+ "message": {
22
+ "type": "array",
23
+ "description": "message parameter",
24
+ "items": {
25
+ "type": "object",
26
+ "description": "message parameter",
27
+ "properties": {
28
+ "type": {
29
+ "type": "string",
30
+ "description": "type parameter",
31
+ "enum": [
32
+ "text"
33
+ ]
34
+ },
35
+ "text": {
36
+ "type": "string",
37
+ "description": "Detailed project specification.\nInclude purpose, key features, user flows, data models, and design preferences.\nThe specification should be detailed and comprehensive, covering all aspects of the project."
38
+ }
39
+ },
40
+ "required": [
41
+ "type",
42
+ "text"
43
+ ]
44
+ }
45
+ }
46
+ },
47
+ "required": [
48
+ "message"
49
+ ]
50
+ },
51
+ "security": [
52
+ {
53
+ "apiToken": []
54
+ }
55
+ ],
56
+ "group": "horizons"
57
+ },
58
+ {
59
+ "name": "horizons_getWebsiteV1",
60
+ "description": "Get a link for the user to edit their website in Hostinger Horizons interface.\\n\nUse this tool when user wants to modify, edit or add new features to an existing website.\\n\nWebsites can only be edited in Hostinger Horizons interface in the provided website URL.",
61
+ "method": "GET",
62
+ "path": "/api/horizons/v1/websites/{websiteId}",
63
+ "inputSchema": {
64
+ "type": "object",
65
+ "properties": {
66
+ "websiteId": {
67
+ "type": "string",
68
+ "description": "The website ID"
69
+ }
70
+ },
71
+ "required": [
72
+ "websiteId"
73
+ ]
74
+ },
75
+ "security": [
76
+ {
77
+ "apiToken": []
78
+ }
79
+ ],
80
+ "group": "horizons"
81
+ }
82
+ ];
83
+ export default tools;
@@ -236,6 +236,43 @@ export default [
236
236
  ],
237
237
  "group": "reach"
238
238
  },
239
+ {
240
+ "name": "reach_listProfileSegmentContactsV1",
241
+ "description": "Retrieve contacts associated with a specific segment for a given profile.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID, scoped to a specific profile.",
242
+ "method": "GET",
243
+ "path": "/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts",
244
+ "inputSchema": {
245
+ "type": "object",
246
+ "properties": {
247
+ "profileUuid": {
248
+ "type": "string",
249
+ "description": "Profile uuid parameter"
250
+ },
251
+ "segmentUuid": {
252
+ "type": "string",
253
+ "description": "Segment uuid parameter"
254
+ },
255
+ "page": {
256
+ "type": "integer",
257
+ "description": "Page number"
258
+ },
259
+ "per_page": {
260
+ "type": "integer",
261
+ "description": "Number of items per page"
262
+ }
263
+ },
264
+ "required": [
265
+ "profileUuid",
266
+ "segmentUuid"
267
+ ]
268
+ },
269
+ "security": [
270
+ {
271
+ "apiToken": []
272
+ }
273
+ ],
274
+ "group": "reach"
275
+ },
239
276
  {
240
277
  "name": "reach_listSegmentContactsV1",
241
278
  "description": "Retrieve contacts associated with a specific segment.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID.",
@@ -246,6 +246,43 @@ const tools: OpenApiTool[] = [
246
246
  ],
247
247
  "group": "reach"
248
248
  },
249
+ {
250
+ "name": "reach_listProfileSegmentContactsV1",
251
+ "description": "Retrieve contacts associated with a specific segment for a given profile.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID, scoped to a specific profile.",
252
+ "method": "GET",
253
+ "path": "/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts",
254
+ "inputSchema": {
255
+ "type": "object",
256
+ "properties": {
257
+ "profileUuid": {
258
+ "type": "string",
259
+ "description": "Profile uuid parameter"
260
+ },
261
+ "segmentUuid": {
262
+ "type": "string",
263
+ "description": "Segment uuid parameter"
264
+ },
265
+ "page": {
266
+ "type": "integer",
267
+ "description": "Page number"
268
+ },
269
+ "per_page": {
270
+ "type": "integer",
271
+ "description": "Number of items per page"
272
+ }
273
+ },
274
+ "required": [
275
+ "profileUuid",
276
+ "segmentUuid"
277
+ ]
278
+ },
279
+ "security": [
280
+ {
281
+ "apiToken": []
282
+ }
283
+ ],
284
+ "group": "reach"
285
+ },
249
286
  {
250
287
  "name": "reach_listSegmentContactsV1",
251
288
  "description": "Retrieve contacts associated with a specific segment.\n\nThis endpoint allows you to fetch and filter contacts that belong to a particular segment,\nidentified by its UUID.",
@@ -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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '0.2.14', tools });
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated entry for group: horizons
3
+ import { startServer } from '../core/runtime.js';
4
+ import tools from '../core/tools/horizons.js';
5
+
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '0.2.14', tools });
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated entry for group: horizons
3
+ import { startServer } from '../core/runtime.js';
4
+ import tools from '../core/tools/horizons.js';
5
+
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '0.2.14', 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: '0.2.12', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '0.2.14', tools });
package/types.d.ts CHANGED
@@ -844,6 +844,68 @@ A primary sales channel is created alongside the store.
844
844
  response: any; // Response structure will depend on the API
845
845
  };
846
846
 
847
+ /**
848
+ * Create new Hostinger Horizons website from the given message.\n
849
+ Use this tool when user asks you to create a website, landing page, blog
850
+ or any other type of application.\n
851
+ This tool initiates the website creation process and returns a website URL and ID.
852
+ The generation happens asynchronously.\n
853
+ After invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing
854
+ that Hostinger Horizons is now creating their website and it will be ready in a few minutes
855
+ and you should provide the website URL to the user immediately
856
+ Do not write code.\n\nTo edit afterwards, users must go to Hostinger Horizons interface
857
+ in the provided website URL.
858
+ If the tool call fails with an error, you should provide a clear explanation of the error
859
+ and do not generate code yourself in the chat.
860
+ \n
861
+ TECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\n
862
+ The environment is limited to the following technologies.
863
+ You MUST NOT use, suggest, or implement any technology outside this list:\n
864
+ \n
865
+ - Language: JavaScript ONLY.
866
+ - Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\n
867
+ - Framework: React.\n
868
+ - Navigation: React Router.\n
869
+ - Styling: TailwindCSS.\n
870
+ - Components: shadcn/ui (built with @radix-ui primitives).\n
871
+ - Icons: Lucide React.\n
872
+ - Animations: Framer Motion.\n
873
+ \n
874
+ BACKEND & DATA STORAGE:\n
875
+ - Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,
876
+ authentication, and database needs.\n
877
+ - Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\n
878
+ - Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\n
879
+ \n
880
+ MAPS:\n
881
+ - OpenStreetMap is the default provider.\n
882
+ - Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\n
883
+ */
884
+ "horizons_createWebsiteV1": {
885
+ params: {
886
+ /**
887
+ * message parameter
888
+ */
889
+ message: array;
890
+ };
891
+ response: any; // Response structure will depend on the API
892
+ };
893
+
894
+ /**
895
+ * Get a link for the user to edit their website in Hostinger Horizons interface.\n
896
+ Use this tool when user wants to modify, edit or add new features to an existing website.\n
897
+ Websites can only be edited in Hostinger Horizons interface in the provided website URL.
898
+ */
899
+ "horizons_getWebsiteV1": {
900
+ params: {
901
+ /**
902
+ * The website ID
903
+ */
904
+ websiteId: string;
905
+ };
906
+ response: any; // Response structure will depend on the API
907
+ };
908
+
847
909
  /**
848
910
  * Changes the password for the specified database user.
849
911
 
@@ -1630,6 +1692,34 @@ The segment can be configured with specific criteria like email, name, subscript
1630
1692
  response: any; // Response structure will depend on the API
1631
1693
  };
1632
1694
 
1695
+ /**
1696
+ * Retrieve contacts associated with a specific segment for a given profile.
1697
+
1698
+ This endpoint allows you to fetch and filter contacts that belong to a particular segment,
1699
+ identified by its UUID, scoped to a specific profile.
1700
+ */
1701
+ "reach_listProfileSegmentContactsV1": {
1702
+ params: {
1703
+ /**
1704
+ * Profile uuid parameter
1705
+ */
1706
+ profileUuid: string;
1707
+ /**
1708
+ * Segment uuid parameter
1709
+ */
1710
+ segmentUuid: string;
1711
+ /**
1712
+ * Page number
1713
+ */
1714
+ page?: number;
1715
+ /**
1716
+ * Number of items per page
1717
+ */
1718
+ per_page?: number;
1719
+ };
1720
+ response: any; // Response structure will depend on the API
1721
+ };
1722
+
1633
1723
  /**
1634
1724
  * Retrieve contacts associated with a specific segment.
1635
1725