hostinger-api-mcp 1.34.0 → 1.35.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
@@ -69,14 +69,14 @@ pnpm update -g hostinger-api-mcp
69
69
 
70
70
  This package installs the following MCP server commands:
71
71
 
72
- - `hostinger-api-mcp` — unified server with every tool (314 total)
72
+ - `hostinger-api-mcp` — unified server with every tool (318 total)
73
73
  - `hostinger-agency-hosting-mcp` — 27 tools for agency-hosting
74
74
  - `hostinger-billing-mcp` — 9 tools for billing
75
75
  - `hostinger-dns-mcp` — 8 tools for dns
76
- - `hostinger-domains-mcp` — 38 tools for domains
76
+ - `hostinger-domains-mcp` — 40 tools for domains
77
77
  - `hostinger-ecommerce-mcp` — 12 tools for ecommerce
78
78
  - `hostinger-horizons-mcp` — 2 tools for horizons
79
- - `hostinger-hosting-mcp` — 48 tools for hosting
79
+ - `hostinger-hosting-mcp` — 50 tools for hosting
80
80
  - `hostinger-mail-mcp` — 38 tools for mail
81
81
  - `hostinger-reach-mcp` — 35 tools for reach
82
82
  - `hostinger-vps-mcp` — 62 tools for vps
@@ -684,6 +684,32 @@ Retrieve a list of pending and completed domain verifications.
684
684
  - **Method**: `GET`
685
685
  - **Path**: `/api/v2/direct/verifications/active`
686
686
 
687
+ #### domains_suggestDomainNamesFromADescriptionV1
688
+
689
+ Suggest available domain names based on a free-text description of your project.
690
+
691
+ Suggestions are generated by an AI model, so they differ between calls.
692
+
693
+ Endpoint has rate limit of 90 requests per minute.
694
+
695
+ Use this endpoint to find a domain name when you only know what the website is about.
696
+
697
+ - **Method**: `POST`
698
+ - **Path**: `/api/domains/v1/availability/alternatives-from-description`
699
+
700
+ #### domains_suggestDomainNamesFromADomainV1
701
+
702
+ Suggest available domain names based on a domain name you already have in mind.
703
+
704
+ Suggestions are generated by an AI model, so they differ between calls.
705
+
706
+ Endpoint has rate limit of 90 requests per minute.
707
+
708
+ Use this endpoint when the domain you wanted is taken and you need close alternatives.
709
+
710
+ - **Method**: `POST`
711
+ - **Path**: `/api/domains/v1/availability/alternatives-from-domain`
712
+
687
713
  #### domains_checkDomainAvailabilityV1
688
714
 
689
715
  Check availability of domain names across multiple TLDs.
@@ -692,7 +718,7 @@ Multiple TLDs can be checked at once.
692
718
  If you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.
693
719
  TLDs should be provided without leading dot (e.g. `com`, `net`, `org`).
694
720
 
695
- Endpoint has rate limit of 10 requests per minute.
721
+ Endpoint has rate limit of 90 requests per minute.
696
722
 
697
723
  Use this endpoint to verify domain availability before purchase.
698
724
 
@@ -1570,6 +1596,26 @@ Skip this verification when using Hostinger's free subdomains (*.hostingersite.c
1570
1596
  - **Method**: `POST`
1571
1597
  - **Path**: `/api/hosting/v1/domains/verify-ownership`
1572
1598
 
1599
+ #### hosting_listWebsiteFilesAndDirectoriesV1
1600
+
1601
+ List files and directories under a website's document root.
1602
+
1603
+ Use `directory` to browse a subdirectory relative to the document root. Symlinked entries
1604
+ are listed but never traversed into or resolved.
1605
+
1606
+ - **Method**: `GET`
1607
+ - **Path**: `/api/hosting/v1/accounts/{username}/domains/{domain}/files`
1608
+
1609
+ #### hosting_getWebsiteFileContentV1
1610
+
1611
+ Get a single file's content, relative to a website's document root.
1612
+
1613
+ Read-only; refuses symlinks, oversized files, non-text file types, and files identified as
1614
+ containing secrets (e.g. credential files) — none of these are returned by this endpoint.
1615
+
1616
+ - **Method**: `GET`
1617
+ - **Path**: `/api/hosting/v1/accounts/{username}/domains/{domain}/files/content`
1618
+
1573
1619
  #### hosting_listNodeJSBuildsV1
1574
1620
 
1575
1621
  Retrieve a paginated list of Node.js build processes for a specific website.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "1.34.0",
3
+ "version": "1.35.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.34.0",
3
+ "version": "1.35.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.34.0",
9
+ "version": "1.35.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "hostinger-api-mcp",
14
- "version": "1.34.0",
14
+ "version": "1.35.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.30.1
32
+ * Generated from OpenAPI spec version 1.32.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.30.1
55
+ * Generated from OpenAPI spec version 1.32.0
56
56
  */
57
57
  class MCPServer {
58
58
  private readonly name: string;
@@ -1791,9 +1791,67 @@ export default [
1791
1791
  ],
1792
1792
  "group": "domains"
1793
1793
  },
1794
+ {
1795
+ "name": "domains_suggestDomainNamesFromADescriptionV1",
1796
+ "description": "Suggest available domain names based on a free-text description of your project.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to find a domain name when you only know what the website is about.",
1797
+ "method": "POST",
1798
+ "path": "/api/domains/v1/availability/alternatives-from-description",
1799
+ "inputSchema": {
1800
+ "type": "object",
1801
+ "properties": {
1802
+ "description": {
1803
+ "type": "string",
1804
+ "description": "Free-text description of the project the domain is needed for"
1805
+ },
1806
+ "limit": {
1807
+ "type": "integer",
1808
+ "description": "Amount of domain names to suggest"
1809
+ }
1810
+ },
1811
+ "required": [
1812
+ "description",
1813
+ "limit"
1814
+ ]
1815
+ },
1816
+ "security": [
1817
+ {
1818
+ "apiToken": []
1819
+ }
1820
+ ],
1821
+ "group": "domains"
1822
+ },
1823
+ {
1824
+ "name": "domains_suggestDomainNamesFromADomainV1",
1825
+ "description": "Suggest available domain names based on a domain name you already have in mind.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint when the domain you wanted is taken and you need close alternatives.",
1826
+ "method": "POST",
1827
+ "path": "/api/domains/v1/availability/alternatives-from-domain",
1828
+ "inputSchema": {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "domain": {
1832
+ "type": "string",
1833
+ "description": "Domain name to base the suggestions on"
1834
+ },
1835
+ "limit": {
1836
+ "type": "integer",
1837
+ "description": "Amount of domain names to suggest"
1838
+ }
1839
+ },
1840
+ "required": [
1841
+ "domain",
1842
+ "limit"
1843
+ ]
1844
+ },
1845
+ "security": [
1846
+ {
1847
+ "apiToken": []
1848
+ }
1849
+ ],
1850
+ "group": "domains"
1851
+ },
1794
1852
  {
1795
1853
  "name": "domains_checkDomainAvailabilityV1",
1796
- "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 10 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
1854
+ "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
1797
1855
  "method": "POST",
1798
1856
  "path": "/api/domains/v1/availability",
1799
1857
  "inputSchema": {
@@ -4140,6 +4198,97 @@ export default [
4140
4198
  ],
4141
4199
  "group": "hosting"
4142
4200
  },
4201
+ {
4202
+ "name": "hosting_listWebsiteFilesAndDirectoriesV1",
4203
+ "description": "List files and directories under a website's document root.\n\nUse `directory` to browse a subdirectory relative to the document root. Symlinked entries\nare listed but never traversed into or resolved.",
4204
+ "method": "GET",
4205
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files",
4206
+ "inputSchema": {
4207
+ "type": "object",
4208
+ "properties": {
4209
+ "username": {
4210
+ "type": "string",
4211
+ "description": "username parameter"
4212
+ },
4213
+ "domain": {
4214
+ "type": "string",
4215
+ "description": "Domain name"
4216
+ },
4217
+ "directory": {
4218
+ "type": "string",
4219
+ "description": "Directory path to check"
4220
+ },
4221
+ "max_depth": {
4222
+ "type": "integer",
4223
+ "description": "How many directory levels deep to recurse."
4224
+ },
4225
+ "max_items": {
4226
+ "type": "integer",
4227
+ "description": "Max number of entries to return in this page."
4228
+ },
4229
+ "offset": {
4230
+ "type": "integer",
4231
+ "description": "Number of entries to skip. Page with offset + item count until reaching total_items."
4232
+ },
4233
+ "file_types": {
4234
+ "type": "string",
4235
+ "description": "Filter by entry type, e.g. file,directory. Array or comma-separated. Omit for all types."
4236
+ }
4237
+ },
4238
+ "required": [
4239
+ "username",
4240
+ "domain"
4241
+ ]
4242
+ },
4243
+ "security": [
4244
+ {
4245
+ "apiToken": []
4246
+ }
4247
+ ],
4248
+ "group": "hosting"
4249
+ },
4250
+ {
4251
+ "name": "hosting_getWebsiteFileContentV1",
4252
+ "description": "Get a single file's content, relative to a website's document root.\n\nRead-only; refuses symlinks, oversized files, non-text file types, and files identified as\ncontaining secrets (e.g. credential files) — none of these are returned by this endpoint.",
4253
+ "method": "GET",
4254
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files/content",
4255
+ "inputSchema": {
4256
+ "type": "object",
4257
+ "properties": {
4258
+ "username": {
4259
+ "type": "string",
4260
+ "description": "username parameter"
4261
+ },
4262
+ "domain": {
4263
+ "type": "string",
4264
+ "description": "Domain name"
4265
+ },
4266
+ "path": {
4267
+ "type": "string",
4268
+ "description": "File path, relative to the document root."
4269
+ },
4270
+ "from_line": {
4271
+ "type": "integer",
4272
+ "description": "Line offset to start reading from."
4273
+ },
4274
+ "max_lines": {
4275
+ "type": "integer",
4276
+ "description": "Max number of lines to return."
4277
+ }
4278
+ },
4279
+ "required": [
4280
+ "username",
4281
+ "domain",
4282
+ "path"
4283
+ ]
4284
+ },
4285
+ "security": [
4286
+ {
4287
+ "apiToken": []
4288
+ }
4289
+ ],
4290
+ "group": "hosting"
4291
+ },
4143
4292
  {
4144
4293
  "name": "hosting_listNodeJSBuildsV1",
4145
4294
  "description": "Retrieve a paginated list of Node.js build processes for a specific website.\n\nEach build represents a single run of the Node.js build pipeline. Use the `states`\nquery parameter to filter results by build state (pending, running, completed, failed).\nUse the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.",
@@ -1805,9 +1805,67 @@ const tools: OpenApiTool[] = [
1805
1805
  ],
1806
1806
  "group": "domains"
1807
1807
  },
1808
+ {
1809
+ "name": "domains_suggestDomainNamesFromADescriptionV1",
1810
+ "description": "Suggest available domain names based on a free-text description of your project.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to find a domain name when you only know what the website is about.",
1811
+ "method": "POST",
1812
+ "path": "/api/domains/v1/availability/alternatives-from-description",
1813
+ "inputSchema": {
1814
+ "type": "object",
1815
+ "properties": {
1816
+ "description": {
1817
+ "type": "string",
1818
+ "description": "Free-text description of the project the domain is needed for"
1819
+ },
1820
+ "limit": {
1821
+ "type": "integer",
1822
+ "description": "Amount of domain names to suggest"
1823
+ }
1824
+ },
1825
+ "required": [
1826
+ "description",
1827
+ "limit"
1828
+ ]
1829
+ },
1830
+ "security": [
1831
+ {
1832
+ "apiToken": []
1833
+ }
1834
+ ],
1835
+ "group": "domains"
1836
+ },
1837
+ {
1838
+ "name": "domains_suggestDomainNamesFromADomainV1",
1839
+ "description": "Suggest available domain names based on a domain name you already have in mind.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint when the domain you wanted is taken and you need close alternatives.",
1840
+ "method": "POST",
1841
+ "path": "/api/domains/v1/availability/alternatives-from-domain",
1842
+ "inputSchema": {
1843
+ "type": "object",
1844
+ "properties": {
1845
+ "domain": {
1846
+ "type": "string",
1847
+ "description": "Domain name to base the suggestions on"
1848
+ },
1849
+ "limit": {
1850
+ "type": "integer",
1851
+ "description": "Amount of domain names to suggest"
1852
+ }
1853
+ },
1854
+ "required": [
1855
+ "domain",
1856
+ "limit"
1857
+ ]
1858
+ },
1859
+ "security": [
1860
+ {
1861
+ "apiToken": []
1862
+ }
1863
+ ],
1864
+ "group": "domains"
1865
+ },
1808
1866
  {
1809
1867
  "name": "domains_checkDomainAvailabilityV1",
1810
- "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 10 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
1868
+ "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
1811
1869
  "method": "POST",
1812
1870
  "path": "/api/domains/v1/availability",
1813
1871
  "inputSchema": {
@@ -4154,6 +4212,97 @@ const tools: OpenApiTool[] = [
4154
4212
  ],
4155
4213
  "group": "hosting"
4156
4214
  },
4215
+ {
4216
+ "name": "hosting_listWebsiteFilesAndDirectoriesV1",
4217
+ "description": "List files and directories under a website's document root.\n\nUse `directory` to browse a subdirectory relative to the document root. Symlinked entries\nare listed but never traversed into or resolved.",
4218
+ "method": "GET",
4219
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files",
4220
+ "inputSchema": {
4221
+ "type": "object",
4222
+ "properties": {
4223
+ "username": {
4224
+ "type": "string",
4225
+ "description": "username parameter"
4226
+ },
4227
+ "domain": {
4228
+ "type": "string",
4229
+ "description": "Domain name"
4230
+ },
4231
+ "directory": {
4232
+ "type": "string",
4233
+ "description": "Directory path to check"
4234
+ },
4235
+ "max_depth": {
4236
+ "type": "integer",
4237
+ "description": "How many directory levels deep to recurse."
4238
+ },
4239
+ "max_items": {
4240
+ "type": "integer",
4241
+ "description": "Max number of entries to return in this page."
4242
+ },
4243
+ "offset": {
4244
+ "type": "integer",
4245
+ "description": "Number of entries to skip. Page with offset + item count until reaching total_items."
4246
+ },
4247
+ "file_types": {
4248
+ "type": "string",
4249
+ "description": "Filter by entry type, e.g. file,directory. Array or comma-separated. Omit for all types."
4250
+ }
4251
+ },
4252
+ "required": [
4253
+ "username",
4254
+ "domain"
4255
+ ]
4256
+ },
4257
+ "security": [
4258
+ {
4259
+ "apiToken": []
4260
+ }
4261
+ ],
4262
+ "group": "hosting"
4263
+ },
4264
+ {
4265
+ "name": "hosting_getWebsiteFileContentV1",
4266
+ "description": "Get a single file's content, relative to a website's document root.\n\nRead-only; refuses symlinks, oversized files, non-text file types, and files identified as\ncontaining secrets (e.g. credential files) — none of these are returned by this endpoint.",
4267
+ "method": "GET",
4268
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files/content",
4269
+ "inputSchema": {
4270
+ "type": "object",
4271
+ "properties": {
4272
+ "username": {
4273
+ "type": "string",
4274
+ "description": "username parameter"
4275
+ },
4276
+ "domain": {
4277
+ "type": "string",
4278
+ "description": "Domain name"
4279
+ },
4280
+ "path": {
4281
+ "type": "string",
4282
+ "description": "File path, relative to the document root."
4283
+ },
4284
+ "from_line": {
4285
+ "type": "integer",
4286
+ "description": "Line offset to start reading from."
4287
+ },
4288
+ "max_lines": {
4289
+ "type": "integer",
4290
+ "description": "Max number of lines to return."
4291
+ }
4292
+ },
4293
+ "required": [
4294
+ "username",
4295
+ "domain",
4296
+ "path"
4297
+ ]
4298
+ },
4299
+ "security": [
4300
+ {
4301
+ "apiToken": []
4302
+ }
4303
+ ],
4304
+ "group": "hosting"
4305
+ },
4157
4306
  {
4158
4307
  "name": "hosting_listNodeJSBuildsV1",
4159
4308
  "description": "Retrieve a paginated list of Node.js build processes for a specific website.\n\nEach build represents a single run of the Node.js build pipeline. Use the `states`\nquery parameter to filter results by build state (pending, running, completed, failed).\nUse the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.",
@@ -17,9 +17,67 @@ export default [
17
17
  ],
18
18
  "group": "domains"
19
19
  },
20
+ {
21
+ "name": "domains_suggestDomainNamesFromADescriptionV1",
22
+ "description": "Suggest available domain names based on a free-text description of your project.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to find a domain name when you only know what the website is about.",
23
+ "method": "POST",
24
+ "path": "/api/domains/v1/availability/alternatives-from-description",
25
+ "inputSchema": {
26
+ "type": "object",
27
+ "properties": {
28
+ "description": {
29
+ "type": "string",
30
+ "description": "Free-text description of the project the domain is needed for"
31
+ },
32
+ "limit": {
33
+ "type": "integer",
34
+ "description": "Amount of domain names to suggest"
35
+ }
36
+ },
37
+ "required": [
38
+ "description",
39
+ "limit"
40
+ ]
41
+ },
42
+ "security": [
43
+ {
44
+ "apiToken": []
45
+ }
46
+ ],
47
+ "group": "domains"
48
+ },
49
+ {
50
+ "name": "domains_suggestDomainNamesFromADomainV1",
51
+ "description": "Suggest available domain names based on a domain name you already have in mind.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint when the domain you wanted is taken and you need close alternatives.",
52
+ "method": "POST",
53
+ "path": "/api/domains/v1/availability/alternatives-from-domain",
54
+ "inputSchema": {
55
+ "type": "object",
56
+ "properties": {
57
+ "domain": {
58
+ "type": "string",
59
+ "description": "Domain name to base the suggestions on"
60
+ },
61
+ "limit": {
62
+ "type": "integer",
63
+ "description": "Amount of domain names to suggest"
64
+ }
65
+ },
66
+ "required": [
67
+ "domain",
68
+ "limit"
69
+ ]
70
+ },
71
+ "security": [
72
+ {
73
+ "apiToken": []
74
+ }
75
+ ],
76
+ "group": "domains"
77
+ },
20
78
  {
21
79
  "name": "domains_checkDomainAvailabilityV1",
22
- "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 10 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
80
+ "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
23
81
  "method": "POST",
24
82
  "path": "/api/domains/v1/availability",
25
83
  "inputSchema": {
@@ -31,9 +31,67 @@ const tools: OpenApiTool[] = [
31
31
  ],
32
32
  "group": "domains"
33
33
  },
34
+ {
35
+ "name": "domains_suggestDomainNamesFromADescriptionV1",
36
+ "description": "Suggest available domain names based on a free-text description of your project.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to find a domain name when you only know what the website is about.",
37
+ "method": "POST",
38
+ "path": "/api/domains/v1/availability/alternatives-from-description",
39
+ "inputSchema": {
40
+ "type": "object",
41
+ "properties": {
42
+ "description": {
43
+ "type": "string",
44
+ "description": "Free-text description of the project the domain is needed for"
45
+ },
46
+ "limit": {
47
+ "type": "integer",
48
+ "description": "Amount of domain names to suggest"
49
+ }
50
+ },
51
+ "required": [
52
+ "description",
53
+ "limit"
54
+ ]
55
+ },
56
+ "security": [
57
+ {
58
+ "apiToken": []
59
+ }
60
+ ],
61
+ "group": "domains"
62
+ },
63
+ {
64
+ "name": "domains_suggestDomainNamesFromADomainV1",
65
+ "description": "Suggest available domain names based on a domain name you already have in mind.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint when the domain you wanted is taken and you need close alternatives.",
66
+ "method": "POST",
67
+ "path": "/api/domains/v1/availability/alternatives-from-domain",
68
+ "inputSchema": {
69
+ "type": "object",
70
+ "properties": {
71
+ "domain": {
72
+ "type": "string",
73
+ "description": "Domain name to base the suggestions on"
74
+ },
75
+ "limit": {
76
+ "type": "integer",
77
+ "description": "Amount of domain names to suggest"
78
+ }
79
+ },
80
+ "required": [
81
+ "domain",
82
+ "limit"
83
+ ]
84
+ },
85
+ "security": [
86
+ {
87
+ "apiToken": []
88
+ }
89
+ ],
90
+ "group": "domains"
91
+ },
34
92
  {
35
93
  "name": "domains_checkDomainAvailabilityV1",
36
- "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 10 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
94
+ "description": "Check availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.",
37
95
  "method": "POST",
38
96
  "path": "/api/domains/v1/availability",
39
97
  "inputSchema": {
@@ -1046,6 +1046,97 @@ export default [
1046
1046
  ],
1047
1047
  "group": "hosting"
1048
1048
  },
1049
+ {
1050
+ "name": "hosting_listWebsiteFilesAndDirectoriesV1",
1051
+ "description": "List files and directories under a website's document root.\n\nUse `directory` to browse a subdirectory relative to the document root. Symlinked entries\nare listed but never traversed into or resolved.",
1052
+ "method": "GET",
1053
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files",
1054
+ "inputSchema": {
1055
+ "type": "object",
1056
+ "properties": {
1057
+ "username": {
1058
+ "type": "string",
1059
+ "description": "username parameter"
1060
+ },
1061
+ "domain": {
1062
+ "type": "string",
1063
+ "description": "Domain name"
1064
+ },
1065
+ "directory": {
1066
+ "type": "string",
1067
+ "description": "Directory path to check"
1068
+ },
1069
+ "max_depth": {
1070
+ "type": "integer",
1071
+ "description": "How many directory levels deep to recurse."
1072
+ },
1073
+ "max_items": {
1074
+ "type": "integer",
1075
+ "description": "Max number of entries to return in this page."
1076
+ },
1077
+ "offset": {
1078
+ "type": "integer",
1079
+ "description": "Number of entries to skip. Page with offset + item count until reaching total_items."
1080
+ },
1081
+ "file_types": {
1082
+ "type": "string",
1083
+ "description": "Filter by entry type, e.g. file,directory. Array or comma-separated. Omit for all types."
1084
+ }
1085
+ },
1086
+ "required": [
1087
+ "username",
1088
+ "domain"
1089
+ ]
1090
+ },
1091
+ "security": [
1092
+ {
1093
+ "apiToken": []
1094
+ }
1095
+ ],
1096
+ "group": "hosting"
1097
+ },
1098
+ {
1099
+ "name": "hosting_getWebsiteFileContentV1",
1100
+ "description": "Get a single file's content, relative to a website's document root.\n\nRead-only; refuses symlinks, oversized files, non-text file types, and files identified as\ncontaining secrets (e.g. credential files) — none of these are returned by this endpoint.",
1101
+ "method": "GET",
1102
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files/content",
1103
+ "inputSchema": {
1104
+ "type": "object",
1105
+ "properties": {
1106
+ "username": {
1107
+ "type": "string",
1108
+ "description": "username parameter"
1109
+ },
1110
+ "domain": {
1111
+ "type": "string",
1112
+ "description": "Domain name"
1113
+ },
1114
+ "path": {
1115
+ "type": "string",
1116
+ "description": "File path, relative to the document root."
1117
+ },
1118
+ "from_line": {
1119
+ "type": "integer",
1120
+ "description": "Line offset to start reading from."
1121
+ },
1122
+ "max_lines": {
1123
+ "type": "integer",
1124
+ "description": "Max number of lines to return."
1125
+ }
1126
+ },
1127
+ "required": [
1128
+ "username",
1129
+ "domain",
1130
+ "path"
1131
+ ]
1132
+ },
1133
+ "security": [
1134
+ {
1135
+ "apiToken": []
1136
+ }
1137
+ ],
1138
+ "group": "hosting"
1139
+ },
1049
1140
  {
1050
1141
  "name": "hosting_listNodeJSBuildsV1",
1051
1142
  "description": "Retrieve a paginated list of Node.js build processes for a specific website.\n\nEach build represents a single run of the Node.js build pipeline. Use the `states`\nquery parameter to filter results by build state (pending, running, completed, failed).\nUse the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.",
@@ -1060,6 +1060,97 @@ const tools: OpenApiTool[] = [
1060
1060
  ],
1061
1061
  "group": "hosting"
1062
1062
  },
1063
+ {
1064
+ "name": "hosting_listWebsiteFilesAndDirectoriesV1",
1065
+ "description": "List files and directories under a website's document root.\n\nUse `directory` to browse a subdirectory relative to the document root. Symlinked entries\nare listed but never traversed into or resolved.",
1066
+ "method": "GET",
1067
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files",
1068
+ "inputSchema": {
1069
+ "type": "object",
1070
+ "properties": {
1071
+ "username": {
1072
+ "type": "string",
1073
+ "description": "username parameter"
1074
+ },
1075
+ "domain": {
1076
+ "type": "string",
1077
+ "description": "Domain name"
1078
+ },
1079
+ "directory": {
1080
+ "type": "string",
1081
+ "description": "Directory path to check"
1082
+ },
1083
+ "max_depth": {
1084
+ "type": "integer",
1085
+ "description": "How many directory levels deep to recurse."
1086
+ },
1087
+ "max_items": {
1088
+ "type": "integer",
1089
+ "description": "Max number of entries to return in this page."
1090
+ },
1091
+ "offset": {
1092
+ "type": "integer",
1093
+ "description": "Number of entries to skip. Page with offset + item count until reaching total_items."
1094
+ },
1095
+ "file_types": {
1096
+ "type": "string",
1097
+ "description": "Filter by entry type, e.g. file,directory. Array or comma-separated. Omit for all types."
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "username",
1102
+ "domain"
1103
+ ]
1104
+ },
1105
+ "security": [
1106
+ {
1107
+ "apiToken": []
1108
+ }
1109
+ ],
1110
+ "group": "hosting"
1111
+ },
1112
+ {
1113
+ "name": "hosting_getWebsiteFileContentV1",
1114
+ "description": "Get a single file's content, relative to a website's document root.\n\nRead-only; refuses symlinks, oversized files, non-text file types, and files identified as\ncontaining secrets (e.g. credential files) — none of these are returned by this endpoint.",
1115
+ "method": "GET",
1116
+ "path": "/api/hosting/v1/accounts/{username}/domains/{domain}/files/content",
1117
+ "inputSchema": {
1118
+ "type": "object",
1119
+ "properties": {
1120
+ "username": {
1121
+ "type": "string",
1122
+ "description": "username parameter"
1123
+ },
1124
+ "domain": {
1125
+ "type": "string",
1126
+ "description": "Domain name"
1127
+ },
1128
+ "path": {
1129
+ "type": "string",
1130
+ "description": "File path, relative to the document root."
1131
+ },
1132
+ "from_line": {
1133
+ "type": "integer",
1134
+ "description": "Line offset to start reading from."
1135
+ },
1136
+ "max_lines": {
1137
+ "type": "integer",
1138
+ "description": "Max number of lines to return."
1139
+ }
1140
+ },
1141
+ "required": [
1142
+ "username",
1143
+ "domain",
1144
+ "path"
1145
+ ]
1146
+ },
1147
+ "security": [
1148
+ {
1149
+ "apiToken": []
1150
+ }
1151
+ ],
1152
+ "group": "hosting"
1153
+ },
1063
1154
  {
1064
1155
  "name": "hosting_listNodeJSBuildsV1",
1065
1156
  "description": "Retrieve a paginated list of Node.js build processes for a specific website.\n\nEach build represents a single run of the Node.js build pipeline. Use the `states`\nquery parameter to filter results by build state (pending, running, completed, failed).\nUse the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.",
@@ -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.34.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.35.0', 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.34.0', tools });
6
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '1.35.0', 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.34.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.35.0', 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.34.0', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '1.35.0', 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.34.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.35.0', 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.34.0', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.35.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: '1.34.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '1.35.0', tools });
package/types.d.ts CHANGED
@@ -1094,6 +1094,52 @@ If no matching RRs are found, they are created.
1094
1094
  response: any; // Response structure will depend on the API
1095
1095
  };
1096
1096
 
1097
+ /**
1098
+ * Suggest available domain names based on a free-text description of your project.
1099
+
1100
+ Suggestions are generated by an AI model, so they differ between calls.
1101
+
1102
+ Endpoint has rate limit of 90 requests per minute.
1103
+
1104
+ Use this endpoint to find a domain name when you only know what the website is about.
1105
+ */
1106
+ "domains_suggestDomainNamesFromADescriptionV1": {
1107
+ params: {
1108
+ /**
1109
+ * Free-text description of the project the domain is needed for
1110
+ */
1111
+ description: string;
1112
+ /**
1113
+ * Amount of domain names to suggest
1114
+ */
1115
+ limit: number;
1116
+ };
1117
+ response: any; // Response structure will depend on the API
1118
+ };
1119
+
1120
+ /**
1121
+ * Suggest available domain names based on a domain name you already have in mind.
1122
+
1123
+ Suggestions are generated by an AI model, so they differ between calls.
1124
+
1125
+ Endpoint has rate limit of 90 requests per minute.
1126
+
1127
+ Use this endpoint when the domain you wanted is taken and you need close alternatives.
1128
+ */
1129
+ "domains_suggestDomainNamesFromADomainV1": {
1130
+ params: {
1131
+ /**
1132
+ * Domain name to base the suggestions on
1133
+ */
1134
+ domain: string;
1135
+ /**
1136
+ * Amount of domain names to suggest
1137
+ */
1138
+ limit: number;
1139
+ };
1140
+ response: any; // Response structure will depend on the API
1141
+ };
1142
+
1097
1143
  /**
1098
1144
  * Check availability of domain names across multiple TLDs.
1099
1145
 
@@ -1101,7 +1147,7 @@ Multiple TLDs can be checked at once.
1101
1147
  If you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.
1102
1148
  TLDs should be provided without leading dot (e.g. `com`, `net`, `org`).
1103
1149
 
1104
- Endpoint has rate limit of 10 requests per minute.
1150
+ Endpoint has rate limit of 90 requests per minute.
1105
1151
 
1106
1152
  Use this endpoint to verify domain availability before purchase.
1107
1153
  */
@@ -2734,6 +2780,78 @@ Skip this verification when using Hostinger's free subdomains (*.hostingersite.c
2734
2780
  response: any; // Response structure will depend on the API
2735
2781
  };
2736
2782
 
2783
+ /**
2784
+ * List files and directories under a website's document root.
2785
+
2786
+ Use `directory` to browse a subdirectory relative to the document root. Symlinked entries
2787
+ are listed but never traversed into or resolved.
2788
+ */
2789
+ "hosting_listWebsiteFilesAndDirectoriesV1": {
2790
+ params: {
2791
+ /**
2792
+ * username parameter
2793
+ */
2794
+ username: string;
2795
+ /**
2796
+ * Domain name
2797
+ */
2798
+ domain: string;
2799
+ /**
2800
+ * Directory path to check
2801
+ */
2802
+ directory?: string;
2803
+ /**
2804
+ * How many directory levels deep to recurse.
2805
+ */
2806
+ max_depth?: number;
2807
+ /**
2808
+ * Max number of entries to return in this page.
2809
+ */
2810
+ max_items?: number;
2811
+ /**
2812
+ * Number of entries to skip. Page with offset + item count until reaching total_items.
2813
+ */
2814
+ offset?: number;
2815
+ /**
2816
+ * Filter by entry type, e.g. file,directory. Array or comma-separated. Omit for all types.
2817
+ */
2818
+ file_types?: string;
2819
+ };
2820
+ response: any; // Response structure will depend on the API
2821
+ };
2822
+
2823
+ /**
2824
+ * Get a single file's content, relative to a website's document root.
2825
+
2826
+ Read-only; refuses symlinks, oversized files, non-text file types, and files identified as
2827
+ containing secrets (e.g. credential files) — none of these are returned by this endpoint.
2828
+ */
2829
+ "hosting_getWebsiteFileContentV1": {
2830
+ params: {
2831
+ /**
2832
+ * username parameter
2833
+ */
2834
+ username: string;
2835
+ /**
2836
+ * Domain name
2837
+ */
2838
+ domain: string;
2839
+ /**
2840
+ * File path, relative to the document root.
2841
+ */
2842
+ path: string;
2843
+ /**
2844
+ * Line offset to start reading from.
2845
+ */
2846
+ from_line?: number;
2847
+ /**
2848
+ * Max number of lines to return.
2849
+ */
2850
+ max_lines?: number;
2851
+ };
2852
+ response: any; // Response structure will depend on the API
2853
+ };
2854
+
2737
2855
  /**
2738
2856
  * Retrieve a paginated list of Node.js build processes for a specific website.
2739
2857