hostinger-api-mcp 1.18.0 → 1.20.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/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 (248 total)
52
+ - `hostinger-api-mcp` — unified server with every tool (258 total)
53
53
  - `hostinger-agency-hosting-mcp` — 26 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` — 12 tools for mail
60
+ - `hostinger-mail-mcp` — 22 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
@@ -1547,6 +1547,39 @@ complete. The response returns before the removal finishes.
1547
1547
 
1548
1548
  ### `hostinger-mail-mcp`
1549
1549
 
1550
+ #### mail_createAPITokenV1
1551
+
1552
+ Create an API token for the given mail order. The token grants access
1553
+ to the [Hostinger Email API](https://api.mail.hostinger.com/), where
1554
+ you can provision and manage the mailboxes it is scoped to.
1555
+
1556
+ The plaintext token is returned only in this response, never again.
1557
+ A maximum of 10 tokens can exist per order. Use
1558
+ `scope.has_all_mailboxes` to cover all current and future mailboxes,
1559
+ or list specific mailboxes in `scope.mailbox_ids`.
1560
+
1561
+ - **Method**: `POST`
1562
+ - **Path**: `/api/mail/v1/orders/{orderId}/api-tokens`
1563
+
1564
+ #### mail_revokeAPITokenV1
1565
+
1566
+ Revoke an API token. The token immediately loses access to the
1567
+ [Hostinger Email API](https://api.mail.hostinger.com/). This action
1568
+ cannot be undone.
1569
+
1570
+ - **Method**: `DELETE`
1571
+ - **Path**: `/api/mail/v1/api-tokens/{tokenId}`
1572
+
1573
+ #### mail_listAPITokensV1
1574
+
1575
+ Retrieve a paginated list of
1576
+ [Hostinger Email API](https://api.mail.hostinger.com/) tokens across
1577
+ all your mail orders, optionally filtered by order. Plaintext tokens
1578
+ are never included; they are returned only when a token is created.
1579
+
1580
+ - **Method**: `GET`
1581
+ - **Path**: `/api/mail/v1/api-tokens`
1582
+
1550
1583
  #### mail_listAccessLogsV1
1551
1584
 
1552
1585
  Retrieve paginated access logs for the domain attached to the given
@@ -1657,6 +1690,68 @@ every delivery.
1657
1690
  - **Method**: `POST`
1658
1691
  - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/webhooks`
1659
1692
 
1693
+ #### mail_listWebhookDeliveryLogsV1
1694
+
1695
+ Retrieve a paginated list of webhook delivery logs for the given mail
1696
+ order, including delivery outcome, duration, and retry counts.
1697
+ Supports filtering by mailbox.
1698
+
1699
+ - **Method**: `GET`
1700
+ - **Path**: `/api/mail/v1/orders/{orderId}/webhooks/delivery-logs`
1701
+
1702
+ #### mail_getWebhookV1
1703
+
1704
+ Retrieve the details of a single webhook. The webhook secret is never
1705
+ included; it is returned only when a webhook is created or its secret
1706
+ is regenerated.
1707
+
1708
+ - **Method**: `GET`
1709
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
1710
+
1711
+ #### mail_deleteWebhookV1
1712
+
1713
+ Permanently delete a webhook. This action cannot be undone. After
1714
+ deletion the URL no longer receives event notifications.
1715
+
1716
+ - **Method**: `DELETE`
1717
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
1718
+
1719
+ #### mail_updateWebhookV1
1720
+
1721
+ Partially update a webhook. Only the fields included in the request
1722
+ body are changed; omitted fields retain their current values. Pass
1723
+ `"description": null` to clear the description.
1724
+
1725
+ - **Method**: `PATCH`
1726
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
1727
+
1728
+ #### mail_listWebhooksV1
1729
+
1730
+ Retrieve a paginated list of webhooks belonging to the given mail
1731
+ order. Supports filtering by mailbox and status. The webhook secret
1732
+ is never included; it is returned only when a webhook is created or
1733
+ its secret is regenerated.
1734
+
1735
+ - **Method**: `GET`
1736
+ - **Path**: `/api/mail/v1/orders/{orderId}/webhooks`
1737
+
1738
+ #### mail_regenerateWebhookSecretV1
1739
+
1740
+ Regenerate the secret of a webhook. The previous secret is
1741
+ immediately invalidated. The new secret is returned only in this
1742
+ response and is sent as a bearer token with every delivery.
1743
+
1744
+ - **Method**: `POST`
1745
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}/regenerate-secret`
1746
+
1747
+ #### mail_testWebhookV1
1748
+
1749
+ Send a test delivery to the webhook URL and return the result. Test
1750
+ requests are rate limited upstream.
1751
+
1752
+ - **Method**: `POST`
1753
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}/test`
1754
+
1660
1755
  ### `hostinger-reach-mcp`
1661
1756
 
1662
1757
  #### reach_deleteAContactV1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.18.0",
3
+ "version": "1.20.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.18.0",
3
+ "version": "1.20.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.18.0",
9
+ "version": "1.20.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "hostinger-api-mcp",
14
- "version": "1.18.0",
14
+ "version": "1.20.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.16.0
32
+ * Generated from OpenAPI spec version 1.18.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.16.0
55
+ * Generated from OpenAPI spec version 1.18.0
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -4247,6 +4247,111 @@ export default [
4247
4247
  ],
4248
4248
  "group": "hosting"
4249
4249
  },
4250
+ {
4251
+ "name": "mail_createAPITokenV1",
4252
+ "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`.",
4253
+ "method": "POST",
4254
+ "path": "/api/mail/v1/orders/{orderId}/api-tokens",
4255
+ "inputSchema": {
4256
+ "type": "object",
4257
+ "properties": {
4258
+ "orderId": {
4259
+ "type": "string",
4260
+ "description": "Order resource ID"
4261
+ },
4262
+ "name": {
4263
+ "type": "string",
4264
+ "description": "Human-readable label for this token"
4265
+ },
4266
+ "scope": {
4267
+ "type": "object",
4268
+ "description": "Mailbox scope this token can access",
4269
+ "properties": {
4270
+ "has_all_mailboxes": {
4271
+ "type": "boolean",
4272
+ "description": "Grant access to all current and future mailboxes of the order"
4273
+ },
4274
+ "mailbox_ids": {
4275
+ "type": "array",
4276
+ "description": "Required when `has_all_mailboxes` is false. Mailbox resource IDs of this order.",
4277
+ "items": {
4278
+ "type": "string",
4279
+ "description": "mailbox_ids parameter"
4280
+ }
4281
+ }
4282
+ },
4283
+ "required": [
4284
+ "has_all_mailboxes"
4285
+ ]
4286
+ }
4287
+ },
4288
+ "required": [
4289
+ "orderId",
4290
+ "name",
4291
+ "scope"
4292
+ ]
4293
+ },
4294
+ "security": [
4295
+ {
4296
+ "apiToken": []
4297
+ }
4298
+ ],
4299
+ "group": "mail"
4300
+ },
4301
+ {
4302
+ "name": "mail_revokeAPITokenV1",
4303
+ "description": "Revoke an API token. The token immediately loses access to the\n[Hostinger Email API](https://api.mail.hostinger.com/). This action\ncannot be undone.",
4304
+ "method": "DELETE",
4305
+ "path": "/api/mail/v1/api-tokens/{tokenId}",
4306
+ "inputSchema": {
4307
+ "type": "object",
4308
+ "properties": {
4309
+ "tokenId": {
4310
+ "type": "string",
4311
+ "description": "API token ID (returned when the token was created)"
4312
+ }
4313
+ },
4314
+ "required": [
4315
+ "tokenId"
4316
+ ]
4317
+ },
4318
+ "security": [
4319
+ {
4320
+ "apiToken": []
4321
+ }
4322
+ ],
4323
+ "group": "mail"
4324
+ },
4325
+ {
4326
+ "name": "mail_listAPITokensV1",
4327
+ "description": "Retrieve a paginated list of\n[Hostinger Email API](https://api.mail.hostinger.com/) tokens across\nall your mail orders, optionally filtered by order. Plaintext tokens\nare never included; they are returned only when a token is created.",
4328
+ "method": "GET",
4329
+ "path": "/api/mail/v1/api-tokens",
4330
+ "inputSchema": {
4331
+ "type": "object",
4332
+ "properties": {
4333
+ "order_id": {
4334
+ "type": "string",
4335
+ "description": "Filter tokens by order resource ID. Single value or comma-separated list."
4336
+ },
4337
+ "page": {
4338
+ "type": "integer",
4339
+ "description": "Page number"
4340
+ },
4341
+ "per_page": {
4342
+ "type": "integer",
4343
+ "description": "Number of items per page"
4344
+ }
4345
+ },
4346
+ "required": []
4347
+ },
4348
+ "security": [
4349
+ {
4350
+ "apiToken": []
4351
+ }
4352
+ ],
4353
+ "group": "mail"
4354
+ },
4250
4355
  {
4251
4356
  "name": "mail_listAccessLogsV1",
4252
4357
  "description": "Retrieve paginated access logs for the domain attached to the given\nmail order. Supports filtering by account, date range, protocol,\nstatus, and deletion flag. Results are sorted by timestamp descending.",
@@ -4829,6 +4934,239 @@ export default [
4829
4934
  ],
4830
4935
  "group": "mail"
4831
4936
  },
4937
+ {
4938
+ "name": "mail_listWebhookDeliveryLogsV1",
4939
+ "description": "Retrieve a paginated list of webhook delivery logs for the given mail\norder, including delivery outcome, duration, and retry counts.\nSupports filtering by mailbox.",
4940
+ "method": "GET",
4941
+ "path": "/api/mail/v1/orders/{orderId}/webhooks/delivery-logs",
4942
+ "inputSchema": {
4943
+ "type": "object",
4944
+ "properties": {
4945
+ "orderId": {
4946
+ "type": "string",
4947
+ "description": "Order resource ID"
4948
+ },
4949
+ "mailbox_id": {
4950
+ "type": "string",
4951
+ "description": "Filter by the mailbox resource ID the webhooks are attached to"
4952
+ },
4953
+ "page": {
4954
+ "type": "integer",
4955
+ "description": "Page number"
4956
+ },
4957
+ "per_page": {
4958
+ "type": "integer",
4959
+ "description": "Number of items per page"
4960
+ }
4961
+ },
4962
+ "required": [
4963
+ "orderId"
4964
+ ]
4965
+ },
4966
+ "security": [
4967
+ {
4968
+ "apiToken": []
4969
+ }
4970
+ ],
4971
+ "group": "mail"
4972
+ },
4973
+ {
4974
+ "name": "mail_getWebhookV1",
4975
+ "description": "Retrieve the details of a single webhook. The webhook secret is never\nincluded; it is returned only when a webhook is created or its secret\nis regenerated.",
4976
+ "method": "GET",
4977
+ "path": "/api/mail/v1/webhooks/{webhookId}",
4978
+ "inputSchema": {
4979
+ "type": "object",
4980
+ "properties": {
4981
+ "webhookId": {
4982
+ "type": "string",
4983
+ "description": "Webhook ID (returned when the webhook was created)"
4984
+ }
4985
+ },
4986
+ "required": [
4987
+ "webhookId"
4988
+ ]
4989
+ },
4990
+ "security": [
4991
+ {
4992
+ "apiToken": []
4993
+ }
4994
+ ],
4995
+ "group": "mail"
4996
+ },
4997
+ {
4998
+ "name": "mail_deleteWebhookV1",
4999
+ "description": "Permanently delete a webhook. This action cannot be undone. After\ndeletion the URL no longer receives event notifications.",
5000
+ "method": "DELETE",
5001
+ "path": "/api/mail/v1/webhooks/{webhookId}",
5002
+ "inputSchema": {
5003
+ "type": "object",
5004
+ "properties": {
5005
+ "webhookId": {
5006
+ "type": "string",
5007
+ "description": "Webhook ID (returned when the webhook was created)"
5008
+ }
5009
+ },
5010
+ "required": [
5011
+ "webhookId"
5012
+ ]
5013
+ },
5014
+ "security": [
5015
+ {
5016
+ "apiToken": []
5017
+ }
5018
+ ],
5019
+ "group": "mail"
5020
+ },
5021
+ {
5022
+ "name": "mail_updateWebhookV1",
5023
+ "description": "Partially update a webhook. Only the fields included in the request\nbody are changed; omitted fields retain their current values. Pass\n`\"description\": null` to clear the description.",
5024
+ "method": "PATCH",
5025
+ "path": "/api/mail/v1/webhooks/{webhookId}",
5026
+ "inputSchema": {
5027
+ "type": "object",
5028
+ "properties": {
5029
+ "webhookId": {
5030
+ "type": "string",
5031
+ "description": "Webhook ID (returned when the webhook was created)"
5032
+ },
5033
+ "name": {
5034
+ "type": "string",
5035
+ "description": "New human-readable name for the webhook"
5036
+ },
5037
+ "description": {
5038
+ "type": "string",
5039
+ "description": "New description, or null to clear it"
5040
+ },
5041
+ "events": {
5042
+ "type": "array",
5043
+ "description": "Replaces the full list of subscribed events",
5044
+ "items": {
5045
+ "type": "string",
5046
+ "description": "events parameter",
5047
+ "enum": [
5048
+ "message.received"
5049
+ ]
5050
+ }
5051
+ },
5052
+ "status": {
5053
+ "type": "string",
5054
+ "description": "New status for the webhook",
5055
+ "enum": [
5056
+ "active",
5057
+ "disabled",
5058
+ "paused"
5059
+ ]
5060
+ },
5061
+ "url": {
5062
+ "type": "string",
5063
+ "description": "New URL to deliver events to"
5064
+ }
5065
+ },
5066
+ "required": [
5067
+ "webhookId"
5068
+ ]
5069
+ },
5070
+ "security": [
5071
+ {
5072
+ "apiToken": []
5073
+ }
5074
+ ],
5075
+ "group": "mail"
5076
+ },
5077
+ {
5078
+ "name": "mail_listWebhooksV1",
5079
+ "description": "Retrieve a paginated list of webhooks belonging to the given mail\norder. Supports filtering by mailbox and status. The webhook secret\nis never included; it is returned only when a webhook is created or\nits secret is regenerated.",
5080
+ "method": "GET",
5081
+ "path": "/api/mail/v1/orders/{orderId}/webhooks",
5082
+ "inputSchema": {
5083
+ "type": "object",
5084
+ "properties": {
5085
+ "orderId": {
5086
+ "type": "string",
5087
+ "description": "Order resource ID"
5088
+ },
5089
+ "mailbox_id": {
5090
+ "type": "string",
5091
+ "description": "Filter by the mailbox resource ID the webhooks are attached to"
5092
+ },
5093
+ "status": {
5094
+ "type": "string",
5095
+ "description": "Filter webhooks by status",
5096
+ "enum": [
5097
+ "active",
5098
+ "disabled",
5099
+ "paused"
5100
+ ]
5101
+ },
5102
+ "page": {
5103
+ "type": "integer",
5104
+ "description": "Page number"
5105
+ },
5106
+ "per_page": {
5107
+ "type": "integer",
5108
+ "description": "Number of items per page"
5109
+ }
5110
+ },
5111
+ "required": [
5112
+ "orderId"
5113
+ ]
5114
+ },
5115
+ "security": [
5116
+ {
5117
+ "apiToken": []
5118
+ }
5119
+ ],
5120
+ "group": "mail"
5121
+ },
5122
+ {
5123
+ "name": "mail_regenerateWebhookSecretV1",
5124
+ "description": "Regenerate the secret of a webhook. The previous secret is\nimmediately invalidated. The new secret is returned only in this\nresponse and is sent as a bearer token with every delivery.",
5125
+ "method": "POST",
5126
+ "path": "/api/mail/v1/webhooks/{webhookId}/regenerate-secret",
5127
+ "inputSchema": {
5128
+ "type": "object",
5129
+ "properties": {
5130
+ "webhookId": {
5131
+ "type": "string",
5132
+ "description": "Webhook ID (returned when the webhook was created)"
5133
+ }
5134
+ },
5135
+ "required": [
5136
+ "webhookId"
5137
+ ]
5138
+ },
5139
+ "security": [
5140
+ {
5141
+ "apiToken": []
5142
+ }
5143
+ ],
5144
+ "group": "mail"
5145
+ },
5146
+ {
5147
+ "name": "mail_testWebhookV1",
5148
+ "description": "Send a test delivery to the webhook URL and return the result. Test\nrequests are rate limited upstream.",
5149
+ "method": "POST",
5150
+ "path": "/api/mail/v1/webhooks/{webhookId}/test",
5151
+ "inputSchema": {
5152
+ "type": "object",
5153
+ "properties": {
5154
+ "webhookId": {
5155
+ "type": "string",
5156
+ "description": "Webhook ID (returned when the webhook was created)"
5157
+ }
5158
+ },
5159
+ "required": [
5160
+ "webhookId"
5161
+ ]
5162
+ },
5163
+ "security": [
5164
+ {
5165
+ "apiToken": []
5166
+ }
5167
+ ],
5168
+ "group": "mail"
5169
+ },
4832
5170
  {
4833
5171
  "name": "reach_deleteAContactV1",
4834
5172
  "description": "Delete a contact with the specified UUID.\n\nThis endpoint permanently removes a contact from the email marketing system.",