hostinger-api-mcp 1.22.1 → 1.24.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.
@@ -117,3 +117,31 @@ jobs:
117
117
 
118
118
  - name: Publish to MCP Registry
119
119
  run: ./mcp-publisher publish
120
+
121
+ notify-failure:
122
+ needs: [release, publish-npmjs, release-github, publish-mcp]
123
+ if: failure()
124
+ runs-on: ubuntu-latest
125
+ steps:
126
+ - name: Notify Slack on release failure
127
+ uses: slackapi/slack-github-action@v2.1.0
128
+ with:
129
+ errors: true
130
+ webhook: ${{ secrets.PLATFORM_INCIDENT_SLACK_CHANNEL_WEBHOOK }}
131
+ webhook-type: incoming-webhook
132
+ payload: |
133
+ text: ":rotating_light: Release failed in ${{ github.repository }}"
134
+ blocks:
135
+ - type: section
136
+ text:
137
+ type: mrkdwn
138
+ text: |
139
+ :rotating_light: *Release failed:* `${{ github.repository }}`
140
+ *Commit:* <${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>
141
+ - type: actions
142
+ elements:
143
+ - type: button
144
+ text:
145
+ type: plain_text
146
+ text: "View failed run"
147
+ url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
package/README.md CHANGED
@@ -49,7 +49,7 @@ 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 (268 total)
52
+ - `hostinger-api-mcp` — unified server with every tool (275 total)
53
53
  - `hostinger-agency-hosting-mcp` — 27 tools for agency-hosting
54
54
  - `hostinger-billing-mcp` — 8 tools for billing
55
55
  - `hostinger-dns-mcp` — 8 tools for dns
@@ -57,7 +57,7 @@ This package installs the following MCP server commands:
57
57
  - `hostinger-ecommerce-mcp` — 12 tools for ecommerce
58
58
  - `hostinger-horizons-mcp` — 2 tools for horizons
59
59
  - `hostinger-hosting-mcp` — 48 tools for hosting
60
- - `hostinger-mail-mcp` — 31 tools for mail
60
+ - `hostinger-mail-mcp` — 38 tools for mail
61
61
  - `hostinger-reach-mcp` — 12 tools for reach
62
62
  - `hostinger-vps-mcp` — 62 tools for vps
63
63
  - `hostinger-wordpress-mcp` — 35 tools for wordpress
@@ -1554,6 +1554,31 @@ complete. The response returns before the removal finishes.
1554
1554
 
1555
1555
  ### `hostinger-mail-mcp`
1556
1556
 
1557
+ #### mail_createAliasV1
1558
+
1559
+ Create an alias for the given mailbox. The alias address is formed
1560
+ from the given local part and the domain of the mailbox. Messages
1561
+ sent to the alias are delivered to the mailbox.
1562
+
1563
+ - **Method**: `POST`
1564
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/aliases`
1565
+
1566
+ #### mail_deleteAliasV1
1567
+
1568
+ Delete an alias. Messages sent to the alias address are no longer
1569
+ delivered to the mailbox.
1570
+
1571
+ - **Method**: `DELETE`
1572
+ - **Path**: `/api/mail/v1/aliases/{aliasId}`
1573
+
1574
+ #### mail_listAliasesV1
1575
+
1576
+ Retrieve a paginated list of aliases across all mailboxes of a mail
1577
+ order.
1578
+
1579
+ - **Method**: `GET`
1580
+ - **Path**: `/api/mail/v1/orders/{orderId}/aliases`
1581
+
1557
1582
  #### mail_createAPITokenV1
1558
1583
 
1559
1584
  Create an API token for the given mail order. The token grants access
@@ -1622,6 +1647,40 @@ mail order.
1622
1647
  - **Method**: `GET`
1623
1648
  - **Path**: `/api/mail/v1/orders/{orderId}/autoreplies`
1624
1649
 
1650
+ #### mail_createCatchAllV1
1651
+
1652
+ Create a catch-all that routes all messages sent to unknown addresses
1653
+ of the domain to the given mailbox. The mailbox address receives a
1654
+ confirmation email and the catch-all becomes active only after it is
1655
+ confirmed. A domain can have only one catch-all.
1656
+
1657
+ - **Method**: `POST`
1658
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/catchalls`
1659
+
1660
+ #### mail_deleteCatchAllV1
1661
+
1662
+ Delete a catch-all. Messages sent to unknown addresses of the domain
1663
+ are no longer routed to the mailbox.
1664
+
1665
+ - **Method**: `DELETE`
1666
+ - **Path**: `/api/mail/v1/catchalls/{catchallId}`
1667
+
1668
+ #### mail_listCatchAllsV1
1669
+
1670
+ Retrieve a paginated list of catch-alls across all mailboxes of a
1671
+ mail order.
1672
+
1673
+ - **Method**: `GET`
1674
+ - **Path**: `/api/mail/v1/orders/{orderId}/catchalls`
1675
+
1676
+ #### mail_resendCatchAllConfirmationV1
1677
+
1678
+ Resend the confirmation email to the mailbox address of an
1679
+ unconfirmed catch-all.
1680
+
1681
+ - **Method**: `POST`
1682
+ - **Path**: `/api/mail/v1/catchalls/{catchallId}/confirmation/resend`
1683
+
1625
1684
  #### mail_createForwarderV1
1626
1685
 
1627
1686
  Create a forwarder from the given mailbox to the destination address.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.22.1",
3
+ "version": "1.24.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": "1.22.1",
3
+ "version": "1.24.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": "1.22.1",
9
+ "version": "1.24.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "hostinger-api-mcp",
14
- "version": "1.22.1",
14
+ "version": "1.24.0",
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.20.1
32
+ * Generated from OpenAPI spec version 1.22.0
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.20.1
55
+ * Generated from OpenAPI spec version 1.22.0
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -1197,7 +1197,8 @@ export default [
1197
1197
  "description": "Filter catalog items by category",
1198
1198
  "enum": [
1199
1199
  "DOMAIN",
1200
- "VPS"
1200
+ "VPS",
1201
+ "EMAIL"
1201
1202
  ]
1202
1203
  },
1203
1204
  "name": {
@@ -4273,6 +4274,91 @@ export default [
4273
4274
  ],
4274
4275
  "group": "hosting"
4275
4276
  },
4277
+ {
4278
+ "name": "mail_createAliasV1",
4279
+ "description": "Create an alias for the given mailbox. The alias address is formed\nfrom the given local part and the domain of the mailbox. Messages\nsent to the alias are delivered to the mailbox.",
4280
+ "method": "POST",
4281
+ "path": "/api/mail/v1/mailboxes/{mailboxId}/aliases",
4282
+ "inputSchema": {
4283
+ "type": "object",
4284
+ "properties": {
4285
+ "mailboxId": {
4286
+ "type": "string",
4287
+ "description": "Mailbox resource ID"
4288
+ },
4289
+ "local_part": {
4290
+ "type": "string",
4291
+ "description": "Local part of the alias address (the part before the @). The domain is taken from the mailbox. Case-insensitive and stored lowercase; must start and end with a letter or digit; single dots, underscores and hyphens are allowed in between."
4292
+ }
4293
+ },
4294
+ "required": [
4295
+ "mailboxId",
4296
+ "local_part"
4297
+ ]
4298
+ },
4299
+ "security": [
4300
+ {
4301
+ "apiToken": []
4302
+ }
4303
+ ],
4304
+ "group": "mail"
4305
+ },
4306
+ {
4307
+ "name": "mail_deleteAliasV1",
4308
+ "description": "Delete an alias. Messages sent to the alias address are no longer\ndelivered to the mailbox.",
4309
+ "method": "DELETE",
4310
+ "path": "/api/mail/v1/aliases/{aliasId}",
4311
+ "inputSchema": {
4312
+ "type": "object",
4313
+ "properties": {
4314
+ "aliasId": {
4315
+ "type": "string",
4316
+ "description": "Alias resource ID"
4317
+ }
4318
+ },
4319
+ "required": [
4320
+ "aliasId"
4321
+ ]
4322
+ },
4323
+ "security": [
4324
+ {
4325
+ "apiToken": []
4326
+ }
4327
+ ],
4328
+ "group": "mail"
4329
+ },
4330
+ {
4331
+ "name": "mail_listAliasesV1",
4332
+ "description": "Retrieve a paginated list of aliases across all mailboxes of a mail\norder.",
4333
+ "method": "GET",
4334
+ "path": "/api/mail/v1/orders/{orderId}/aliases",
4335
+ "inputSchema": {
4336
+ "type": "object",
4337
+ "properties": {
4338
+ "orderId": {
4339
+ "type": "string",
4340
+ "description": "Order resource ID"
4341
+ },
4342
+ "page": {
4343
+ "type": "integer",
4344
+ "description": "Page number"
4345
+ },
4346
+ "per_page": {
4347
+ "type": "integer",
4348
+ "description": "Number of items per page"
4349
+ }
4350
+ },
4351
+ "required": [
4352
+ "orderId"
4353
+ ]
4354
+ },
4355
+ "security": [
4356
+ {
4357
+ "apiToken": []
4358
+ }
4359
+ ],
4360
+ "group": "mail"
4361
+ },
4276
4362
  {
4277
4363
  "name": "mail_createAPITokenV1",
4278
4364
  "description": "Create an API token for the given mail order. The token grants access\nto the [Hostinger Email API](https://api.mail.hostinger.com/), where\nyou can provision and manage the mailboxes it is scoped to.\n\nThe plaintext token is returned only in this response, never again.\nA maximum of 10 tokens can exist per order. Use\n`scope.has_all_mailboxes` to cover all current and future mailboxes,\nor list specific mailboxes in `scope.mailbox_ids`.",
@@ -4526,6 +4612,110 @@ export default [
4526
4612
  ],
4527
4613
  "group": "mail"
4528
4614
  },
4615
+ {
4616
+ "name": "mail_createCatchAllV1",
4617
+ "description": "Create a catch-all that routes all messages sent to unknown addresses\nof the domain to the given mailbox. The mailbox address receives a\nconfirmation email and the catch-all becomes active only after it is\nconfirmed. A domain can have only one catch-all.",
4618
+ "method": "POST",
4619
+ "path": "/api/mail/v1/mailboxes/{mailboxId}/catchalls",
4620
+ "inputSchema": {
4621
+ "type": "object",
4622
+ "properties": {
4623
+ "mailboxId": {
4624
+ "type": "string",
4625
+ "description": "Mailbox resource ID"
4626
+ }
4627
+ },
4628
+ "required": [
4629
+ "mailboxId"
4630
+ ]
4631
+ },
4632
+ "security": [
4633
+ {
4634
+ "apiToken": []
4635
+ }
4636
+ ],
4637
+ "group": "mail"
4638
+ },
4639
+ {
4640
+ "name": "mail_deleteCatchAllV1",
4641
+ "description": "Delete a catch-all. Messages sent to unknown addresses of the domain\nare no longer routed to the mailbox.",
4642
+ "method": "DELETE",
4643
+ "path": "/api/mail/v1/catchalls/{catchallId}",
4644
+ "inputSchema": {
4645
+ "type": "object",
4646
+ "properties": {
4647
+ "catchallId": {
4648
+ "type": "string",
4649
+ "description": "Catch-all resource ID"
4650
+ }
4651
+ },
4652
+ "required": [
4653
+ "catchallId"
4654
+ ]
4655
+ },
4656
+ "security": [
4657
+ {
4658
+ "apiToken": []
4659
+ }
4660
+ ],
4661
+ "group": "mail"
4662
+ },
4663
+ {
4664
+ "name": "mail_listCatchAllsV1",
4665
+ "description": "Retrieve a paginated list of catch-alls across all mailboxes of a\nmail order.",
4666
+ "method": "GET",
4667
+ "path": "/api/mail/v1/orders/{orderId}/catchalls",
4668
+ "inputSchema": {
4669
+ "type": "object",
4670
+ "properties": {
4671
+ "orderId": {
4672
+ "type": "string",
4673
+ "description": "Order resource ID"
4674
+ },
4675
+ "page": {
4676
+ "type": "integer",
4677
+ "description": "Page number"
4678
+ },
4679
+ "per_page": {
4680
+ "type": "integer",
4681
+ "description": "Number of items per page"
4682
+ }
4683
+ },
4684
+ "required": [
4685
+ "orderId"
4686
+ ]
4687
+ },
4688
+ "security": [
4689
+ {
4690
+ "apiToken": []
4691
+ }
4692
+ ],
4693
+ "group": "mail"
4694
+ },
4695
+ {
4696
+ "name": "mail_resendCatchAllConfirmationV1",
4697
+ "description": "Resend the confirmation email to the mailbox address of an\nunconfirmed catch-all.",
4698
+ "method": "POST",
4699
+ "path": "/api/mail/v1/catchalls/{catchallId}/confirmation/resend",
4700
+ "inputSchema": {
4701
+ "type": "object",
4702
+ "properties": {
4703
+ "catchallId": {
4704
+ "type": "string",
4705
+ "description": "Catch-all resource ID"
4706
+ }
4707
+ },
4708
+ "required": [
4709
+ "catchallId"
4710
+ ]
4711
+ },
4712
+ "security": [
4713
+ {
4714
+ "apiToken": []
4715
+ }
4716
+ ],
4717
+ "group": "mail"
4718
+ },
4529
4719
  {
4530
4720
  "name": "mail_createForwarderV1",
4531
4721
  "description": "Create a forwarder from the given mailbox to the destination address.\nThe destination receives a confirmation email and forwarding becomes\nactive only after it is confirmed.",
@@ -1211,7 +1211,8 @@ const tools: OpenApiTool[] = [
1211
1211
  "description": "Filter catalog items by category",
1212
1212
  "enum": [
1213
1213
  "DOMAIN",
1214
- "VPS"
1214
+ "VPS",
1215
+ "EMAIL"
1215
1216
  ]
1216
1217
  },
1217
1218
  "name": {
@@ -4287,6 +4288,91 @@ const tools: OpenApiTool[] = [
4287
4288
  ],
4288
4289
  "group": "hosting"
4289
4290
  },
4291
+ {
4292
+ "name": "mail_createAliasV1",
4293
+ "description": "Create an alias for the given mailbox. The alias address is formed\nfrom the given local part and the domain of the mailbox. Messages\nsent to the alias are delivered to the mailbox.",
4294
+ "method": "POST",
4295
+ "path": "/api/mail/v1/mailboxes/{mailboxId}/aliases",
4296
+ "inputSchema": {
4297
+ "type": "object",
4298
+ "properties": {
4299
+ "mailboxId": {
4300
+ "type": "string",
4301
+ "description": "Mailbox resource ID"
4302
+ },
4303
+ "local_part": {
4304
+ "type": "string",
4305
+ "description": "Local part of the alias address (the part before the @). The domain is taken from the mailbox. Case-insensitive and stored lowercase; must start and end with a letter or digit; single dots, underscores and hyphens are allowed in between."
4306
+ }
4307
+ },
4308
+ "required": [
4309
+ "mailboxId",
4310
+ "local_part"
4311
+ ]
4312
+ },
4313
+ "security": [
4314
+ {
4315
+ "apiToken": []
4316
+ }
4317
+ ],
4318
+ "group": "mail"
4319
+ },
4320
+ {
4321
+ "name": "mail_deleteAliasV1",
4322
+ "description": "Delete an alias. Messages sent to the alias address are no longer\ndelivered to the mailbox.",
4323
+ "method": "DELETE",
4324
+ "path": "/api/mail/v1/aliases/{aliasId}",
4325
+ "inputSchema": {
4326
+ "type": "object",
4327
+ "properties": {
4328
+ "aliasId": {
4329
+ "type": "string",
4330
+ "description": "Alias resource ID"
4331
+ }
4332
+ },
4333
+ "required": [
4334
+ "aliasId"
4335
+ ]
4336
+ },
4337
+ "security": [
4338
+ {
4339
+ "apiToken": []
4340
+ }
4341
+ ],
4342
+ "group": "mail"
4343
+ },
4344
+ {
4345
+ "name": "mail_listAliasesV1",
4346
+ "description": "Retrieve a paginated list of aliases across all mailboxes of a mail\norder.",
4347
+ "method": "GET",
4348
+ "path": "/api/mail/v1/orders/{orderId}/aliases",
4349
+ "inputSchema": {
4350
+ "type": "object",
4351
+ "properties": {
4352
+ "orderId": {
4353
+ "type": "string",
4354
+ "description": "Order resource ID"
4355
+ },
4356
+ "page": {
4357
+ "type": "integer",
4358
+ "description": "Page number"
4359
+ },
4360
+ "per_page": {
4361
+ "type": "integer",
4362
+ "description": "Number of items per page"
4363
+ }
4364
+ },
4365
+ "required": [
4366
+ "orderId"
4367
+ ]
4368
+ },
4369
+ "security": [
4370
+ {
4371
+ "apiToken": []
4372
+ }
4373
+ ],
4374
+ "group": "mail"
4375
+ },
4290
4376
  {
4291
4377
  "name": "mail_createAPITokenV1",
4292
4378
  "description": "Create an API token for the given mail order. The token grants access\nto the [Hostinger Email API](https://api.mail.hostinger.com/), where\nyou can provision and manage the mailboxes it is scoped to.\n\nThe plaintext token is returned only in this response, never again.\nA maximum of 10 tokens can exist per order. Use\n`scope.has_all_mailboxes` to cover all current and future mailboxes,\nor list specific mailboxes in `scope.mailbox_ids`.",
@@ -4540,6 +4626,110 @@ const tools: OpenApiTool[] = [
4540
4626
  ],
4541
4627
  "group": "mail"
4542
4628
  },
4629
+ {
4630
+ "name": "mail_createCatchAllV1",
4631
+ "description": "Create a catch-all that routes all messages sent to unknown addresses\nof the domain to the given mailbox. The mailbox address receives a\nconfirmation email and the catch-all becomes active only after it is\nconfirmed. A domain can have only one catch-all.",
4632
+ "method": "POST",
4633
+ "path": "/api/mail/v1/mailboxes/{mailboxId}/catchalls",
4634
+ "inputSchema": {
4635
+ "type": "object",
4636
+ "properties": {
4637
+ "mailboxId": {
4638
+ "type": "string",
4639
+ "description": "Mailbox resource ID"
4640
+ }
4641
+ },
4642
+ "required": [
4643
+ "mailboxId"
4644
+ ]
4645
+ },
4646
+ "security": [
4647
+ {
4648
+ "apiToken": []
4649
+ }
4650
+ ],
4651
+ "group": "mail"
4652
+ },
4653
+ {
4654
+ "name": "mail_deleteCatchAllV1",
4655
+ "description": "Delete a catch-all. Messages sent to unknown addresses of the domain\nare no longer routed to the mailbox.",
4656
+ "method": "DELETE",
4657
+ "path": "/api/mail/v1/catchalls/{catchallId}",
4658
+ "inputSchema": {
4659
+ "type": "object",
4660
+ "properties": {
4661
+ "catchallId": {
4662
+ "type": "string",
4663
+ "description": "Catch-all resource ID"
4664
+ }
4665
+ },
4666
+ "required": [
4667
+ "catchallId"
4668
+ ]
4669
+ },
4670
+ "security": [
4671
+ {
4672
+ "apiToken": []
4673
+ }
4674
+ ],
4675
+ "group": "mail"
4676
+ },
4677
+ {
4678
+ "name": "mail_listCatchAllsV1",
4679
+ "description": "Retrieve a paginated list of catch-alls across all mailboxes of a\nmail order.",
4680
+ "method": "GET",
4681
+ "path": "/api/mail/v1/orders/{orderId}/catchalls",
4682
+ "inputSchema": {
4683
+ "type": "object",
4684
+ "properties": {
4685
+ "orderId": {
4686
+ "type": "string",
4687
+ "description": "Order resource ID"
4688
+ },
4689
+ "page": {
4690
+ "type": "integer",
4691
+ "description": "Page number"
4692
+ },
4693
+ "per_page": {
4694
+ "type": "integer",
4695
+ "description": "Number of items per page"
4696
+ }
4697
+ },
4698
+ "required": [
4699
+ "orderId"
4700
+ ]
4701
+ },
4702
+ "security": [
4703
+ {
4704
+ "apiToken": []
4705
+ }
4706
+ ],
4707
+ "group": "mail"
4708
+ },
4709
+ {
4710
+ "name": "mail_resendCatchAllConfirmationV1",
4711
+ "description": "Resend the confirmation email to the mailbox address of an\nunconfirmed catch-all.",
4712
+ "method": "POST",
4713
+ "path": "/api/mail/v1/catchalls/{catchallId}/confirmation/resend",
4714
+ "inputSchema": {
4715
+ "type": "object",
4716
+ "properties": {
4717
+ "catchallId": {
4718
+ "type": "string",
4719
+ "description": "Catch-all resource ID"
4720
+ }
4721
+ },
4722
+ "required": [
4723
+ "catchallId"
4724
+ ]
4725
+ },
4726
+ "security": [
4727
+ {
4728
+ "apiToken": []
4729
+ }
4730
+ ],
4731
+ "group": "mail"
4732
+ },
4543
4733
  {
4544
4734
  "name": "mail_createForwarderV1",
4545
4735
  "description": "Create a forwarder from the given mailbox to the destination address.\nThe destination receives a confirmation email and forwarding becomes\nactive only after it is confirmed.",
@@ -13,7 +13,8 @@ export default [
13
13
  "description": "Filter catalog items by category",
14
14
  "enum": [
15
15
  "DOMAIN",
16
- "VPS"
16
+ "VPS",
17
+ "EMAIL"
17
18
  ]
18
19
  },
19
20
  "name": {
@@ -27,7 +27,8 @@ const tools: OpenApiTool[] = [
27
27
  "description": "Filter catalog items by category",
28
28
  "enum": [
29
29
  "DOMAIN",
30
- "VPS"
30
+ "VPS",
31
+ "EMAIL"
31
32
  ]
32
33
  },
33
34
  "name": {