hostinger-api-mcp 0.2.4 → 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 (127 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` — 22 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
 
@@ -755,6 +755,43 @@ websites list endpoint to see when your new website becomes available.
755
755
  - **Method**: `POST`
756
756
  - **Path**: `/api/hosting/v1/websites`
757
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
+
758
795
  ### `hostinger-reach-mcp`
759
796
 
760
797
  #### reach_deleteAContactV1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "0.2.4",
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.16.1
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.16.1
50
+ * Generated from OpenAPI spec version 0.17.0
51
51
  */
52
52
  class MCPServer {
53
53
  private readonly name: string;
@@ -1794,6 +1794,138 @@ export default [
1794
1794
  ],
1795
1795
  "group": "hosting"
1796
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
+ },
1797
1929
  {
1798
1930
  "name": "reach_deleteAContactV1",
1799
1931
  "description": "Delete a contact with the specified UUID.\n\nThis endpoint permanently removes a contact from the email marketing system.",
@@ -1804,6 +1804,138 @@ const tools: OpenApiTool[] = [
1804
1804
  ],
1805
1805
  "group": "hosting"
1806
1806
  },
1807
+ {
1808
+ "name": "hosting_installWordPressV1",
1809
+ "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.",
1810
+ "method": "POST",
1811
+ "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
1812
+ "inputSchema": {
1813
+ "type": "object",
1814
+ "properties": {
1815
+ "username": {
1816
+ "type": "string",
1817
+ "description": "username parameter"
1818
+ },
1819
+ "domain": {
1820
+ "type": "string",
1821
+ "description": "Domain of the existing website where WordPress will be installed"
1822
+ },
1823
+ "site_title": {
1824
+ "type": "string",
1825
+ "description": "Title of the WordPress site"
1826
+ },
1827
+ "language": {
1828
+ "type": "string",
1829
+ "description": "WordPress locale. Defaults to en_US when omitted."
1830
+ },
1831
+ "directory": {
1832
+ "type": "string",
1833
+ "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
1834
+ },
1835
+ "overwrite": {
1836
+ "type": "boolean",
1837
+ "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."
1838
+ },
1839
+ "auto_updates": {
1840
+ "type": "string",
1841
+ "description": "WordPress core auto-update policy",
1842
+ "enum": [
1843
+ "all",
1844
+ "none",
1845
+ "minor"
1846
+ ]
1847
+ },
1848
+ "version": {
1849
+ "type": "string",
1850
+ "description": "WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected."
1851
+ },
1852
+ "credentials": {
1853
+ "type": "object",
1854
+ "description": "WordPress admin credentials",
1855
+ "properties": {
1856
+ "email": {
1857
+ "type": "string",
1858
+ "description": "email parameter"
1859
+ },
1860
+ "login": {
1861
+ "type": "string",
1862
+ "description": "WordPress admin username"
1863
+ },
1864
+ "password": {
1865
+ "type": "string",
1866
+ "description": "password parameter"
1867
+ }
1868
+ },
1869
+ "required": [
1870
+ "email",
1871
+ "login",
1872
+ "password"
1873
+ ]
1874
+ },
1875
+ "database": {
1876
+ "type": "object",
1877
+ "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.",
1878
+ "properties": {
1879
+ "name": {
1880
+ "type": "string",
1881
+ "description": "Database name (username prefix added if missing)"
1882
+ },
1883
+ "password": {
1884
+ "type": "string",
1885
+ "description": "password parameter"
1886
+ }
1887
+ }
1888
+ }
1889
+ },
1890
+ "required": [
1891
+ "username",
1892
+ "domain",
1893
+ "site_title",
1894
+ "credentials"
1895
+ ]
1896
+ },
1897
+ "security": [
1898
+ {
1899
+ "apiToken": []
1900
+ }
1901
+ ],
1902
+ "group": "hosting"
1903
+ },
1904
+ {
1905
+ "name": "hosting_listWordPressInstallationsV1",
1906
+ "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.",
1907
+ "method": "GET",
1908
+ "path": "/api/hosting/v1/wordpress/installations",
1909
+ "inputSchema": {
1910
+ "type": "object",
1911
+ "properties": {
1912
+ "username": {
1913
+ "type": "string",
1914
+ "description": "Filter by specific username"
1915
+ },
1916
+ "domain": {
1917
+ "type": "string",
1918
+ "description": "Filter by domain name (exact match)"
1919
+ },
1920
+ "ownership": {
1921
+ "type": "string",
1922
+ "description": "Filter by ownership type. Defaults to \"owned\". Use \"all\" to include both owned and managed installations.",
1923
+ "enum": [
1924
+ "owned",
1925
+ "managed",
1926
+ "all"
1927
+ ]
1928
+ }
1929
+ },
1930
+ "required": []
1931
+ },
1932
+ "security": [
1933
+ {
1934
+ "apiToken": []
1935
+ }
1936
+ ],
1937
+ "group": "hosting"
1938
+ },
1807
1939
  {
1808
1940
  "name": "reach_deleteAContactV1",
1809
1941
  "description": "Delete a contact with the specified UUID.\n\nThis endpoint permanently removes a contact from the email marketing system.",
@@ -763,5 +763,137 @@ export default [
763
763
  }
764
764
  ],
765
765
  "group": "hosting"
766
+ },
767
+ {
768
+ "name": "hosting_installWordPressV1",
769
+ "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.",
770
+ "method": "POST",
771
+ "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
772
+ "inputSchema": {
773
+ "type": "object",
774
+ "properties": {
775
+ "username": {
776
+ "type": "string",
777
+ "description": "username parameter"
778
+ },
779
+ "domain": {
780
+ "type": "string",
781
+ "description": "Domain of the existing website where WordPress will be installed"
782
+ },
783
+ "site_title": {
784
+ "type": "string",
785
+ "description": "Title of the WordPress site"
786
+ },
787
+ "language": {
788
+ "type": "string",
789
+ "description": "WordPress locale. Defaults to en_US when omitted."
790
+ },
791
+ "directory": {
792
+ "type": "string",
793
+ "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
794
+ },
795
+ "overwrite": {
796
+ "type": "boolean",
797
+ "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."
798
+ },
799
+ "auto_updates": {
800
+ "type": "string",
801
+ "description": "WordPress core auto-update policy",
802
+ "enum": [
803
+ "all",
804
+ "none",
805
+ "minor"
806
+ ]
807
+ },
808
+ "version": {
809
+ "type": "string",
810
+ "description": "WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected."
811
+ },
812
+ "credentials": {
813
+ "type": "object",
814
+ "description": "WordPress admin credentials",
815
+ "properties": {
816
+ "email": {
817
+ "type": "string",
818
+ "description": "email parameter"
819
+ },
820
+ "login": {
821
+ "type": "string",
822
+ "description": "WordPress admin username"
823
+ },
824
+ "password": {
825
+ "type": "string",
826
+ "description": "password parameter"
827
+ }
828
+ },
829
+ "required": [
830
+ "email",
831
+ "login",
832
+ "password"
833
+ ]
834
+ },
835
+ "database": {
836
+ "type": "object",
837
+ "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.",
838
+ "properties": {
839
+ "name": {
840
+ "type": "string",
841
+ "description": "Database name (username prefix added if missing)"
842
+ },
843
+ "password": {
844
+ "type": "string",
845
+ "description": "password parameter"
846
+ }
847
+ }
848
+ }
849
+ },
850
+ "required": [
851
+ "username",
852
+ "domain",
853
+ "site_title",
854
+ "credentials"
855
+ ]
856
+ },
857
+ "security": [
858
+ {
859
+ "apiToken": []
860
+ }
861
+ ],
862
+ "group": "hosting"
863
+ },
864
+ {
865
+ "name": "hosting_listWordPressInstallationsV1",
866
+ "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.",
867
+ "method": "GET",
868
+ "path": "/api/hosting/v1/wordpress/installations",
869
+ "inputSchema": {
870
+ "type": "object",
871
+ "properties": {
872
+ "username": {
873
+ "type": "string",
874
+ "description": "Filter by specific username"
875
+ },
876
+ "domain": {
877
+ "type": "string",
878
+ "description": "Filter by domain name (exact match)"
879
+ },
880
+ "ownership": {
881
+ "type": "string",
882
+ "description": "Filter by ownership type. Defaults to \"owned\". Use \"all\" to include both owned and managed installations.",
883
+ "enum": [
884
+ "owned",
885
+ "managed",
886
+ "all"
887
+ ]
888
+ }
889
+ },
890
+ "required": []
891
+ },
892
+ "security": [
893
+ {
894
+ "apiToken": []
895
+ }
896
+ ],
897
+ "group": "hosting"
766
898
  }
767
899
  ];
@@ -773,6 +773,138 @@ const tools: OpenApiTool[] = [
773
773
  }
774
774
  ],
775
775
  "group": "hosting"
776
+ },
777
+ {
778
+ "name": "hosting_installWordPressV1",
779
+ "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.",
780
+ "method": "POST",
781
+ "path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
782
+ "inputSchema": {
783
+ "type": "object",
784
+ "properties": {
785
+ "username": {
786
+ "type": "string",
787
+ "description": "username parameter"
788
+ },
789
+ "domain": {
790
+ "type": "string",
791
+ "description": "Domain of the existing website where WordPress will be installed"
792
+ },
793
+ "site_title": {
794
+ "type": "string",
795
+ "description": "Title of the WordPress site"
796
+ },
797
+ "language": {
798
+ "type": "string",
799
+ "description": "WordPress locale. Defaults to en_US when omitted."
800
+ },
801
+ "directory": {
802
+ "type": "string",
803
+ "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
804
+ },
805
+ "overwrite": {
806
+ "type": "boolean",
807
+ "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."
808
+ },
809
+ "auto_updates": {
810
+ "type": "string",
811
+ "description": "WordPress core auto-update policy",
812
+ "enum": [
813
+ "all",
814
+ "none",
815
+ "minor"
816
+ ]
817
+ },
818
+ "version": {
819
+ "type": "string",
820
+ "description": "WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected."
821
+ },
822
+ "credentials": {
823
+ "type": "object",
824
+ "description": "WordPress admin credentials",
825
+ "properties": {
826
+ "email": {
827
+ "type": "string",
828
+ "description": "email parameter"
829
+ },
830
+ "login": {
831
+ "type": "string",
832
+ "description": "WordPress admin username"
833
+ },
834
+ "password": {
835
+ "type": "string",
836
+ "description": "password parameter"
837
+ }
838
+ },
839
+ "required": [
840
+ "email",
841
+ "login",
842
+ "password"
843
+ ]
844
+ },
845
+ "database": {
846
+ "type": "object",
847
+ "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.",
848
+ "properties": {
849
+ "name": {
850
+ "type": "string",
851
+ "description": "Database name (username prefix added if missing)"
852
+ },
853
+ "password": {
854
+ "type": "string",
855
+ "description": "password parameter"
856
+ }
857
+ }
858
+ }
859
+ },
860
+ "required": [
861
+ "username",
862
+ "domain",
863
+ "site_title",
864
+ "credentials"
865
+ ]
866
+ },
867
+ "security": [
868
+ {
869
+ "apiToken": []
870
+ }
871
+ ],
872
+ "group": "hosting"
873
+ },
874
+ {
875
+ "name": "hosting_listWordPressInstallationsV1",
876
+ "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.",
877
+ "method": "GET",
878
+ "path": "/api/hosting/v1/wordpress/installations",
879
+ "inputSchema": {
880
+ "type": "object",
881
+ "properties": {
882
+ "username": {
883
+ "type": "string",
884
+ "description": "Filter by specific username"
885
+ },
886
+ "domain": {
887
+ "type": "string",
888
+ "description": "Filter by domain name (exact match)"
889
+ },
890
+ "ownership": {
891
+ "type": "string",
892
+ "description": "Filter by ownership type. Defaults to \"owned\". Use \"all\" to include both owned and managed installations.",
893
+ "enum": [
894
+ "owned",
895
+ "managed",
896
+ "all"
897
+ ]
898
+ }
899
+ },
900
+ "required": []
901
+ },
902
+ "security": [
903
+ {
904
+ "apiToken": []
905
+ }
906
+ ],
907
+ "group": "hosting"
776
908
  }
777
909
  ];
778
910
  export default 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-api-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-hosting-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '0.2.5', 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: '0.2.4', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '0.2.5', tools });
package/types.d.ts CHANGED
@@ -1173,6 +1173,99 @@ websites list endpoint to see when your new website becomes available.
1173
1173
  response: any; // Response structure will depend on the API
1174
1174
  };
1175
1175
 
1176
+ /**
1177
+ * Install WordPress on an existing website.
1178
+
1179
+ The website must already exist before calling this endpoint. To create a new
1180
+ website first, use POST /api/hosting/v1/websites and poll
1181
+ GET /api/hosting/v1/websites until it appears.
1182
+
1183
+ Call GET /api/hosting/v1/wordpress/installations filtered by username and
1184
+ domain before proceeding to check whether WordPress is already installed on
1185
+ the target domain/path. If WordPress already exists and `overwrite` is false
1186
+ (the default), the async job will fail.
1187
+
1188
+ This operation is asynchronous: a successful response only means the install
1189
+ job has been queued, not that WordPress is ready. Installation typically
1190
+ takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered
1191
+ by username and domain to track progress. When the installation appears in
1192
+ that list, WordPress is ready.
1193
+ */
1194
+ "hosting_installWordPressV1": {
1195
+ params: {
1196
+ /**
1197
+ * username parameter
1198
+ */
1199
+ username: string;
1200
+ /**
1201
+ * Domain of the existing website where WordPress will be installed
1202
+ */
1203
+ domain: string;
1204
+ /**
1205
+ * Title of the WordPress site
1206
+ */
1207
+ site_title: string;
1208
+ /**
1209
+ * WordPress locale. Defaults to en_US when omitted.
1210
+ */
1211
+ language?: string;
1212
+ /**
1213
+ * Relative directory to install WordPress into. Defaults to the website root when omitted.
1214
+ */
1215
+ directory?: string;
1216
+ /**
1217
+ * 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.
1218
+ */
1219
+ overwrite?: boolean;
1220
+ /**
1221
+ * WordPress core auto-update policy
1222
+ */
1223
+ auto_updates?: string;
1224
+ /**
1225
+ * WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected.
1226
+ */
1227
+ version?: string;
1228
+ /**
1229
+ * WordPress admin credentials
1230
+ */
1231
+ credentials: object;
1232
+ /**
1233
+ * 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.
1234
+ */
1235
+ database?: object;
1236
+ };
1237
+ response: any; // Response structure will depend on the API
1238
+ };
1239
+
1240
+ /**
1241
+ * List WordPress installations accessible to the authenticated client.
1242
+
1243
+ Use this endpoint to discover existing WordPress installations and to poll
1244
+ for installation status after calling the install endpoint. When a newly
1245
+ requested installation appears in this list, WordPress is ready. Filter by
1246
+ username and domain to narrow results to a specific website.
1247
+
1248
+ Each installation includes a `valid` flag and, when invalid, a
1249
+ `validationError` describing why.
1250
+ */
1251
+ "hosting_listWordPressInstallationsV1": {
1252
+ params: {
1253
+ /**
1254
+ * Filter by specific username
1255
+ */
1256
+ username?: string;
1257
+ /**
1258
+ * Filter by domain name (exact match)
1259
+ */
1260
+ domain?: string;
1261
+ /**
1262
+ * Filter by ownership type. Defaults to "owned". Use "all" to include both owned and managed installations.
1263
+ */
1264
+ ownership?: string;
1265
+ };
1266
+ response: any; // Response structure will depend on the API
1267
+ };
1268
+
1176
1269
  /**
1177
1270
  * Delete a contact with the specified UUID.
1178
1271