@hostinger/mcp 3.1.0 → 3.2.1
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/CHANGELOG.md +33 -0
- package/README.md +47 -301
- package/gemini-extension.json +1 -1
- package/package.json +2 -1
- package/server.json +2 -2
- package/skills/audit-hosting/SKILL.md +1 -1
- package/skills/deploy-to-hosting/SKILL.md +32 -15
- package/skills/headless/references/DATABASE.md +3 -3
- package/skills/headless/references/DEPLOYMENT.md +10 -12
- package/skills/migrate-to-hosting/SKILL.md +3 -3
- package/skills/troubleshoot-website/SKILL.md +2 -2
- package/src/core/catalog.js +4 -0
- package/src/core/catalog.ts +6 -1
- package/src/core/instructions.agency-hosting.js +2 -0
- package/src/core/instructions.agency-hosting.ts +3 -0
- package/src/core/instructions.js +1 -1
- package/src/core/instructions.ts +1 -1
- package/src/core/runtime.js +1925 -1228
- package/src/core/runtime.ts +1891 -1193
- package/src/core/skills.js +18 -18
- package/src/core/skills.ts +18 -18
- package/src/core/tools/agency-hosting.ts +2 -0
- package/src/core/tools/agent-readiness.ts +2 -0
- package/src/core/tools/all.js +223 -30
- package/src/core/tools/all.ts +225 -30
- package/src/core/tools/billing.ts +2 -0
- package/src/core/tools/dns.ts +2 -0
- package/src/core/tools/domains.ts +2 -0
- package/src/core/tools/ecommerce.ts +2 -0
- package/src/core/tools/horizons.ts +2 -0
- package/src/core/tools/hosting.js +207 -25
- package/src/core/tools/hosting.ts +209 -25
- package/src/core/tools/mail.ts +2 -0
- package/src/core/tools/reach.ts +2 -0
- package/src/core/tools/vps.ts +2 -0
- package/src/core/tools/wordpress.js +10 -2
- package/src/core/tools/wordpress.ts +12 -2
- package/src/servers/agency-hosting.js +2 -2
- package/src/servers/agency-hosting.ts +2 -2
- package/src/servers/agent-readiness.js +1 -1
- package/src/servers/agent-readiness.ts +1 -1
- package/src/servers/all.js +1 -1
- package/src/servers/all.ts +1 -1
- package/src/servers/billing.js +1 -1
- package/src/servers/billing.ts +1 -1
- package/src/servers/dns.js +1 -1
- package/src/servers/dns.ts +1 -1
- package/src/servers/domains.js +1 -1
- package/src/servers/domains.ts +1 -1
- package/src/servers/ecommerce.js +1 -1
- package/src/servers/ecommerce.ts +1 -1
- package/src/servers/horizons.js +1 -1
- package/src/servers/horizons.ts +1 -1
- package/src/servers/hosting.js +1 -1
- package/src/servers/hosting.ts +1 -1
- package/src/servers/mail.js +1 -1
- package/src/servers/mail.ts +1 -1
- package/src/servers/reach.js +1 -1
- package/src/servers/reach.ts +1 -1
- package/src/servers/vps.js +1 -1
- package/src/servers/vps.ts +1 -1
- package/src/servers/wordpress.js +1 -1
- package/src/servers/wordpress.ts +1 -1
- package/types.d.ts +131 -22
package/src/servers/horizons.ts
CHANGED
package/src/servers/hosting.js
CHANGED
|
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
|
|
|
4
4
|
import tools from '../core/tools/hosting.js';
|
|
5
5
|
import instructions from '../core/instructions.js';
|
|
6
6
|
|
|
7
|
-
startServer({ name: 'hostinger-hosting-mcp', version: '3.1
|
|
7
|
+
startServer({ name: 'hostinger-hosting-mcp', version: '3.2.1', tools, instructions });
|
package/src/servers/hosting.ts
CHANGED
|
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
|
|
|
4
4
|
import tools from '../core/tools/hosting.js';
|
|
5
5
|
import instructions from '../core/instructions.js';
|
|
6
6
|
|
|
7
|
-
startServer({ name: 'hostinger-hosting-mcp', version: '3.1
|
|
7
|
+
startServer({ name: 'hostinger-hosting-mcp', version: '3.2.1', tools, instructions });
|
package/src/servers/mail.js
CHANGED
package/src/servers/mail.ts
CHANGED
package/src/servers/reach.js
CHANGED
package/src/servers/reach.ts
CHANGED
package/src/servers/vps.js
CHANGED
package/src/servers/vps.ts
CHANGED
package/src/servers/wordpress.js
CHANGED
package/src/servers/wordpress.ts
CHANGED
package/types.d.ts
CHANGED
|
@@ -4,6 +4,92 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export interface APITools {
|
|
7
|
+
/**
|
|
8
|
+
* Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, pass appType and nodeVersion from the project's engines, plus outputDirectory and buildScript if the app has a build step). Git needs GitHub or GitLab connected once in hPanel.
|
|
9
|
+
*/
|
|
10
|
+
"hosting_deploy": {
|
|
11
|
+
params: {
|
|
12
|
+
/**
|
|
13
|
+
* Domain name of the website to deploy to (e.g., example.com)
|
|
14
|
+
*/
|
|
15
|
+
domain: string;
|
|
16
|
+
/**
|
|
17
|
+
* Local directory (preferred; it is archived for you, skipping node_modules, .git and .env files, but not reading .gitignore, so keep build output out) or archive (zip, tar, tar.gz, tgz, 7z, gz, gzip). Not together with git.
|
|
18
|
+
*/
|
|
19
|
+
path?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Deploy a repository branch instead of local files. Not together with path.
|
|
22
|
+
*/
|
|
23
|
+
git?: object;
|
|
24
|
+
/**
|
|
25
|
+
* What is deployed. Detected for a directory (a Plugin Name: or Theme Name: header, wp-config.php or wp-content, a package.json with a build or start script); required for an archive, when detection reports ambiguity, and for a Git deploy unless the site already runs a Node.js app or Node.js settings are passed. static also covers PHP.
|
|
26
|
+
*/
|
|
27
|
+
type?: string;
|
|
28
|
+
/**
|
|
29
|
+
* WordPress plugin or theme slug: lower-case letters, digits, - and _ (default: the directory name)
|
|
30
|
+
*/
|
|
31
|
+
slug?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Activate the theme after deployment (WordPress themes only, default: false)
|
|
34
|
+
*/
|
|
35
|
+
activate?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Path to a .sql dump; required for a WordPress site import
|
|
38
|
+
*/
|
|
39
|
+
databaseDump?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Node.js major version (default: detected from an archive, or stored for the site, else 22; set it from the project's engines for a Git deploy)
|
|
42
|
+
*/
|
|
43
|
+
nodeVersion?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Node.js framework, e.g. next, nuxt, vite, express, react, vue, astro; overrides detection or stored settings
|
|
46
|
+
*/
|
|
47
|
+
appType?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Directory with the package.json, relative to the site root (default .)
|
|
50
|
+
*/
|
|
51
|
+
rootDirectory?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Build output directory relative to the root directory, e.g. dist
|
|
54
|
+
*/
|
|
55
|
+
outputDirectory?: string;
|
|
56
|
+
/**
|
|
57
|
+
* The package.json script that builds the app, e.g. build
|
|
58
|
+
*/
|
|
59
|
+
buildScript?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next.
|
|
62
|
+
*/
|
|
63
|
+
entryFile?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Package manager used to install dependencies
|
|
66
|
+
*/
|
|
67
|
+
packageManager?: string;
|
|
68
|
+
};
|
|
69
|
+
response: any; // Response structure will depend on the API
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Check deployment status, build status, build logs and why a build failed (failure analysis) for a website's nodejs (Node.js) deployment: the state of its latest build (or of buildUuid), the end of the build log, the failure analysis when the build failed, and the build settings and Git auto-deployment settings stored for the site. Use it after hosting_deploy starts a Node.js build, and to find out why a deployment failed. Poll until the build state is completed or failed, with growing pauses. The log comes back in full; pass fromLine (the lines count from the previous call) to read only new output. A website without Node.js builds returns build: null with an explanation, because static, PHP, plugin and theme deploys are complete when hosting_deploy returns, and a WordPress site import is ready a few minutes after it starts.
|
|
74
|
+
*/
|
|
75
|
+
"hosting_get-deployment": {
|
|
76
|
+
params: {
|
|
77
|
+
/**
|
|
78
|
+
* Domain name of the website (e.g., example.com)
|
|
79
|
+
*/
|
|
80
|
+
domain: string;
|
|
81
|
+
/**
|
|
82
|
+
* Build to inspect, as returned by hosting_deploy (default: the latest build)
|
|
83
|
+
*/
|
|
84
|
+
buildUuid?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Read the build log from this line on (default 0, the whole log). Pass the lines count returned by the previous call to get only new output.
|
|
87
|
+
*/
|
|
88
|
+
fromLine?: number;
|
|
89
|
+
};
|
|
90
|
+
response: any; // Response structure will depend on the API
|
|
91
|
+
};
|
|
92
|
+
|
|
7
93
|
/**
|
|
8
94
|
* Deploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For plain PHP applications that should be extracted as-is, use agency-hosting_deploy-php-application instead. The website UID is automatically resolved from the domain.
|
|
9
95
|
*/
|
|
@@ -4871,8 +4957,9 @@ wait for `status: completed` before uploading files, deploying or creating datab
|
|
|
4871
4957
|
`failed` means the setup stopped before finishing or has not reported progress for
|
|
4872
4958
|
over an hour. Setups older than 24 hours are not listed.
|
|
4873
4959
|
|
|
4874
|
-
`type` is the website type the setup was started with (`wordpress`, `
|
|
4875
|
-
`headless_ecommerce`, `headless_pocketbase`), or `null` for an empty
|
|
4960
|
+
`type` is the website type the setup was started with (`wordpress`, `headless_empty`,
|
|
4961
|
+
`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`), or `null` for an empty
|
|
4962
|
+
website.
|
|
4876
4963
|
*/
|
|
4877
4964
|
"hosting_websites_list-setups": {
|
|
4878
4965
|
params: {
|
|
@@ -4895,17 +4982,25 @@ over an hour. Setups older than 24 hours are not listed.
|
|
|
4895
4982
|
/**
|
|
4896
4983
|
* Starts a website setup on a Web or Cloud hosting order and returns the created setup
|
|
4897
4984
|
right away; the website itself is provisioned asynchronously. Poll the list website
|
|
4898
|
-
setups endpoint with the `domain` filter every 10 to 15
|
|
4899
|
-
`status: completed` before uploading files, deploying or creating
|
|
4985
|
+
setups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15
|
|
4986
|
+
seconds and wait for `status: completed` before uploading files, deploying or creating
|
|
4987
|
+
databases.
|
|
4900
4988
|
|
|
4901
4989
|
Omit `type` for an empty website. `type: wordpress` installs WordPress in the website
|
|
4902
4990
|
root with the admin user, email and password from `wordpress`, the domain as the site
|
|
4903
4991
|
title, and `en_US` when `wordpress.language` is omitted. The headless types
|
|
4904
|
-
(`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)
|
|
4905
|
-
website; `headless_wordpress` additionally installs WordPress into the
|
|
4906
|
-
of the website root with generated credentials.
|
|
4907
|
-
|
|
4908
|
-
|
|
4992
|
+
(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)
|
|
4993
|
+
create a headless website; `headless_wordpress` additionally installs WordPress into the
|
|
4994
|
+
`cms` directory of the website root with generated credentials. `headless_empty` installs
|
|
4995
|
+
nothing: WordPress can be added later through
|
|
4996
|
+
`POST /api/hosting/v1/accounts/{username}/wordpress/installations`
|
|
4997
|
+
(`wordpress_installations_install`) with `type: headless`.
|
|
4998
|
+
|
|
4999
|
+
Omit `domain` to set the website up on a generated temporary free subdomain. To know the
|
|
5000
|
+
free subdomain before the call, so a timed-out call can be looked up and retried on the
|
|
5001
|
+
same domain, generate one through `POST /api/hosting/v1/domains/free-subdomains`
|
|
5002
|
+
(`hosting_domains_generate-free-subdomain`) and send it as `domain`. It is accepted for
|
|
5003
|
+
24 hours, only from the client that generated it.
|
|
4909
5004
|
|
|
4910
5005
|
When the order has no hosting account yet, the setup creates one first, in the datacenter
|
|
4911
5006
|
given by `datacenter_code` or the order's default datacenter when it is omitted.
|
|
@@ -4920,11 +5015,11 @@ running.
|
|
|
4920
5015
|
*/
|
|
4921
5016
|
order_id: number;
|
|
4922
5017
|
/**
|
|
4923
|
-
* Website type. Omit or `null` for an empty website. `wordpress` installs WordPress in the website root and requires `wordpress`. The headless types (`headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless website; `headless_wordpress` additionally installs WordPress into the `cms` directory with generated credentials.
|
|
5018
|
+
* Website type. Omit or `null` for an empty website. `wordpress` installs WordPress in the website root and requires `wordpress`. The headless types (`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`) create a headless website; `headless_wordpress` additionally installs WordPress into the `cms` directory with generated credentials. `headless_empty` installs nothing, so WordPress can be added later through `POST /api/hosting/v1/accounts/{username}/wordpress/installations` (`wordpress_installations_install`) with `type: headless`.
|
|
4924
5019
|
*/
|
|
4925
5020
|
type?: string;
|
|
4926
5021
|
/**
|
|
4927
|
-
* Customer-owned domain. Cannot start with "www." and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain.
|
|
5022
|
+
* Customer-owned domain, or a free subdomain you generated through `POST /api/hosting/v1/domains/free-subdomains` (`hosting_domains_generate-free-subdomain`) in the last 24 hours. Cannot start with "www." and can have at most one subdomain level, e.g. `blog.example.com`. Omit or `null` to set the website up on a generated temporary free subdomain.
|
|
4928
5023
|
*/
|
|
4929
5024
|
domain?: string;
|
|
4930
5025
|
/**
|
|
@@ -9580,19 +9675,29 @@ database files that have been uploaded to the website's directory.
|
|
|
9580
9675
|
* Install WordPress on an existing website.
|
|
9581
9676
|
|
|
9582
9677
|
The website must already exist before calling this endpoint. To create a new
|
|
9583
|
-
website first, use POST /api/hosting/v1/
|
|
9584
|
-
GET /api/hosting/v1/
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
|
|
9588
|
-
|
|
9589
|
-
|
|
9678
|
+
website first, use POST /api/hosting/v1/orders/{order_id}/onboardings
|
|
9679
|
+
(`hosting_websites_start-setup`) and poll GET /api/hosting/v1/onboardings
|
|
9680
|
+
(`hosting_websites_list-setups`) with the `domain` filter until its `status` is
|
|
9681
|
+
`completed`.
|
|
9682
|
+
|
|
9683
|
+
Send `type: headless` to turn a headless website (for example one created by
|
|
9684
|
+
`hosting_websites_start-setup` with `type: headless_empty`) into a headless WordPress
|
|
9685
|
+
website: WordPress is installed into the `cms` directory with the Hostinger headless
|
|
9686
|
+
MU plugin and the website is marked as a headless WordPress website. `directory` is
|
|
9687
|
+
not allowed with it. The target website must already be headless: the headless
|
|
9688
|
+
install rewrites the root `.htaccess`, so on any other website the request is
|
|
9689
|
+
rejected with 422.
|
|
9690
|
+
|
|
9691
|
+
Call GET /api/hosting/v1/wordpress/installations (`wordpress_installations_list`)
|
|
9692
|
+
filtered by username and domain before proceeding to check whether WordPress is
|
|
9693
|
+
already installed on the target domain/path. If WordPress already exists and
|
|
9694
|
+
`overwrite` is false (the default), the async job will fail.
|
|
9590
9695
|
|
|
9591
9696
|
This operation is asynchronous: a successful response only means the install
|
|
9592
9697
|
job has been queued, not that WordPress is ready. Installation typically
|
|
9593
|
-
takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations
|
|
9594
|
-
by username and domain to track
|
|
9595
|
-
that list, WordPress is ready.
|
|
9698
|
+
takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations
|
|
9699
|
+
(`wordpress_installations_list`) filtered by username and domain to track
|
|
9700
|
+
progress. When the installation appears in that list, WordPress is ready.
|
|
9596
9701
|
|
|
9597
9702
|
Returns 422 when the account already uses all the databases its plan allows,
|
|
9598
9703
|
unless `database.name` is an existing database on the account.
|
|
@@ -9616,7 +9721,11 @@ unless `database.name` is an existing database on the account.
|
|
|
9616
9721
|
*/
|
|
9617
9722
|
language?: string;
|
|
9618
9723
|
/**
|
|
9619
|
-
*
|
|
9724
|
+
* Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`hosting_websites_start-setup`) with `type: headless_empty`; any other website is rejected with 422.
|
|
9725
|
+
*/
|
|
9726
|
+
type?: string;
|
|
9727
|
+
/**
|
|
9728
|
+
* Installation subdirectory relative to the document root; omit for the root. Not allowed with `type: headless`, which always installs into `cms`.
|
|
9620
9729
|
*/
|
|
9621
9730
|
directory?: string;
|
|
9622
9731
|
/**
|