hostinger-api-mcp 1.53.0 → 1.53.1

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
@@ -69,7 +69,7 @@ pnpm update -g @hostinger/mcp
69
69
 
70
70
  This package installs the following MCP server commands:
71
71
 
72
- - `hostinger-api-mcp` — unified server with every tool (372 total)
72
+ - `hostinger-api-mcp` — unified server with every tool (375 total)
73
73
  - `hostinger-agency-hosting-mcp` — 38 tools for agency-hosting
74
74
  - `hostinger-billing-mcp` — 9 tools for billing
75
75
  - `hostinger-dns-mcp` — 8 tools for dns
@@ -78,7 +78,7 @@ This package installs the following MCP server commands:
78
78
  - `hostinger-horizons-mcp` — 2 tools for horizons
79
79
  - `hostinger-hosting-mcp` — 58 tools for hosting
80
80
  - `hostinger-mail-mcp` — 38 tools for mail
81
- - `hostinger-reach-mcp` — 49 tools for reach
81
+ - `hostinger-reach-mcp` — 52 tools for reach
82
82
  - `hostinger-vps-mcp` — 63 tools for vps
83
83
  - `hostinger-wordpress-mcp` — 38 tools for wordpress
84
84
 
@@ -2661,6 +2661,17 @@ emails sent by automations or the double opt-in confirmations instead.
2661
2661
  - **Method**: `GET`
2662
2662
  - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns`
2663
2663
 
2664
+ #### reach_createADraftCampaignV1
2665
+
2666
+ Create a campaign in a profile.
2667
+
2668
+ The campaign is created as a draft, so nothing is sent and no contact is touched. It has no
2669
+ audience yet either - targeting and scheduling are not part of this request, the draft is
2670
+ finished and sent from the Reach interface.
2671
+
2672
+ - **Method**: `POST`
2673
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns`
2674
+
2664
2675
  #### reach_getCampaignPerformanceV1
2665
2676
 
2666
2677
  Get the performance of a campaign: delivery, opens, clicks and unsubscribes, with the
@@ -3155,6 +3166,28 @@ This endpoint returns all profiles available to the client, including their basi
3155
3166
  - **Method**: `GET`
3156
3167
  - **Path**: `/api/reach/v1/profiles`
3157
3168
 
3169
+ #### reach_listEmailTemplatesV1
3170
+
3171
+ Get a list of the email templates in a profile, most recently updated first.
3172
+
3173
+ Templates are the reusable email bodies a campaign is built from. The list is not paginated
3174
+ and only the metadata is returned - the template content itself is not exposed. Use the
3175
+ `uuid` of a template as the `template_uuid` when creating a campaign.
3176
+
3177
+ - **Method**: `GET`
3178
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/templates`
3179
+
3180
+ #### reach_createAnEmailTemplateV1
3181
+
3182
+ Create an email template in a profile.
3183
+
3184
+ The template holds the HTML body a campaign reuses, so it can be created before any
3185
+ campaign exists. Only the template metadata comes back - keep the returned `uuid` to
3186
+ reference it as the `template_uuid` of a campaign.
3187
+
3188
+ - **Method**: `POST`
3189
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/templates`
3190
+
3158
3191
  ### `hostinger-vps-mcp`
3159
3192
 
3160
3193
  #### VPS_getDataCenterListV1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.53.0",
3
+ "version": "1.53.1",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.53.0",
3
+ "version": "1.53.1",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.53.0",
9
+ "version": "1.53.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "1.53.0",
14
+ "version": "1.53.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -29,7 +29,7 @@ const SECURITY_SCHEMES = {
29
29
 
30
30
  /**
31
31
  * MCP Server for Hostinger API
32
- * Generated from OpenAPI spec version 1.46.2
32
+ * Generated from OpenAPI spec version 1.46.3
33
33
  */
34
34
  class MCPServer {
35
35
  constructor({ name, version, tools }) {
@@ -52,7 +52,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
52
52
 
53
53
  /**
54
54
  * MCP Server for Hostinger API
55
- * Generated from OpenAPI spec version 1.46.2
55
+ * Generated from OpenAPI spec version 1.46.3
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -9505,6 +9505,72 @@ export default [
9505
9505
  ],
9506
9506
  "group": "reach"
9507
9507
  },
9508
+ {
9509
+ "name": "reach_createADraftCampaignV1",
9510
+ "title": "Create a draft campaign",
9511
+ "annotations": {
9512
+ "title": "Create a draft campaign",
9513
+ "readOnlyHint": false,
9514
+ "destructiveHint": false
9515
+ },
9516
+ "description": "Create a campaign in a profile.\n\nThe campaign is created as a draft, so nothing is sent and no contact is touched. It has no\naudience yet either - targeting and scheduling are not part of this request, the draft is\nfinished and sent from the Reach interface.",
9517
+ "method": "POST",
9518
+ "path": "/api/reach/v1/profiles/{profileUuid}/campaigns",
9519
+ "inputSchema": {
9520
+ "type": "object",
9521
+ "properties": {
9522
+ "profileUuid": {
9523
+ "type": "string",
9524
+ "description": "Profile uuid parameter"
9525
+ },
9526
+ "sender_name": {
9527
+ "type": "string",
9528
+ "description": "From name shown to the recipients."
9529
+ },
9530
+ "sender_email": {
9531
+ "type": "string",
9532
+ "description": "From address of the campaign. Its domain has to be verified on the profile before\nthe campaign can be sent."
9533
+ },
9534
+ "title": {
9535
+ "type": "string",
9536
+ "description": "Name the campaign is listed under. Not shown to the recipients."
9537
+ },
9538
+ "subject": {
9539
+ "type": "string",
9540
+ "description": "Subject line of the email."
9541
+ },
9542
+ "template_uuid": {
9543
+ "type": "string",
9544
+ "description": "Template to send, as returned by the template endpoints. Can be left out and\nattached later, but the campaign cannot be sent without one."
9545
+ },
9546
+ "metadata": {
9547
+ "type": "object",
9548
+ "description": "Extra campaign fields. Any key outside the listed ones is rejected.",
9549
+ "properties": {
9550
+ "preheader": {
9551
+ "type": "string",
9552
+ "description": "Preview text shown after the subject line in the inbox."
9553
+ },
9554
+ "source": {
9555
+ "type": "string",
9556
+ "description": "Where the campaign was created from."
9557
+ }
9558
+ }
9559
+ }
9560
+ },
9561
+ "required": [
9562
+ "profileUuid",
9563
+ "sender_name",
9564
+ "sender_email"
9565
+ ]
9566
+ },
9567
+ "security": [
9568
+ {
9569
+ "apiToken": []
9570
+ }
9571
+ ],
9572
+ "group": "reach"
9573
+ },
9508
9574
  {
9509
9575
  "name": "reach_getCampaignPerformanceV1",
9510
9576
  "title": "Get campaign performance",
@@ -11546,6 +11612,75 @@ export default [
11546
11612
  ],
11547
11613
  "group": "reach"
11548
11614
  },
11615
+ {
11616
+ "name": "reach_listEmailTemplatesV1",
11617
+ "title": "List email templates",
11618
+ "annotations": {
11619
+ "title": "List email templates",
11620
+ "readOnlyHint": true,
11621
+ "destructiveHint": false
11622
+ },
11623
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
11624
+ "method": "GET",
11625
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
11626
+ "inputSchema": {
11627
+ "type": "object",
11628
+ "properties": {
11629
+ "profileUuid": {
11630
+ "type": "string",
11631
+ "description": "Profile uuid parameter"
11632
+ }
11633
+ },
11634
+ "required": [
11635
+ "profileUuid"
11636
+ ]
11637
+ },
11638
+ "security": [
11639
+ {
11640
+ "apiToken": []
11641
+ }
11642
+ ],
11643
+ "group": "reach"
11644
+ },
11645
+ {
11646
+ "name": "reach_createAnEmailTemplateV1",
11647
+ "title": "Create an email template",
11648
+ "annotations": {
11649
+ "title": "Create an email template",
11650
+ "readOnlyHint": false,
11651
+ "destructiveHint": false
11652
+ },
11653
+ "description": "Create an email template in a profile.\n\nThe template holds the HTML body a campaign reuses, so it can be created before any\ncampaign exists. Only the template metadata comes back - keep the returned `uuid` to\nreference it as the `template_uuid` of a campaign.",
11654
+ "method": "POST",
11655
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
11656
+ "inputSchema": {
11657
+ "type": "object",
11658
+ "properties": {
11659
+ "profileUuid": {
11660
+ "type": "string",
11661
+ "description": "Profile uuid parameter"
11662
+ },
11663
+ "template_content": {
11664
+ "type": "string",
11665
+ "description": "The email body as HTML. It is sanitised before it is stored, so the saved template\ncan differ from what was sent - inline any styles the email clients need and keep\nthe markup self-contained."
11666
+ },
11667
+ "title": {
11668
+ "type": "string",
11669
+ "description": "Name the template is listed under. Not shown to the recipients."
11670
+ }
11671
+ },
11672
+ "required": [
11673
+ "profileUuid",
11674
+ "template_content"
11675
+ ]
11676
+ },
11677
+ "security": [
11678
+ {
11679
+ "apiToken": []
11680
+ }
11681
+ ],
11682
+ "group": "reach"
11683
+ },
11549
11684
  {
11550
11685
  "name": "VPS_getDataCenterListV1",
11551
11686
  "title": "Get data center list",
@@ -9519,6 +9519,72 @@ const tools: OpenApiTool[] = [
9519
9519
  ],
9520
9520
  "group": "reach"
9521
9521
  },
9522
+ {
9523
+ "name": "reach_createADraftCampaignV1",
9524
+ "title": "Create a draft campaign",
9525
+ "annotations": {
9526
+ "title": "Create a draft campaign",
9527
+ "readOnlyHint": false,
9528
+ "destructiveHint": false
9529
+ },
9530
+ "description": "Create a campaign in a profile.\n\nThe campaign is created as a draft, so nothing is sent and no contact is touched. It has no\naudience yet either - targeting and scheduling are not part of this request, the draft is\nfinished and sent from the Reach interface.",
9531
+ "method": "POST",
9532
+ "path": "/api/reach/v1/profiles/{profileUuid}/campaigns",
9533
+ "inputSchema": {
9534
+ "type": "object",
9535
+ "properties": {
9536
+ "profileUuid": {
9537
+ "type": "string",
9538
+ "description": "Profile uuid parameter"
9539
+ },
9540
+ "sender_name": {
9541
+ "type": "string",
9542
+ "description": "From name shown to the recipients."
9543
+ },
9544
+ "sender_email": {
9545
+ "type": "string",
9546
+ "description": "From address of the campaign. Its domain has to be verified on the profile before\nthe campaign can be sent."
9547
+ },
9548
+ "title": {
9549
+ "type": "string",
9550
+ "description": "Name the campaign is listed under. Not shown to the recipients."
9551
+ },
9552
+ "subject": {
9553
+ "type": "string",
9554
+ "description": "Subject line of the email."
9555
+ },
9556
+ "template_uuid": {
9557
+ "type": "string",
9558
+ "description": "Template to send, as returned by the template endpoints. Can be left out and\nattached later, but the campaign cannot be sent without one."
9559
+ },
9560
+ "metadata": {
9561
+ "type": "object",
9562
+ "description": "Extra campaign fields. Any key outside the listed ones is rejected.",
9563
+ "properties": {
9564
+ "preheader": {
9565
+ "type": "string",
9566
+ "description": "Preview text shown after the subject line in the inbox."
9567
+ },
9568
+ "source": {
9569
+ "type": "string",
9570
+ "description": "Where the campaign was created from."
9571
+ }
9572
+ }
9573
+ }
9574
+ },
9575
+ "required": [
9576
+ "profileUuid",
9577
+ "sender_name",
9578
+ "sender_email"
9579
+ ]
9580
+ },
9581
+ "security": [
9582
+ {
9583
+ "apiToken": []
9584
+ }
9585
+ ],
9586
+ "group": "reach"
9587
+ },
9522
9588
  {
9523
9589
  "name": "reach_getCampaignPerformanceV1",
9524
9590
  "title": "Get campaign performance",
@@ -11560,6 +11626,75 @@ const tools: OpenApiTool[] = [
11560
11626
  ],
11561
11627
  "group": "reach"
11562
11628
  },
11629
+ {
11630
+ "name": "reach_listEmailTemplatesV1",
11631
+ "title": "List email templates",
11632
+ "annotations": {
11633
+ "title": "List email templates",
11634
+ "readOnlyHint": true,
11635
+ "destructiveHint": false
11636
+ },
11637
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
11638
+ "method": "GET",
11639
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
11640
+ "inputSchema": {
11641
+ "type": "object",
11642
+ "properties": {
11643
+ "profileUuid": {
11644
+ "type": "string",
11645
+ "description": "Profile uuid parameter"
11646
+ }
11647
+ },
11648
+ "required": [
11649
+ "profileUuid"
11650
+ ]
11651
+ },
11652
+ "security": [
11653
+ {
11654
+ "apiToken": []
11655
+ }
11656
+ ],
11657
+ "group": "reach"
11658
+ },
11659
+ {
11660
+ "name": "reach_createAnEmailTemplateV1",
11661
+ "title": "Create an email template",
11662
+ "annotations": {
11663
+ "title": "Create an email template",
11664
+ "readOnlyHint": false,
11665
+ "destructiveHint": false
11666
+ },
11667
+ "description": "Create an email template in a profile.\n\nThe template holds the HTML body a campaign reuses, so it can be created before any\ncampaign exists. Only the template metadata comes back - keep the returned `uuid` to\nreference it as the `template_uuid` of a campaign.",
11668
+ "method": "POST",
11669
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
11670
+ "inputSchema": {
11671
+ "type": "object",
11672
+ "properties": {
11673
+ "profileUuid": {
11674
+ "type": "string",
11675
+ "description": "Profile uuid parameter"
11676
+ },
11677
+ "template_content": {
11678
+ "type": "string",
11679
+ "description": "The email body as HTML. It is sanitised before it is stored, so the saved template\ncan differ from what was sent - inline any styles the email clients need and keep\nthe markup self-contained."
11680
+ },
11681
+ "title": {
11682
+ "type": "string",
11683
+ "description": "Name the template is listed under. Not shown to the recipients."
11684
+ }
11685
+ },
11686
+ "required": [
11687
+ "profileUuid",
11688
+ "template_content"
11689
+ ]
11690
+ },
11691
+ "security": [
11692
+ {
11693
+ "apiToken": []
11694
+ }
11695
+ ],
11696
+ "group": "reach"
11697
+ },
11563
11698
  {
11564
11699
  "name": "VPS_getDataCenterListV1",
11565
11700
  "title": "Get data center list",
@@ -226,6 +226,72 @@ export default [
226
226
  ],
227
227
  "group": "reach"
228
228
  },
229
+ {
230
+ "name": "reach_createADraftCampaignV1",
231
+ "title": "Create a draft campaign",
232
+ "annotations": {
233
+ "title": "Create a draft campaign",
234
+ "readOnlyHint": false,
235
+ "destructiveHint": false
236
+ },
237
+ "description": "Create a campaign in a profile.\n\nThe campaign is created as a draft, so nothing is sent and no contact is touched. It has no\naudience yet either - targeting and scheduling are not part of this request, the draft is\nfinished and sent from the Reach interface.",
238
+ "method": "POST",
239
+ "path": "/api/reach/v1/profiles/{profileUuid}/campaigns",
240
+ "inputSchema": {
241
+ "type": "object",
242
+ "properties": {
243
+ "profileUuid": {
244
+ "type": "string",
245
+ "description": "Profile uuid parameter"
246
+ },
247
+ "sender_name": {
248
+ "type": "string",
249
+ "description": "From name shown to the recipients."
250
+ },
251
+ "sender_email": {
252
+ "type": "string",
253
+ "description": "From address of the campaign. Its domain has to be verified on the profile before\nthe campaign can be sent."
254
+ },
255
+ "title": {
256
+ "type": "string",
257
+ "description": "Name the campaign is listed under. Not shown to the recipients."
258
+ },
259
+ "subject": {
260
+ "type": "string",
261
+ "description": "Subject line of the email."
262
+ },
263
+ "template_uuid": {
264
+ "type": "string",
265
+ "description": "Template to send, as returned by the template endpoints. Can be left out and\nattached later, but the campaign cannot be sent without one."
266
+ },
267
+ "metadata": {
268
+ "type": "object",
269
+ "description": "Extra campaign fields. Any key outside the listed ones is rejected.",
270
+ "properties": {
271
+ "preheader": {
272
+ "type": "string",
273
+ "description": "Preview text shown after the subject line in the inbox."
274
+ },
275
+ "source": {
276
+ "type": "string",
277
+ "description": "Where the campaign was created from."
278
+ }
279
+ }
280
+ }
281
+ },
282
+ "required": [
283
+ "profileUuid",
284
+ "sender_name",
285
+ "sender_email"
286
+ ]
287
+ },
288
+ "security": [
289
+ {
290
+ "apiToken": []
291
+ }
292
+ ],
293
+ "group": "reach"
294
+ },
229
295
  {
230
296
  "name": "reach_getCampaignPerformanceV1",
231
297
  "title": "Get campaign performance",
@@ -2266,5 +2332,74 @@ export default [
2266
2332
  }
2267
2333
  ],
2268
2334
  "group": "reach"
2335
+ },
2336
+ {
2337
+ "name": "reach_listEmailTemplatesV1",
2338
+ "title": "List email templates",
2339
+ "annotations": {
2340
+ "title": "List email templates",
2341
+ "readOnlyHint": true,
2342
+ "destructiveHint": false
2343
+ },
2344
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
2345
+ "method": "GET",
2346
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
2347
+ "inputSchema": {
2348
+ "type": "object",
2349
+ "properties": {
2350
+ "profileUuid": {
2351
+ "type": "string",
2352
+ "description": "Profile uuid parameter"
2353
+ }
2354
+ },
2355
+ "required": [
2356
+ "profileUuid"
2357
+ ]
2358
+ },
2359
+ "security": [
2360
+ {
2361
+ "apiToken": []
2362
+ }
2363
+ ],
2364
+ "group": "reach"
2365
+ },
2366
+ {
2367
+ "name": "reach_createAnEmailTemplateV1",
2368
+ "title": "Create an email template",
2369
+ "annotations": {
2370
+ "title": "Create an email template",
2371
+ "readOnlyHint": false,
2372
+ "destructiveHint": false
2373
+ },
2374
+ "description": "Create an email template in a profile.\n\nThe template holds the HTML body a campaign reuses, so it can be created before any\ncampaign exists. Only the template metadata comes back - keep the returned `uuid` to\nreference it as the `template_uuid` of a campaign.",
2375
+ "method": "POST",
2376
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
2377
+ "inputSchema": {
2378
+ "type": "object",
2379
+ "properties": {
2380
+ "profileUuid": {
2381
+ "type": "string",
2382
+ "description": "Profile uuid parameter"
2383
+ },
2384
+ "template_content": {
2385
+ "type": "string",
2386
+ "description": "The email body as HTML. It is sanitised before it is stored, so the saved template\ncan differ from what was sent - inline any styles the email clients need and keep\nthe markup self-contained."
2387
+ },
2388
+ "title": {
2389
+ "type": "string",
2390
+ "description": "Name the template is listed under. Not shown to the recipients."
2391
+ }
2392
+ },
2393
+ "required": [
2394
+ "profileUuid",
2395
+ "template_content"
2396
+ ]
2397
+ },
2398
+ "security": [
2399
+ {
2400
+ "apiToken": []
2401
+ }
2402
+ ],
2403
+ "group": "reach"
2269
2404
  }
2270
2405
  ];
@@ -240,6 +240,72 @@ const tools: OpenApiTool[] = [
240
240
  ],
241
241
  "group": "reach"
242
242
  },
243
+ {
244
+ "name": "reach_createADraftCampaignV1",
245
+ "title": "Create a draft campaign",
246
+ "annotations": {
247
+ "title": "Create a draft campaign",
248
+ "readOnlyHint": false,
249
+ "destructiveHint": false
250
+ },
251
+ "description": "Create a campaign in a profile.\n\nThe campaign is created as a draft, so nothing is sent and no contact is touched. It has no\naudience yet either - targeting and scheduling are not part of this request, the draft is\nfinished and sent from the Reach interface.",
252
+ "method": "POST",
253
+ "path": "/api/reach/v1/profiles/{profileUuid}/campaigns",
254
+ "inputSchema": {
255
+ "type": "object",
256
+ "properties": {
257
+ "profileUuid": {
258
+ "type": "string",
259
+ "description": "Profile uuid parameter"
260
+ },
261
+ "sender_name": {
262
+ "type": "string",
263
+ "description": "From name shown to the recipients."
264
+ },
265
+ "sender_email": {
266
+ "type": "string",
267
+ "description": "From address of the campaign. Its domain has to be verified on the profile before\nthe campaign can be sent."
268
+ },
269
+ "title": {
270
+ "type": "string",
271
+ "description": "Name the campaign is listed under. Not shown to the recipients."
272
+ },
273
+ "subject": {
274
+ "type": "string",
275
+ "description": "Subject line of the email."
276
+ },
277
+ "template_uuid": {
278
+ "type": "string",
279
+ "description": "Template to send, as returned by the template endpoints. Can be left out and\nattached later, but the campaign cannot be sent without one."
280
+ },
281
+ "metadata": {
282
+ "type": "object",
283
+ "description": "Extra campaign fields. Any key outside the listed ones is rejected.",
284
+ "properties": {
285
+ "preheader": {
286
+ "type": "string",
287
+ "description": "Preview text shown after the subject line in the inbox."
288
+ },
289
+ "source": {
290
+ "type": "string",
291
+ "description": "Where the campaign was created from."
292
+ }
293
+ }
294
+ }
295
+ },
296
+ "required": [
297
+ "profileUuid",
298
+ "sender_name",
299
+ "sender_email"
300
+ ]
301
+ },
302
+ "security": [
303
+ {
304
+ "apiToken": []
305
+ }
306
+ ],
307
+ "group": "reach"
308
+ },
243
309
  {
244
310
  "name": "reach_getCampaignPerformanceV1",
245
311
  "title": "Get campaign performance",
@@ -2280,6 +2346,75 @@ const tools: OpenApiTool[] = [
2280
2346
  }
2281
2347
  ],
2282
2348
  "group": "reach"
2349
+ },
2350
+ {
2351
+ "name": "reach_listEmailTemplatesV1",
2352
+ "title": "List email templates",
2353
+ "annotations": {
2354
+ "title": "List email templates",
2355
+ "readOnlyHint": true,
2356
+ "destructiveHint": false
2357
+ },
2358
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
2359
+ "method": "GET",
2360
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
2361
+ "inputSchema": {
2362
+ "type": "object",
2363
+ "properties": {
2364
+ "profileUuid": {
2365
+ "type": "string",
2366
+ "description": "Profile uuid parameter"
2367
+ }
2368
+ },
2369
+ "required": [
2370
+ "profileUuid"
2371
+ ]
2372
+ },
2373
+ "security": [
2374
+ {
2375
+ "apiToken": []
2376
+ }
2377
+ ],
2378
+ "group": "reach"
2379
+ },
2380
+ {
2381
+ "name": "reach_createAnEmailTemplateV1",
2382
+ "title": "Create an email template",
2383
+ "annotations": {
2384
+ "title": "Create an email template",
2385
+ "readOnlyHint": false,
2386
+ "destructiveHint": false
2387
+ },
2388
+ "description": "Create an email template in a profile.\n\nThe template holds the HTML body a campaign reuses, so it can be created before any\ncampaign exists. Only the template metadata comes back - keep the returned `uuid` to\nreference it as the `template_uuid` of a campaign.",
2389
+ "method": "POST",
2390
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates",
2391
+ "inputSchema": {
2392
+ "type": "object",
2393
+ "properties": {
2394
+ "profileUuid": {
2395
+ "type": "string",
2396
+ "description": "Profile uuid parameter"
2397
+ },
2398
+ "template_content": {
2399
+ "type": "string",
2400
+ "description": "The email body as HTML. It is sanitised before it is stored, so the saved template\ncan differ from what was sent - inline any styles the email clients need and keep\nthe markup self-contained."
2401
+ },
2402
+ "title": {
2403
+ "type": "string",
2404
+ "description": "Name the template is listed under. Not shown to the recipients."
2405
+ }
2406
+ },
2407
+ "required": [
2408
+ "profileUuid",
2409
+ "template_content"
2410
+ ]
2411
+ },
2412
+ "security": [
2413
+ {
2414
+ "apiToken": []
2415
+ }
2416
+ ],
2417
+ "group": "reach"
2283
2418
  }
2284
2419
  ];
2285
2420
  export default tools;
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/agency-hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/all.js';
5
5
 
6
- startServer({ name: 'hostinger-api-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/hosting.js';
5
5
 
6
- startServer({ name: 'hostinger-hosting-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.53.1', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '1.53.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.53.1', tools });
package/types.d.ts CHANGED
@@ -5425,6 +5425,49 @@ opt-in confirmations.
5425
5425
  response: any; // Response structure will depend on the API
5426
5426
  };
5427
5427
 
5428
+ /**
5429
+ * Create a campaign in a profile.
5430
+
5431
+ The campaign is created as a draft, so nothing is sent and no contact is touched. It has no
5432
+ audience yet either - targeting and scheduling are not part of this request, the draft is
5433
+ finished and sent from the Reach interface.
5434
+ */
5435
+ "reach_createADraftCampaignV1": {
5436
+ params: {
5437
+ /**
5438
+ * Profile uuid parameter
5439
+ */
5440
+ profileUuid: string;
5441
+ /**
5442
+ * From name shown to the recipients.
5443
+ */
5444
+ sender_name: string;
5445
+ /**
5446
+ * From address of the campaign. Its domain has to be verified on the profile before
5447
+ the campaign can be sent.
5448
+ */
5449
+ sender_email: string;
5450
+ /**
5451
+ * Name the campaign is listed under. Not shown to the recipients.
5452
+ */
5453
+ title?: string;
5454
+ /**
5455
+ * Subject line of the email.
5456
+ */
5457
+ subject?: string;
5458
+ /**
5459
+ * Template to send, as returned by the template endpoints. Can be left out and
5460
+ attached later, but the campaign cannot be sent without one.
5461
+ */
5462
+ template_uuid?: string;
5463
+ /**
5464
+ * Extra campaign fields. Any key outside the listed ones is rejected.
5465
+ */
5466
+ metadata?: object;
5467
+ };
5468
+ response: any; // Response structure will depend on the API
5469
+ };
5470
+
5428
5471
  /**
5429
5472
  * Get the performance of a campaign: delivery, opens, clicks and unsubscribes, with the
5430
5473
  matching rates.
@@ -6502,6 +6545,50 @@ not kept.
6502
6545
  response: any; // Response structure will depend on the API
6503
6546
  };
6504
6547
 
6548
+ /**
6549
+ * Get a list of the email templates in a profile, most recently updated first.
6550
+
6551
+ Templates are the reusable email bodies a campaign is built from. The list is not paginated
6552
+ and only the metadata is returned - the template content itself is not exposed. Use the
6553
+ `uuid` of a template as the `template_uuid` when creating a campaign.
6554
+ */
6555
+ "reach_listEmailTemplatesV1": {
6556
+ params: {
6557
+ /**
6558
+ * Profile uuid parameter
6559
+ */
6560
+ profileUuid: string;
6561
+ };
6562
+ response: any; // Response structure will depend on the API
6563
+ };
6564
+
6565
+ /**
6566
+ * Create an email template in a profile.
6567
+
6568
+ The template holds the HTML body a campaign reuses, so it can be created before any
6569
+ campaign exists. Only the template metadata comes back - keep the returned `uuid` to
6570
+ reference it as the `template_uuid` of a campaign.
6571
+ */
6572
+ "reach_createAnEmailTemplateV1": {
6573
+ params: {
6574
+ /**
6575
+ * Profile uuid parameter
6576
+ */
6577
+ profileUuid: string;
6578
+ /**
6579
+ * The email body as HTML. It is sanitised before it is stored, so the saved template
6580
+ can differ from what was sent - inline any styles the email clients need and keep
6581
+ the markup self-contained.
6582
+ */
6583
+ template_content: string;
6584
+ /**
6585
+ * Name the template is listed under. Not shown to the recipients.
6586
+ */
6587
+ title?: string;
6588
+ };
6589
+ response: any; // Response structure will depend on the API
6590
+ };
6591
+
6505
6592
  /**
6506
6593
  * Retrieve all available data centers.
6507
6594