hostinger-api-mcp 3.8.1 → 3.9.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,21 @@ 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.9.0 — 2026-10-26
8
+
9
+ ### Operations
10
+
11
+ - Changed the input schema of `reach_contacts_create`
12
+ - Changed the description and input schema of `reach_contacts_create-in-bulk`
13
+ - Changed the input schema of `reach_contacts_create-bulk`
14
+
15
+ ### Also in this release
16
+
17
+ - Documentation: `README.md`
18
+ - Dependencies: `package-lock.json`
19
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
20
+ - Build and packaging: `types.d.ts`
21
+
7
22
  ## v3.8.1 — 2026-10-23
8
23
 
9
24
  ### Also in this release
package/README.md CHANGED
@@ -3217,9 +3217,10 @@ values, source and note with `GET /api/reach/v1/profiles/{profileUuid}/contacts/
3217
3217
  Create many contacts in a profile in a single call.
3218
3218
 
3219
3219
  The contacts are imported in the background, so a success response means the import was
3220
- accepted rather than finished. Contacts whose email already exists in the profile are
3221
- left as they are. If double opt-in is enabled, new contacts start off pending and are
3222
- sent a confirmation email.
3220
+ accepted rather than finished. Contacts whose email already exists in the profile keep
3221
+ their current values; only the ones that are still empty, custom fields included, are
3222
+ filled in. If double opt-in is enabled, new contacts start off pending and are sent a
3223
+ confirmation email.
3223
3224
 
3224
3225
  - **Method**: `POST`
3225
3226
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/bulk`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.8.1",
3
+ "version": "3.9.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-api-mcp",
3
- "version": "3.8.1",
3
+ "version": "3.9.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.8.1",
9
+ "version": "3.9.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.8.1",
14
+ "version": "3.9.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -66,7 +66,7 @@ const GetSkillRequestSchema = z.object({
66
66
 
67
67
  /**
68
68
  * MCP Server for Hostinger API
69
- * Generated from OpenAPI spec version 2.2.0
69
+ * Generated from OpenAPI spec version 2.3.0
70
70
  */
71
71
  class MCPServer {
72
72
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -97,7 +97,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
97
97
 
98
98
  /**
99
99
  * MCP Server for Hostinger API
100
- * Generated from OpenAPI spec version 2.2.0
100
+ * Generated from OpenAPI spec version 2.3.0
101
101
  */
102
102
  class MCPServer {
103
103
  private readonly name: string;
@@ -12051,6 +12051,35 @@ export default [
12051
12051
  "type": "string",
12052
12052
  "description": "tag_uuids parameter"
12053
12053
  }
12054
+ },
12055
+ "fields": {
12056
+ "type": "array",
12057
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
12058
+ "items": {
12059
+ "type": "object",
12060
+ "description": "fields parameter",
12061
+ "properties": {
12062
+ "uuid": {
12063
+ "type": "string",
12064
+ "description": "uuid parameter"
12065
+ },
12066
+ "value": {
12067
+ "type": "string",
12068
+ "description": "For the scalar field types"
12069
+ },
12070
+ "selected_option_uuids": {
12071
+ "type": "array",
12072
+ "description": "For the choice field types",
12073
+ "items": {
12074
+ "type": "string",
12075
+ "description": "selected_option_uuids parameter"
12076
+ }
12077
+ }
12078
+ },
12079
+ "required": [
12080
+ "uuid"
12081
+ ]
12082
+ }
12054
12083
  }
12055
12084
  },
12056
12085
  "required": [
@@ -12238,7 +12267,7 @@ export default [
12238
12267
  "readOnlyHint": false,
12239
12268
  "destructiveHint": false
12240
12269
  },
12241
- "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile are\nleft as they are. If double opt-in is enabled, new contacts start off pending and are\nsent a confirmation email.",
12270
+ "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile keep\ntheir current values; only the ones that are still empty, custom fields included, are\nfilled in. If double opt-in is enabled, new contacts start off pending and are sent a\nconfirmation email.",
12242
12271
  "method": "POST",
12243
12272
  "path": "/api/reach/v1/profiles/{profileUuid}/contacts/bulk",
12244
12273
  "inputSchema": {
@@ -12270,6 +12299,35 @@ export default [
12270
12299
  "phone": {
12271
12300
  "type": "string",
12272
12301
  "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
12302
+ },
12303
+ "fields": {
12304
+ "type": "array",
12305
+ "description": "Custom field values to set on the contact. For a contact whose email already\nexists, only fields that have no value yet are filled. Unknown field UUIDs and\nvalues that do not match the field type are skipped.",
12306
+ "items": {
12307
+ "type": "object",
12308
+ "description": "fields parameter",
12309
+ "properties": {
12310
+ "uuid": {
12311
+ "type": "string",
12312
+ "description": "uuid parameter"
12313
+ },
12314
+ "value": {
12315
+ "type": "string",
12316
+ "description": "For the scalar field types"
12317
+ },
12318
+ "selected_option_uuids": {
12319
+ "type": "array",
12320
+ "description": "For the choice field types",
12321
+ "items": {
12322
+ "type": "string",
12323
+ "description": "selected_option_uuids parameter"
12324
+ }
12325
+ }
12326
+ },
12327
+ "required": [
12328
+ "uuid"
12329
+ ]
12330
+ }
12273
12331
  }
12274
12332
  },
12275
12333
  "required": [
@@ -12403,6 +12461,35 @@ export default [
12403
12461
  "type": "string",
12404
12462
  "description": "tag_uuids parameter"
12405
12463
  }
12464
+ },
12465
+ "fields": {
12466
+ "type": "array",
12467
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
12468
+ "items": {
12469
+ "type": "object",
12470
+ "description": "fields parameter",
12471
+ "properties": {
12472
+ "uuid": {
12473
+ "type": "string",
12474
+ "description": "uuid parameter"
12475
+ },
12476
+ "value": {
12477
+ "type": "string",
12478
+ "description": "For the scalar field types"
12479
+ },
12480
+ "selected_option_uuids": {
12481
+ "type": "array",
12482
+ "description": "For the choice field types",
12483
+ "items": {
12484
+ "type": "string",
12485
+ "description": "selected_option_uuids parameter"
12486
+ }
12487
+ }
12488
+ },
12489
+ "required": [
12490
+ "uuid"
12491
+ ]
12492
+ }
12406
12493
  }
12407
12494
  },
12408
12495
  "required": [
@@ -12067,6 +12067,35 @@ const tools: OpenApiTool[] = [
12067
12067
  "type": "string",
12068
12068
  "description": "tag_uuids parameter"
12069
12069
  }
12070
+ },
12071
+ "fields": {
12072
+ "type": "array",
12073
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
12074
+ "items": {
12075
+ "type": "object",
12076
+ "description": "fields parameter",
12077
+ "properties": {
12078
+ "uuid": {
12079
+ "type": "string",
12080
+ "description": "uuid parameter"
12081
+ },
12082
+ "value": {
12083
+ "type": "string",
12084
+ "description": "For the scalar field types"
12085
+ },
12086
+ "selected_option_uuids": {
12087
+ "type": "array",
12088
+ "description": "For the choice field types",
12089
+ "items": {
12090
+ "type": "string",
12091
+ "description": "selected_option_uuids parameter"
12092
+ }
12093
+ }
12094
+ },
12095
+ "required": [
12096
+ "uuid"
12097
+ ]
12098
+ }
12070
12099
  }
12071
12100
  },
12072
12101
  "required": [
@@ -12254,7 +12283,7 @@ const tools: OpenApiTool[] = [
12254
12283
  "readOnlyHint": false,
12255
12284
  "destructiveHint": false
12256
12285
  },
12257
- "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile are\nleft as they are. If double opt-in is enabled, new contacts start off pending and are\nsent a confirmation email.",
12286
+ "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile keep\ntheir current values; only the ones that are still empty, custom fields included, are\nfilled in. If double opt-in is enabled, new contacts start off pending and are sent a\nconfirmation email.",
12258
12287
  "method": "POST",
12259
12288
  "path": "/api/reach/v1/profiles/{profileUuid}/contacts/bulk",
12260
12289
  "inputSchema": {
@@ -12286,6 +12315,35 @@ const tools: OpenApiTool[] = [
12286
12315
  "phone": {
12287
12316
  "type": "string",
12288
12317
  "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
12318
+ },
12319
+ "fields": {
12320
+ "type": "array",
12321
+ "description": "Custom field values to set on the contact. For a contact whose email already\nexists, only fields that have no value yet are filled. Unknown field UUIDs and\nvalues that do not match the field type are skipped.",
12322
+ "items": {
12323
+ "type": "object",
12324
+ "description": "fields parameter",
12325
+ "properties": {
12326
+ "uuid": {
12327
+ "type": "string",
12328
+ "description": "uuid parameter"
12329
+ },
12330
+ "value": {
12331
+ "type": "string",
12332
+ "description": "For the scalar field types"
12333
+ },
12334
+ "selected_option_uuids": {
12335
+ "type": "array",
12336
+ "description": "For the choice field types",
12337
+ "items": {
12338
+ "type": "string",
12339
+ "description": "selected_option_uuids parameter"
12340
+ }
12341
+ }
12342
+ },
12343
+ "required": [
12344
+ "uuid"
12345
+ ]
12346
+ }
12289
12347
  }
12290
12348
  },
12291
12349
  "required": [
@@ -12419,6 +12477,35 @@ const tools: OpenApiTool[] = [
12419
12477
  "type": "string",
12420
12478
  "description": "tag_uuids parameter"
12421
12479
  }
12480
+ },
12481
+ "fields": {
12482
+ "type": "array",
12483
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
12484
+ "items": {
12485
+ "type": "object",
12486
+ "description": "fields parameter",
12487
+ "properties": {
12488
+ "uuid": {
12489
+ "type": "string",
12490
+ "description": "uuid parameter"
12491
+ },
12492
+ "value": {
12493
+ "type": "string",
12494
+ "description": "For the scalar field types"
12495
+ },
12496
+ "selected_option_uuids": {
12497
+ "type": "array",
12498
+ "description": "For the choice field types",
12499
+ "items": {
12500
+ "type": "string",
12501
+ "description": "selected_option_uuids parameter"
12502
+ }
12503
+ }
12504
+ },
12505
+ "required": [
12506
+ "uuid"
12507
+ ]
12508
+ }
12422
12509
  }
12423
12510
  },
12424
12511
  "required": [
@@ -647,6 +647,35 @@ export default [
647
647
  "type": "string",
648
648
  "description": "tag_uuids parameter"
649
649
  }
650
+ },
651
+ "fields": {
652
+ "type": "array",
653
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
654
+ "items": {
655
+ "type": "object",
656
+ "description": "fields parameter",
657
+ "properties": {
658
+ "uuid": {
659
+ "type": "string",
660
+ "description": "uuid parameter"
661
+ },
662
+ "value": {
663
+ "type": "string",
664
+ "description": "For the scalar field types"
665
+ },
666
+ "selected_option_uuids": {
667
+ "type": "array",
668
+ "description": "For the choice field types",
669
+ "items": {
670
+ "type": "string",
671
+ "description": "selected_option_uuids parameter"
672
+ }
673
+ }
674
+ },
675
+ "required": [
676
+ "uuid"
677
+ ]
678
+ }
650
679
  }
651
680
  },
652
681
  "required": [
@@ -834,7 +863,7 @@ export default [
834
863
  "readOnlyHint": false,
835
864
  "destructiveHint": false
836
865
  },
837
- "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile are\nleft as they are. If double opt-in is enabled, new contacts start off pending and are\nsent a confirmation email.",
866
+ "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile keep\ntheir current values; only the ones that are still empty, custom fields included, are\nfilled in. If double opt-in is enabled, new contacts start off pending and are sent a\nconfirmation email.",
838
867
  "method": "POST",
839
868
  "path": "/api/reach/v1/profiles/{profileUuid}/contacts/bulk",
840
869
  "inputSchema": {
@@ -866,6 +895,35 @@ export default [
866
895
  "phone": {
867
896
  "type": "string",
868
897
  "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
898
+ },
899
+ "fields": {
900
+ "type": "array",
901
+ "description": "Custom field values to set on the contact. For a contact whose email already\nexists, only fields that have no value yet are filled. Unknown field UUIDs and\nvalues that do not match the field type are skipped.",
902
+ "items": {
903
+ "type": "object",
904
+ "description": "fields parameter",
905
+ "properties": {
906
+ "uuid": {
907
+ "type": "string",
908
+ "description": "uuid parameter"
909
+ },
910
+ "value": {
911
+ "type": "string",
912
+ "description": "For the scalar field types"
913
+ },
914
+ "selected_option_uuids": {
915
+ "type": "array",
916
+ "description": "For the choice field types",
917
+ "items": {
918
+ "type": "string",
919
+ "description": "selected_option_uuids parameter"
920
+ }
921
+ }
922
+ },
923
+ "required": [
924
+ "uuid"
925
+ ]
926
+ }
869
927
  }
870
928
  },
871
929
  "required": [
@@ -999,6 +1057,35 @@ export default [
999
1057
  "type": "string",
1000
1058
  "description": "tag_uuids parameter"
1001
1059
  }
1060
+ },
1061
+ "fields": {
1062
+ "type": "array",
1063
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
1064
+ "items": {
1065
+ "type": "object",
1066
+ "description": "fields parameter",
1067
+ "properties": {
1068
+ "uuid": {
1069
+ "type": "string",
1070
+ "description": "uuid parameter"
1071
+ },
1072
+ "value": {
1073
+ "type": "string",
1074
+ "description": "For the scalar field types"
1075
+ },
1076
+ "selected_option_uuids": {
1077
+ "type": "array",
1078
+ "description": "For the choice field types",
1079
+ "items": {
1080
+ "type": "string",
1081
+ "description": "selected_option_uuids parameter"
1082
+ }
1083
+ }
1084
+ },
1085
+ "required": [
1086
+ "uuid"
1087
+ ]
1088
+ }
1002
1089
  }
1003
1090
  },
1004
1091
  "required": [
@@ -663,6 +663,35 @@ const tools: OpenApiTool[] = [
663
663
  "type": "string",
664
664
  "description": "tag_uuids parameter"
665
665
  }
666
+ },
667
+ "fields": {
668
+ "type": "array",
669
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
670
+ "items": {
671
+ "type": "object",
672
+ "description": "fields parameter",
673
+ "properties": {
674
+ "uuid": {
675
+ "type": "string",
676
+ "description": "uuid parameter"
677
+ },
678
+ "value": {
679
+ "type": "string",
680
+ "description": "For the scalar field types"
681
+ },
682
+ "selected_option_uuids": {
683
+ "type": "array",
684
+ "description": "For the choice field types",
685
+ "items": {
686
+ "type": "string",
687
+ "description": "selected_option_uuids parameter"
688
+ }
689
+ }
690
+ },
691
+ "required": [
692
+ "uuid"
693
+ ]
694
+ }
666
695
  }
667
696
  },
668
697
  "required": [
@@ -850,7 +879,7 @@ const tools: OpenApiTool[] = [
850
879
  "readOnlyHint": false,
851
880
  "destructiveHint": false
852
881
  },
853
- "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile are\nleft as they are. If double opt-in is enabled, new contacts start off pending and are\nsent a confirmation email.",
882
+ "description": "Create many contacts in a profile in a single call.\n\nThe contacts are imported in the background, so a success response means the import was\naccepted rather than finished. Contacts whose email already exists in the profile keep\ntheir current values; only the ones that are still empty, custom fields included, are\nfilled in. If double opt-in is enabled, new contacts start off pending and are sent a\nconfirmation email.",
854
883
  "method": "POST",
855
884
  "path": "/api/reach/v1/profiles/{profileUuid}/contacts/bulk",
856
885
  "inputSchema": {
@@ -882,6 +911,35 @@ const tools: OpenApiTool[] = [
882
911
  "phone": {
883
912
  "type": "string",
884
913
  "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
914
+ },
915
+ "fields": {
916
+ "type": "array",
917
+ "description": "Custom field values to set on the contact. For a contact whose email already\nexists, only fields that have no value yet are filled. Unknown field UUIDs and\nvalues that do not match the field type are skipped.",
918
+ "items": {
919
+ "type": "object",
920
+ "description": "fields parameter",
921
+ "properties": {
922
+ "uuid": {
923
+ "type": "string",
924
+ "description": "uuid parameter"
925
+ },
926
+ "value": {
927
+ "type": "string",
928
+ "description": "For the scalar field types"
929
+ },
930
+ "selected_option_uuids": {
931
+ "type": "array",
932
+ "description": "For the choice field types",
933
+ "items": {
934
+ "type": "string",
935
+ "description": "selected_option_uuids parameter"
936
+ }
937
+ }
938
+ },
939
+ "required": [
940
+ "uuid"
941
+ ]
942
+ }
885
943
  }
886
944
  },
887
945
  "required": [
@@ -1015,6 +1073,35 @@ const tools: OpenApiTool[] = [
1015
1073
  "type": "string",
1016
1074
  "description": "tag_uuids parameter"
1017
1075
  }
1076
+ },
1077
+ "fields": {
1078
+ "type": "array",
1079
+ "description": "Custom field values to set on the contact. When a contact with this email already exists,\nonly fields that have no value yet are filled. Unknown field UUIDs and values that do not\nmatch the field type are skipped.",
1080
+ "items": {
1081
+ "type": "object",
1082
+ "description": "fields parameter",
1083
+ "properties": {
1084
+ "uuid": {
1085
+ "type": "string",
1086
+ "description": "uuid parameter"
1087
+ },
1088
+ "value": {
1089
+ "type": "string",
1090
+ "description": "For the scalar field types"
1091
+ },
1092
+ "selected_option_uuids": {
1093
+ "type": "array",
1094
+ "description": "For the choice field types",
1095
+ "items": {
1096
+ "type": "string",
1097
+ "description": "selected_option_uuids parameter"
1098
+ }
1099
+ }
1100
+ },
1101
+ "required": [
1102
+ "uuid"
1103
+ ]
1104
+ }
1018
1105
  }
1019
1106
  },
1020
1107
  "required": [
@@ -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.agency-hosting.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.8.1', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.9.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.agency-hosting.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.8.1', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.9.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.8.1', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '3.9.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.8.1', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '3.9.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.8.1', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '3.9.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.8.1', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '3.9.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.8.1', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '3.9.0', tools });
package/types.d.ts CHANGED
@@ -7019,6 +7019,12 @@ the contact will be created with a pending status and a confirmation email will
7019
7019
  * Existing tags to attach to the created contact
7020
7020
  */
7021
7021
  tag_uuids?: array;
7022
+ /**
7023
+ * Custom field values to set on the contact. When a contact with this email already exists,
7024
+ only fields that have no value yet are filled. Unknown field UUIDs and values that do not
7025
+ match the field type are skipped.
7026
+ */
7027
+ fields?: array;
7022
7028
  };
7023
7029
  response: any; // Response structure will depend on the API
7024
7030
  };
@@ -7117,9 +7123,10 @@ values, source and note with `GET /api/reach/v1/profiles/{profileUuid}/contacts/
7117
7123
  * Create many contacts in a profile in a single call.
7118
7124
 
7119
7125
  The contacts are imported in the background, so a success response means the import was
7120
- accepted rather than finished. Contacts whose email already exists in the profile are
7121
- left as they are. If double opt-in is enabled, new contacts start off pending and are
7122
- sent a confirmation email.
7126
+ accepted rather than finished. Contacts whose email already exists in the profile keep
7127
+ their current values; only the ones that are still empty, custom fields included, are
7128
+ filled in. If double opt-in is enabled, new contacts start off pending and are sent a
7129
+ confirmation email.
7123
7130
  */
7124
7131
  "reach_contacts_create-in-bulk": {
7125
7132
  params: {
@@ -7218,6 +7225,12 @@ and a confirmation email will be sent.
7218
7225
  * Existing tags to attach to the created contact
7219
7226
  */
7220
7227
  tag_uuids?: array;
7228
+ /**
7229
+ * Custom field values to set on the contact. When a contact with this email already exists,
7230
+ only fields that have no value yet are filled. Unknown field UUIDs and values that do not
7231
+ match the field type are skipped.
7232
+ */
7233
+ fields?: array;
7221
7234
  };
7222
7235
  response: any; // Response structure will depend on the API
7223
7236
  };