hostinger-api-mcp 0.2.3 → 0.2.5

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,11 +49,11 @@ 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 (121 total)
52
+ - `hostinger-api-mcp` — unified server with every tool (129 total)
53
53
  - `hostinger-billing-mcp` — 7 tools for billing
54
54
  - `hostinger-dns-mcp` — 8 tools for dns
55
55
  - `hostinger-domains-mcp` — 18 tools for domains
56
- - `hostinger-hosting-mcp` — 16 tools for hosting
56
+ - `hostinger-hosting-mcp` — 24 tools for hosting
57
57
  - `hostinger-reach-mcp` — 10 tools for reach
58
58
  - `hostinger-vps-mcp` — 62 tools for vps
59
59
 
@@ -593,6 +593,33 @@ Retrieve logs for a specified JavaScript application deployment for debugging pu
593
593
  - **Method**: `custom`
594
594
  - **Path**: `custom`
595
595
 
596
+ #### hosting_listAccountDatabasesV1
597
+
598
+ Returns a paginated list of databases for the specified account.
599
+
600
+ Use the domain and is_assigned filters to find databases assigned to a specific domain.
601
+
602
+ - **Method**: `GET`
603
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases`
604
+
605
+ #### hosting_createAccountDatabaseV1
606
+
607
+ Creates a database with a database user and password for the specified account.
608
+
609
+ The database name and user are automatically prefixed with the account username when needed.
610
+
611
+ - **Method**: `POST`
612
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases`
613
+
614
+ #### hosting_deleteAccountDatabaseV1
615
+
616
+ Permanently deletes a database and its remote connections.
617
+
618
+ The database name must be the full name returned by the list databases endpoint.
619
+
620
+ - **Method**: `DELETE`
621
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}`
622
+
596
623
  #### hosting_listAvailableDatacentersV1
597
624
 
598
625
  Retrieve a list of datacenters available for setting up hosting plans
@@ -612,6 +639,35 @@ and you can always connect a custom domain to your site later.
612
639
  - **Method**: `POST`
613
640
  - **Path**: `/api/hosting/v1/domains/free-subdomains`
614
641
 
642
+ #### hosting_listWebsiteParkedDomainsV1
643
+
644
+ Retrieve all parked or alias domains created under the selected website.
645
+
646
+ Use this endpoint to inspect parked domain configuration for a specific website,
647
+ including the parent domain and root directory assigned to each parked domain.
648
+
649
+ - **Method**: `GET`
650
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains`
651
+
652
+ #### hosting_createWebsiteParkedDomainV1
653
+
654
+ Create a parked or alias domain for the selected website.
655
+
656
+ Provide a domain name or IP address to park on the website so it serves the same content
657
+ as the parent domain.
658
+
659
+ - **Method**: `POST`
660
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains`
661
+
662
+ #### hosting_deleteWebsiteParkedDomainV1
663
+
664
+ Delete an existing parked or alias domain from the selected website.
665
+
666
+ Use this endpoint to remove parked domains that are no longer needed.
667
+
668
+ - **Method**: `DELETE`
669
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains/{parkedDomain}`
670
+
615
671
  #### hosting_listWebsiteSubdomainsV1
616
672
 
617
673
  Retrieve all subdomains created under the selected website.
@@ -699,6 +755,43 @@ websites list endpoint to see when your new website becomes available.
699
755
  - **Method**: `POST`
700
756
  - **Path**: `/api/hosting/v1/websites`
701
757
 
758
+ #### hosting_installWordPressV1
759
+
760
+ Install WordPress on an existing website.
761
+
762
+ The website must already exist before calling this endpoint. To create a new
763
+ website first, use POST /api/hosting/v1/websites and poll
764
+ GET /api/hosting/v1/websites until it appears.
765
+
766
+ Call GET /api/hosting/v1/wordpress/installations filtered by username and
767
+ domain before proceeding to check whether WordPress is already installed on
768
+ the target domain/path. If WordPress already exists and `overwrite` is false
769
+ (the default), the async job will fail.
770
+
771
+ This operation is asynchronous: a successful response only means the install
772
+ job has been queued, not that WordPress is ready. Installation typically
773
+ takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered
774
+ by username and domain to track progress. When the installation appears in
775
+ that list, WordPress is ready.
776
+
777
+ - **Method**: `POST`
778
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/installations`
779
+
780
+ #### hosting_listWordPressInstallationsV1
781
+
782
+ List WordPress installations accessible to the authenticated client.
783
+
784
+ Use this endpoint to discover existing WordPress installations and to poll
785
+ for installation status after calling the install endpoint. When a newly
786
+ requested installation appears in this list, WordPress is ready. Filter by
787
+ username and domain to narrow results to a specific website.
788
+
789
+ Each installation includes a `valid` flag and, when invalid, a
790
+ `validationError` describing why.
791
+
792
+ - **Method**: `GET`
793
+ - **Path**: `/api/hosting/v1/wordpress/installations`
794
+
702
795
  ### `hostinger-reach-mcp`
703
796
 
704
797
  #### reach_deleteAContactV1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "MCP server for Hostinger API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@ const SECURITY_SCHEMES = {
29
29
 
30
30
  /**
31
31
  * MCP Server for Hostinger API
32
- * Generated from OpenAPI spec version 0.14.0
32
+ * Generated from OpenAPI spec version 0.17.0
33
33
  */
34
34
  class MCPServer {
35
35
  constructor({ name, version, tools }) {
@@ -47,7 +47,7 @@ const SECURITY_SCHEMES: Record<string, SecurityScheme> = {
47
47
 
48
48
  /**
49
49
  * MCP Server for Hostinger API
50
- * Generated from OpenAPI spec version 0.14.0
50
+ * Generated from OpenAPI spec version 0.17.0
51
51
  */
52
52
  class MCPServer {
53
53
  private readonly name: string;
@@ -1287,6 +1287,123 @@ export default [
1287
1287
  ],
1288
1288
  "group": "domains"
1289
1289
  },
1290
+ {
1291
+ "name": "hosting_listAccountDatabasesV1",
1292
+ "description": "Returns a paginated list of databases for the specified account.\n\nUse the domain and is_assigned filters to find databases assigned to a specific domain.",
1293
+ "method": "GET",
1294
+ "path": "/api/hosting/v1/accounts/{username}/databases",
1295
+ "inputSchema": {
1296
+ "type": "object",
1297
+ "properties": {
1298
+ "username": {
1299
+ "type": "string",
1300
+ "description": "username parameter"
1301
+ },
1302
+ "page": {
1303
+ "type": "integer",
1304
+ "description": "Page number"
1305
+ },
1306
+ "per_page": {
1307
+ "type": "integer",
1308
+ "description": "Number of items per page"
1309
+ },
1310
+ "domain": {
1311
+ "type": "string",
1312
+ "description": "Filter by domain name (exact match)"
1313
+ },
1314
+ "is_assigned": {
1315
+ "type": "boolean",
1316
+ "description": "When used with domain, return only databases assigned to that domain."
1317
+ },
1318
+ "search": {
1319
+ "type": "string",
1320
+ "description": "Search databases by name, user, or creation date."
1321
+ }
1322
+ },
1323
+ "required": [
1324
+ "username"
1325
+ ]
1326
+ },
1327
+ "security": [
1328
+ {
1329
+ "apiToken": []
1330
+ }
1331
+ ],
1332
+ "group": "hosting"
1333
+ },
1334
+ {
1335
+ "name": "hosting_createAccountDatabaseV1",
1336
+ "description": "Creates a database with a database user and password for the specified account.\n\nThe database name and user are automatically prefixed with the account username when needed.",
1337
+ "method": "POST",
1338
+ "path": "/api/hosting/v1/accounts/{username}/databases",
1339
+ "inputSchema": {
1340
+ "type": "object",
1341
+ "properties": {
1342
+ "username": {
1343
+ "type": "string",
1344
+ "description": "username parameter"
1345
+ },
1346
+ "name": {
1347
+ "type": "string",
1348
+ "description": "Database name. If the account username prefix is omitted, it is added automatically."
1349
+ },
1350
+ "user": {
1351
+ "type": "string",
1352
+ "description": "Database user. If the account username prefix is omitted, it is added automatically."
1353
+ },
1354
+ "password": {
1355
+ "type": "string",
1356
+ "description": "Database user password."
1357
+ },
1358
+ "website_domain": {
1359
+ "type": "string",
1360
+ "description": "Website domain assigned to the database."
1361
+ }
1362
+ },
1363
+ "required": [
1364
+ "username",
1365
+ "name",
1366
+ "user",
1367
+ "password",
1368
+ "website_domain"
1369
+ ]
1370
+ },
1371
+ "security": [
1372
+ {
1373
+ "apiToken": []
1374
+ }
1375
+ ],
1376
+ "group": "hosting"
1377
+ },
1378
+ {
1379
+ "name": "hosting_deleteAccountDatabaseV1",
1380
+ "description": "Permanently deletes a database and its remote connections.\n\nThe database name must be the full name returned by the list databases endpoint.",
1381
+ "method": "DELETE",
1382
+ "path": "/api/hosting/v1/accounts/{username}/databases/{name}",
1383
+ "inputSchema": {
1384
+ "type": "object",
1385
+ "properties": {
1386
+ "username": {
1387
+ "type": "string",
1388
+ "description": "username parameter"
1389
+ },
1390
+ "name": {
1391
+ "type": "string",
1392
+ "description": "Full database name as returned by the list databases endpoint."
1393
+ }
1394
+ },
1395
+ "required": [
1396
+ "username",
1397
+ "name"
1398
+ ]
1399
+ },
1400
+ "security": [
1401
+ {
1402
+ "apiToken": []
1403
+ }
1404
+ ],
1405
+ "group": "hosting"
1406
+ },
1290
1407
  {
1291
1408
  "name": "hosting_listAvailableDatacentersV1",
1292
1409
  "description": "Retrieve a list of datacenters available for setting up hosting plans\nbased on available datacenter capacity and hosting plan of your order.\nThe first item in the list is the best match for your specific order\nrequirements.",
@@ -1328,6 +1445,103 @@ export default [
1328
1445
  ],
1329
1446
  "group": "hosting"
1330
1447
  },
1448
+ {
1449
+ "name": "hosting_listWebsiteParkedDomainsV1",
1450
+ "description": "Retrieve all parked or alias domains created under the selected website.\n\nUse this endpoint to inspect parked domain configuration for a specific website,\nincluding the parent domain and root directory assigned to each parked domain.",
1451
+ "method": "GET",
1452
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains",
1453
+ "inputSchema": {
1454
+ "type": "object",
1455
+ "properties": {
1456
+ "username": {
1457
+ "type": "string",
1458
+ "description": "username parameter"
1459
+ },
1460
+ "domain": {
1461
+ "type": "string",
1462
+ "description": "Domain name"
1463
+ }
1464
+ },
1465
+ "required": [
1466
+ "username",
1467
+ "domain"
1468
+ ]
1469
+ },
1470
+ "security": [
1471
+ {
1472
+ "apiToken": []
1473
+ }
1474
+ ],
1475
+ "group": "hosting"
1476
+ },
1477
+ {
1478
+ "name": "hosting_createWebsiteParkedDomainV1",
1479
+ "description": "Create a parked or alias domain for the selected website.\n\nProvide a domain name or IP address to park on the website so it serves the same content\nas the parent domain.",
1480
+ "method": "POST",
1481
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains",
1482
+ "inputSchema": {
1483
+ "type": "object",
1484
+ "properties": {
1485
+ "username": {
1486
+ "type": "string",
1487
+ "description": "username parameter"
1488
+ },
1489
+ "domain": {
1490
+ "type": "string",
1491
+ "description": "Domain name"
1492
+ },
1493
+ "parked_domain": {
1494
+ "type": "string",
1495
+ "description": "Domain name or IP address to park on the selected website"
1496
+ }
1497
+ },
1498
+ "required": [
1499
+ "username",
1500
+ "domain",
1501
+ "parked_domain"
1502
+ ]
1503
+ },
1504
+ "security": [
1505
+ {
1506
+ "apiToken": []
1507
+ }
1508
+ ],
1509
+ "group": "hosting"
1510
+ },
1511
+ {
1512
+ "name": "hosting_deleteWebsiteParkedDomainV1",
1513
+ "description": "Delete an existing parked or alias domain from the selected website.\n\nUse this endpoint to remove parked domains that are no longer needed.",
1514
+ "method": "DELETE",
1515
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains/{parkedDomain}",
1516
+ "inputSchema": {
1517
+ "type": "object",
1518
+ "properties": {
1519
+ "username": {
1520
+ "type": "string",
1521
+ "description": "username parameter"
1522
+ },
1523
+ "domain": {
1524
+ "type": "string",
1525
+ "description": "Domain name"
1526
+ },
1527
+ "parkedDomain": {
1528
+ "type": "string",
1529
+ "description": "parkedDomain parameter"
1530
+ }
1531
+ },
1532
+ "required": [
1533
+ "username",
1534
+ "domain",
1535
+ "parkedDomain"
1536
+ ]
1537
+ },
1538
+ "security": [
1539
+ {
1540
+ "apiToken": []
1541
+ }
1542
+ ],
1543
+ "group": "hosting"
1544
+ },
1331
1545
  {
1332
1546
  "name": "hosting_listWebsiteSubdomainsV1",
1333
1547
  "description": "Retrieve all subdomains created under the selected website.\n\nUse this endpoint to inspect subdomain configuration for a specific website,\nincluding the parent domain and root directory assigned to each subdomain.",
@@ -1580,6 +1794,138 @@ export default [
1580
1794
  ],
1581
1795
  "group": "hosting"
1582
1796
  },
1797
+ {
1798
+ "name": "hosting_installWordPressV1",
1799
+ "description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
1800
+ "method": "POST",
1801
+ "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
1802
+ "inputSchema": {
1803
+ "type": "object",
1804
+ "properties": {
1805
+ "username": {
1806
+ "type": "string",
1807
+ "description": "username parameter"
1808
+ },
1809
+ "domain": {
1810
+ "type": "string",
1811
+ "description": "Domain of the existing website where WordPress will be installed"
1812
+ },
1813
+ "site_title": {
1814
+ "type": "string",
1815
+ "description": "Title of the WordPress site"
1816
+ },
1817
+ "language": {
1818
+ "type": "string",
1819
+ "description": "WordPress locale. Defaults to en_US when omitted."
1820
+ },
1821
+ "directory": {
1822
+ "type": "string",
1823
+ "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
1824
+ },
1825
+ "overwrite": {
1826
+ "type": "boolean",
1827
+ "description": "When false (default), does not replace an existing installation. If WordPress is already installed on the domain/path, the async install job fails unless true."
1828
+ },
1829
+ "auto_updates": {
1830
+ "type": "string",
1831
+ "description": "WordPress core auto-update policy",
1832
+ "enum": [
1833
+ "all",
1834
+ "none",
1835
+ "minor"
1836
+ ]
1837
+ },
1838
+ "version": {
1839
+ "type": "string",
1840
+ "description": "WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected."
1841
+ },
1842
+ "credentials": {
1843
+ "type": "object",
1844
+ "description": "WordPress admin credentials",
1845
+ "properties": {
1846
+ "email": {
1847
+ "type": "string",
1848
+ "description": "email parameter"
1849
+ },
1850
+ "login": {
1851
+ "type": "string",
1852
+ "description": "WordPress admin username"
1853
+ },
1854
+ "password": {
1855
+ "type": "string",
1856
+ "description": "password parameter"
1857
+ }
1858
+ },
1859
+ "required": [
1860
+ "email",
1861
+ "login",
1862
+ "password"
1863
+ ]
1864
+ },
1865
+ "database": {
1866
+ "type": "object",
1867
+ "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
1868
+ "properties": {
1869
+ "name": {
1870
+ "type": "string",
1871
+ "description": "Database name (username prefix added if missing)"
1872
+ },
1873
+ "password": {
1874
+ "type": "string",
1875
+ "description": "password parameter"
1876
+ }
1877
+ }
1878
+ }
1879
+ },
1880
+ "required": [
1881
+ "username",
1882
+ "domain",
1883
+ "site_title",
1884
+ "credentials"
1885
+ ]
1886
+ },
1887
+ "security": [
1888
+ {
1889
+ "apiToken": []
1890
+ }
1891
+ ],
1892
+ "group": "hosting"
1893
+ },
1894
+ {
1895
+ "name": "hosting_listWordPressInstallationsV1",
1896
+ "description": "List WordPress installations accessible to the authenticated client.\n\nUse this endpoint to discover existing WordPress installations and to poll\nfor installation status after calling the install endpoint. When a newly\nrequested installation appears in this list, WordPress is ready. Filter by\nusername and domain to narrow results to a specific website.\n\nEach installation includes a `valid` flag and, when invalid, a\n`validationError` describing why.",
1897
+ "method": "GET",
1898
+ "path": "/api/hosting/v1/wordpress/installations",
1899
+ "inputSchema": {
1900
+ "type": "object",
1901
+ "properties": {
1902
+ "username": {
1903
+ "type": "string",
1904
+ "description": "Filter by specific username"
1905
+ },
1906
+ "domain": {
1907
+ "type": "string",
1908
+ "description": "Filter by domain name (exact match)"
1909
+ },
1910
+ "ownership": {
1911
+ "type": "string",
1912
+ "description": "Filter by ownership type. Defaults to \"owned\". Use \"all\" to include both owned and managed installations.",
1913
+ "enum": [
1914
+ "owned",
1915
+ "managed",
1916
+ "all"
1917
+ ]
1918
+ }
1919
+ },
1920
+ "required": []
1921
+ },
1922
+ "security": [
1923
+ {
1924
+ "apiToken": []
1925
+ }
1926
+ ],
1927
+ "group": "hosting"
1928
+ },
1583
1929
  {
1584
1930
  "name": "reach_deleteAContactV1",
1585
1931
  "description": "Delete a contact with the specified UUID.\n\nThis endpoint permanently removes a contact from the email marketing system.",