hostinger-api-mcp 3.12.2 → 3.14.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/CHANGELOG.md +15 -0
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/skills/deploy-to-hosting/SKILL.md +15 -1
- package/skills/headless/steps/02-refine/SKILL.md +60 -32
- package/skills/headless/steps/03-provision/webapp/SKILL.md +2 -0
- package/skills/headless/steps/08-deploy/SKILL.md +7 -0
- package/src/core/instructions.agency-hosting.js +1 -1
- package/src/core/instructions.agency-hosting.ts +1 -1
- package/src/core/instructions.js +1 -1
- package/src/core/instructions.ts +1 -1
- package/src/core/skills.js +12 -12
- package/src/core/skills.ts +12 -12
- package/src/servers/agency-hosting.js +1 -1
- package/src/servers/agency-hosting.ts +1 -1
- 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/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,21 @@ Generated at release time from the diff between the previous and current
|
|
|
4
4
|
build. Tool changes are listed individually; everything else is summarised
|
|
5
5
|
by area.
|
|
6
6
|
|
|
7
|
+
## v3.14.0 — 2026-10-27
|
|
8
|
+
|
|
9
|
+
### Also in this release
|
|
10
|
+
|
|
11
|
+
- Bundled agent skills: `skills/headless/steps/02-refine/SKILL.md`, `skills/headless/steps/03-provision/webapp/SKILL.md`
|
|
12
|
+
- Other files: `src/core/skills.js`, `src/core/skills.ts`
|
|
13
|
+
|
|
14
|
+
## v3.13.0 — 2026-10-27
|
|
15
|
+
|
|
16
|
+
### Also in this release
|
|
17
|
+
|
|
18
|
+
- Bundled agent skills: `skills/deploy-to-hosting/SKILL.md`, `skills/headless/steps/08-deploy/SKILL.md`
|
|
19
|
+
- Server instructions: 4 files
|
|
20
|
+
- Other files: `src/core/skills.js`, `src/core/skills.ts`
|
|
21
|
+
|
|
7
22
|
## v3.12.2 — 2026-10-27
|
|
8
23
|
|
|
9
24
|
### Also in this release
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
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": "3.
|
|
9
|
+
"version": "3.14.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@hostinger/mcp",
|
|
14
|
-
"version": "3.
|
|
14
|
+
"version": "3.14.0",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
|
@@ -13,9 +13,23 @@ Ship a project that already exists — on disk or in a Git repository — to a H
|
|
|
13
13
|
- Batch reads with `multi-execute`; values pass between steps as `$steps.<i>.<path>`. Batches chain operations from one server only — the Hostinger Connector runs `hosting`, `wordpress` and `agency-hosting` as separate servers.
|
|
14
14
|
- Every deploy overwrites the website's current contents. Confirm the target domain with the user before the first deploy to a site that already has content.
|
|
15
15
|
|
|
16
|
+
## 0. If a shell and the Hostinger CLI are available
|
|
17
|
+
|
|
18
|
+
`hostinger up` does steps 1 to 3 in one call and is the shortest path when you can run commands and the `hostinger` CLI is installed (`brew install hostinger/tap/hostinger`), signed in and has `hostinger up`: it finds or creates the website, detects the type, packs the directory (honouring `.gitignore`; skipping `node_modules`, `.git`, `.env` files, credentials and private keys, and listing symlinks it does not follow), uploads, deploys or builds, waits for the build and links the directory in `.hostinger/site.json`, the same file this skill uses. Nothing is asked without a terminal.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
hostinger up <dir> --domain <domain> --yes --format json # existing website; --yes only after the user agreed to replace its content
|
|
22
|
+
hostinger up <dir> --create --format json # new website on the only plan, free subdomain
|
|
23
|
+
hostinger up <dir> --domain <domain> --dry-run # the plan as JSON, changes nothing: show it to the user before a first deploy (overwritesContent: the real run needs --yes)
|
|
24
|
+
hostinger up <dir> --domain <domain> --type nodejs --app-type next --output-directory .next --build-script build --node-version 22 --yes --format json
|
|
25
|
+
hostinger up <dir> --domain <domain> --no-wait --format json # returns buildUuid at once; poll with `hostinger hosting nodejs build <domain> <uuid>`
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Run it from the project directory: the link is written in the current directory, with `path` naming `<dir>`. The JSON result has `url`, `data.type`, `data.buildUuid`, `data.buildState`, `data.skippedFiles` and, on failure, `error`. Shared and Cloud plans only; for Agency plans, archives and WordPress plugins or themes, use the operations below. The MCP's `hosting_deploy` does the same work when there is no shell.
|
|
29
|
+
|
|
16
30
|
## 1. Pick the target website
|
|
17
31
|
|
|
18
|
-
- `.hostinger/site.json` in the project: reuse its `domain` and `username` (or `website_uid`).
|
|
32
|
+
- `.hostinger/site.json` in the project: reuse its `domain` and `username` (or `website_uid`). The CLI's `hostinger up` and `hostinger link` write the same file and keep any fields you add while it names the same website (linking another website starts it afresh); its `type` may be `static`, `nodejs` or `php`.
|
|
19
33
|
- Otherwise look the domain up with `hosting_websites_list` (Shared and Cloud; substring match — take the exact entry) and `agency-hosting_websites_list-plan` (Agency; keep `details.uid`).
|
|
20
34
|
- No website yet:
|
|
21
35
|
- Shared and Cloud: take a domain (the user's own, or `hosting_domains_generate-free-subdomain`) and an `order_id` from `hosting_orders_list`, then `hosting_websites_create`. `datacenter_code` is needed only for the first website on a new plan (first entry of `hosting_datacenters_list`). Poll `hosting_websites_list-setups` with `domain` every 10–15 s until `status: completed` — uploads and deploys return 404 or 409 before that.
|
|
@@ -9,8 +9,9 @@ Find out what the user wants to build, guess which backend fits, and write it do
|
|
|
9
9
|
**conversation, not a form**: the pasted prompt names a domain and nothing else, so everything about
|
|
10
10
|
the site comes from talking to the user.
|
|
11
11
|
|
|
12
|
-
**Keep it short.**
|
|
13
|
-
|
|
12
|
+
**Keep it short.** You must know what they are building, whether they sell and whether they'll
|
|
13
|
+
publish content over time — enough to guess the backend — plus, when Step 2 found a project in the folder, the
|
|
14
|
+
**Existing project** confirms. Every other question is optional: the more the user gives, the better the site, but never
|
|
14
15
|
hold the build hostage to refinement. Fill gaps with sensible defaults and say so in the brief. A
|
|
15
16
|
skipped question tool is not the user passing on a question; see *When you ask the user* in the
|
|
16
17
|
top-level `SKILL.md`.
|
|
@@ -52,8 +53,8 @@ Before asking anything, collect what the user has already given you, so you don'
|
|
|
52
53
|
framework config (`next.config.*`, `astro.config.*`, `vite.config.*`, `svelte.config.*`, `nuxt.*`),
|
|
53
54
|
a `src/` or `app/` tree, `index.html`, a storefront/cart, etc. A real project here usually means the
|
|
54
55
|
user **already has their own frontend** and mainly needs a Hostinger backend to wire it to — lean
|
|
55
|
-
toward "bring your own frontend" in Step 3.
|
|
56
|
-
|
|
56
|
+
toward "bring your own frontend" in Step 3. That is what *Step 2 found a project in the folder*
|
|
57
|
+
means everywhere below.
|
|
57
58
|
- Anything in the pasted prompt beyond the domain (a sentence, a link, a screenshot).
|
|
58
59
|
- Files in the current project that look like site material (copy, logos, product lists, images).
|
|
59
60
|
- What the agent already knows about the user from local memory or this conversation (a prior build,
|
|
@@ -62,10 +63,13 @@ Before asking anything, collect what the user has already given you, so you don'
|
|
|
62
63
|
|
|
63
64
|
## Step 3 — Ask
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
below,
|
|
66
|
+
When Step 2 found a project in the folder, ask **Build mode** and the **Existing project** confirms
|
|
67
|
+
below in your first message, after Round 1 when Round 1 still needs asking; they don't count toward
|
|
68
|
+
the 3 rounds, and code that answers Round 1 never skips them. Otherwise don't ask Build mode: it
|
|
69
|
+
defaults (see *Build mode* below).
|
|
67
70
|
|
|
68
|
-
|
|
71
|
+
If Step 2 already answers the three Round 1 questions, skip the Round 1–3 questions below. Otherwise
|
|
72
|
+
open with one line and **wait for the user's answer**: *"Tell me what you want to build — a
|
|
69
73
|
sentence is enough. Links, screenshots or files help too. Skip anything you don't want to answer."*
|
|
70
74
|
|
|
71
75
|
> **"What do you want to build?" is an OPEN question — ask it in plain prose and wait.** Never turn it
|
|
@@ -84,18 +88,19 @@ decide" means *use defaults*, not *ask again*. A skipped tool result is not thei
|
|
|
84
88
|
that round in plain text, as *When you ask the user* in the top-level `SKILL.md` says. The re-ask
|
|
85
89
|
repeats the round; it doesn't count toward the 3.
|
|
86
90
|
|
|
87
|
-
**Round 1 — what it is (
|
|
91
|
+
**Round 1 — what it is (required; these three decide the backend):**
|
|
88
92
|
|
|
89
93
|
1. **What are you building?** The business or project, and what the site is for.
|
|
90
94
|
2. **Will you sell anything on it?** Physical products, digital products, services with checkout —
|
|
91
|
-
or nothing.
|
|
92
|
-
|
|
93
|
-
3. **
|
|
95
|
+
or nothing. Skip it only when the answer is already unmistakable ("an online shop for my
|
|
96
|
+
candles", "my personal blog"); when in doubt, ask.
|
|
97
|
+
3. **Will you publish content over time?** Blog posts, articles, news, recipes, portfolio pieces,
|
|
98
|
+
case studies, and how often — or a handful of pages that rarely change. Skip it only when the
|
|
99
|
+
answer is already unmistakable ("my personal blog", an app the user is deploying).
|
|
94
100
|
|
|
95
101
|
**Round 2 — what goes on it (optional, adapt to Round 1):**
|
|
96
102
|
|
|
97
|
-
- **
|
|
98
|
-
case studies? How often? Or is it a handful of pages that rarely change?
|
|
103
|
+
- **Who is it for?** The audience, and how they'll find the site.
|
|
99
104
|
- **Pages** — propose a page list from what you know and ask them to add or remove.
|
|
100
105
|
- If they sell: **what and how many** — a rough product count, categories, whether products have
|
|
101
106
|
variants (size, colour), and the shipping regions.
|
|
@@ -110,6 +115,20 @@ the design directions, so it is **not** asked again later; gather it here:
|
|
|
110
115
|
- **Colours & brand** — brand/accent colours, logo, fonts, existing copy, photos. Note where they live.
|
|
111
116
|
- **Must-haves and no-gos** — contact form, newsletter, bookings, languages, things to avoid.
|
|
112
117
|
|
|
118
|
+
**Existing project — when Step 2 found a project in the folder (required, in the Build mode message):**
|
|
119
|
+
|
|
120
|
+
Build mode answers the look. The code shows the rest, but the user knows what has to survive the
|
|
121
|
+
move, so ask each as a confirm of what you found, naming it, so the user only says yes or corrects you:
|
|
122
|
+
|
|
123
|
+
1. **Routes that open directly** — the client-side routes you found (name them, e.g. `/stats`,
|
|
124
|
+
`/settings`) must open from a typed link and survive a refresh? Ask only when the code routes in
|
|
125
|
+
the browser (React Router, Vue Router, a history or hash router); a server-routed app has none.
|
|
126
|
+
2. **Data** — the database and environment variable names you found (or "none"): is that all the
|
|
127
|
+
app needs? Hostinger gives the app MySQL only: a different database (Postgres, MongoDB, a SQLite
|
|
128
|
+
file) goes under **Out of scope** as a migration the user owns, not as `Database: MySQL`.
|
|
129
|
+
|
|
130
|
+
Record the routes and data in **Existing project**.
|
|
131
|
+
|
|
113
132
|
If the user asks for something outside the scope (user accounts, member areas, bookings with a
|
|
114
133
|
calendar backend, user-generated content), say plainly that the headless flow doesn't support it yet
|
|
115
134
|
and record it under **Out of scope** — don't promise it.
|
|
@@ -121,25 +140,27 @@ and record it under **Out of scope** — don't promise it.
|
|
|
121
140
|
> for it. (A form that needs accounts, payments or a booking calendar is still out of scope — this is a
|
|
122
141
|
> plain name/email/message enquiry form.)
|
|
123
142
|
|
|
124
|
-
### Build mode —
|
|
143
|
+
### Build mode — a user choice when the folder holds a project
|
|
125
144
|
|
|
126
|
-
The backend is your call, but **how the frontend gets built is the user's
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
the default from what you found:
|
|
145
|
+
The backend is your call, but **how the frontend gets built is the user's**. When Step 2 found a
|
|
146
|
+
project in the folder, ask **one** question (a structured choice is ideal here); it also settles the
|
|
147
|
+
app's look:
|
|
130
148
|
|
|
131
|
-
- **Bring your own frontend
|
|
132
|
-
have a frontend / I'll drive the design and we vibe-code it together." The agent **uses the user's
|
|
149
|
+
- **Bring your own frontend — keep my app's look** *(the default)* — the agent **uses the user's
|
|
133
150
|
existing project in the current folder as the source**, collaborates on design/code at the user's
|
|
134
151
|
direction, and wires it to the provisioned backend. There is **no agent-generated design** — the
|
|
135
|
-
design step defers to the user (see the Build mode box at the top of the design step), and the
|
|
136
|
-
rather than scaffolding a new one.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
scaffolds and implements them.
|
|
152
|
+
design step defers to the user (see the Build mode box at the top of the design step), and the
|
|
153
|
+
frontend step builds on their project rather than scaffolding a new one. Write "Keep the look we
|
|
154
|
+
have: the app in this folder" in **Design direction**.
|
|
155
|
+
- **Agent designs and builds it — a new design** — the design step proposes directions and the
|
|
156
|
+
frontend step scaffolds and implements them.
|
|
157
|
+
|
|
158
|
+
A skipped tool result is not a pick: re-ask in plain text, and use the default only when the user
|
|
159
|
+
says so (see *When you ask the user* in the top-level `SKILL.md`).
|
|
140
160
|
|
|
141
|
-
|
|
142
|
-
|
|
161
|
+
Otherwise don't ask: Build mode is **Agent designs and builds**. When the user says they have their
|
|
162
|
+
own code elsewhere, ask for its path, inspect it as in Step 2, and from then on treat it as a project
|
|
163
|
+
found in the folder.
|
|
143
164
|
|
|
144
165
|
Record the answer as the brief's **Build mode**. This is the one frontend/technology question you *do*
|
|
145
166
|
put to the user; everything else about the stack (framework, SSR/SSG) is still inferred. The deliverable
|
|
@@ -195,6 +216,8 @@ site, not the backend:
|
|
|
195
216
|
|
|
196
217
|
- **The plan** — what it is, audience, pages, products (if any), tone. Mark anything you defaulted
|
|
197
218
|
(*"assumed: warm, minimal look"*) so the user sees what they skipped.
|
|
219
|
+
- **Your app** *(when Step 2 found a project in the folder)* — one line: keeps its look or gets a new
|
|
220
|
+
one, the routes that must open directly, and whether a database is created.
|
|
198
221
|
- **How it's built** — state the backend as a *consequence* in one plain line, focused on what it
|
|
199
222
|
means for them day to day ("I'll build this on WordPress, so you edit pages and posts in a normal
|
|
200
223
|
WordPress admin"), **not** as a choice you're asking them to make. Don't ask "is WordPress OK?" or
|
|
@@ -208,8 +231,9 @@ theirs and note it in the brief.
|
|
|
208
231
|
## Step 6 — Write `brief.md` and hand off
|
|
209
232
|
|
|
210
233
|
Write `brief.md` from the template below. Fill every section from the conversation, defaulting what
|
|
211
|
-
the user skipped and tagging it `(assumed)`; leave out **Products** when nothing is sold
|
|
212
|
-
user's own words where you
|
|
234
|
+
the user skipped and tagging it `(assumed)`; leave out **Products** when nothing is sold and
|
|
235
|
+
**Existing project** unless Step 2 found a project in the folder. Use the user's own words where you
|
|
236
|
+
can. Then update `state.json`:
|
|
213
237
|
`"stage": "provision"`, fresh `updated_at`.
|
|
214
238
|
|
|
215
239
|
The **Suggested backend** section is the contract with `03-provision/SKILL.md`, which routes on it.
|
|
@@ -239,7 +263,7 @@ routes it to the `wordpress` subfolder with the store enabled (it is **not** a s
|
|
|
239
263
|
(layout, structure, mood); colours / brand palette; any screenshots. This is where ALL design questions
|
|
240
264
|
land — the frontend step reads this and does not re-ask. Write "Agent's choice: <short style>" when the
|
|
241
265
|
user didn't specify. Record in the user's own words a request to keep their current look ("Keep the look
|
|
242
|
-
we have: <site URL | screenshots | brand guide>") and any logo idea they describe; the design step acts
|
|
266
|
+
we have: <site URL | screenshots | brand guide | the app in this folder>") and any logo idea they describe; the design step acts
|
|
243
267
|
on both.>
|
|
244
268
|
|
|
245
269
|
## Pages
|
|
@@ -261,14 +285,18 @@ on both.>
|
|
|
261
285
|
## Assets
|
|
262
286
|
<logo, colours, photos, copy the user provided and where they are; "None yet" if none>
|
|
263
287
|
|
|
288
|
+
## Existing project
|
|
289
|
+
<only when Step 2 found a project in the folder: its path; the framework; the client-side
|
|
290
|
+
routes that must open directly and on refresh (or "None"); Database: none | MySQL; the env var names
|
|
291
|
+
the app reads — names only, never values>
|
|
292
|
+
|
|
264
293
|
## Suggested backend
|
|
265
294
|
**<WordPress | Ecommerce | WordPress + Ecommerce | WordPress + WooCommerce | Webapp>** — <one-line reason>.
|
|
266
295
|
<"Confirmed by the user." or "User chose this over the recommended <X> because <reason>.">
|
|
267
296
|
|
|
268
297
|
## Build mode
|
|
269
298
|
**<Bring your own frontend | Agent designs and builds>** — <one line>. <When "Bring your own frontend":
|
|
270
|
-
|
|
271
|
-
to drive design/code. When "Agent designs and builds": leave the design + frontend steps to run as
|
|
299
|
+
how they want to drive design/code; the project's path is under **Existing project**. When "Agent designs and builds": leave the design + frontend steps to run as
|
|
272
300
|
normal.> The design step and the frontend step both read this: **Bring your own frontend** → design
|
|
273
301
|
defers to the user and frontend builds on their project; **Agent designs and builds** → both run as normal.
|
|
274
302
|
|
|
@@ -58,6 +58,8 @@ All website/database operations below go through the Hostinger connector (`execu
|
|
|
58
58
|
## Step 3 — Database (only if the app needs one)
|
|
59
59
|
|
|
60
60
|
Skip this step entirely for an app with no database (static SPA, an app that talks to an external API).
|
|
61
|
+
The app needs one when `brief.md` → **Existing project** says **Database: MySQL**, or, for a new app,
|
|
62
|
+
when the brief describes data the app stores itself.
|
|
61
63
|
This is **join-half** work — it needs the live website, so run it once `provision.status == "completed"`.
|
|
62
64
|
|
|
63
65
|
**Preferred — let the platform create the database and inject the credentials:**
|
|
@@ -17,6 +17,13 @@ This is an **instance-barrier** step: run it only after `provision.status == "co
|
|
|
17
17
|
> `hostinger-api-mcp` server instead (see the connect step:
|
|
18
18
|
> `npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp`).
|
|
19
19
|
|
|
20
|
+
> **With a shell and the Hostinger CLI installed**, the same deploy is one command, with the build
|
|
21
|
+
> settings passed exactly as the table below says. Run it from the project, since it links the current directory:
|
|
22
|
+
> `cd ~/.hostinger/<domain>/src && hostinger up --domain <domain> --type nodejs --app-type <appType> --output-directory <dir> --build-script build --node-version 22 --package-manager npm --yes --format json`.
|
|
23
|
+
> It uploads, builds, waits and returns `data.buildUuid` and `data.buildState`; add `--no-wait` to
|
|
24
|
+
> return at once and poll with `hostinger hosting nodejs build <domain> <uuid>`. Then continue at
|
|
25
|
+
> "Verify" below.
|
|
26
|
+
|
|
20
27
|
**In:** the project in `~/.hostinger/<domain>/src/`, `site.json` (`username`, `urls`), `state.json`
|
|
21
28
|
(`frontend.framework`, `frontend.rendering`).
|
|
22
29
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated server instructions
|
|
2
|
-
export default "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
2
|
+
export default "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying from a shell\n- The Hostinger CLI deploys a website in one command and links the directory: `hostinger up <dir> --domain <domain> --format json` (`--yes` replaces content, `--create` makes a site, `--dry-run` shows the plan). It never prompts without a terminal.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Auto-generated server instructions
|
|
2
|
-
const instructions: string = "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
2
|
+
const instructions: string = "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying from a shell\n- The Hostinger CLI deploys a website in one command and links the directory: `hostinger up <dir> --domain <domain> --format json` (`--yes` replaces content, `--create` makes a site, `--dry-run` shows the plan). It never prompts without a terminal.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
3
3
|
export default instructions;
|
package/src/core/instructions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated server instructions
|
|
2
|
-
export default "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying a website (this server only)\n- hosting_deploy replaces the upload, archive-deploy, build, WordPress import/plugin/theme and Git operations named above. Give it a local directory (it detects static/PHP, Node.js, a WordPress site, plugin or theme and packs it itself), a local archive with `type`, or `git: { repository, branch }`. Do not run those operations by hand.\n- A Node.js deploy returns a buildUuid at once and builds on the server. Poll hosting_get-deployment with the domain, pausing longer each time, until the build state is completed or failed. A failed build comes back with its logs and analysis: fix the cause and deploy again. It replaces the build, log and settings operations.\n- Static, PHP, plugin and theme deploys are complete when hosting_deploy returns. A WordPress site import only starts: its files are extracted and the site is ready a few minutes later.\n- Every deploy overwrites the site's contents: confirm the domain with the user before the first deploy to a site that already has content.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
2
|
+
export default "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying from a shell\n- The Hostinger CLI deploys a website in one command and links the directory: `hostinger up <dir> --domain <domain> --format json` (`--yes` replaces content, `--create` makes a site, `--dry-run` shows the plan). It never prompts without a terminal.\n\nDeploying a website (this server only)\n- hosting_deploy replaces the upload, archive-deploy, build, WordPress import/plugin/theme and Git operations named above. Give it a local directory (it detects static/PHP, Node.js, a WordPress site, plugin or theme and packs it itself), a local archive with `type`, or `git: { repository, branch }`. Do not run those operations by hand.\n- A Node.js deploy returns a buildUuid at once and builds on the server. Poll hosting_get-deployment with the domain, pausing longer each time, until the build state is completed or failed. A failed build comes back with its logs and analysis: fix the cause and deploy again. It replaces the build, log and settings operations.\n- Static, PHP, plugin and theme deploys are complete when hosting_deploy returns. A WordPress site import only starts: its files are extracted and the site is ready a few minutes later.\n- Every deploy overwrites the site's contents: confirm the domain with the user before the first deploy to a site that already has content.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
package/src/core/instructions.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Auto-generated server instructions
|
|
2
|
-
const instructions: string = "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying a website (this server only)\n- hosting_deploy replaces the upload, archive-deploy, build, WordPress import/plugin/theme and Git operations named above. Give it a local directory (it detects static/PHP, Node.js, a WordPress site, plugin or theme and packs it itself), a local archive with `type`, or `git: { repository, branch }`. Do not run those operations by hand.\n- A Node.js deploy returns a buildUuid at once and builds on the server. Poll hosting_get-deployment with the domain, pausing longer each time, until the build state is completed or failed. A failed build comes back with its logs and analysis: fix the cause and deploy again. It replaces the build, log and settings operations.\n- Static, PHP, plugin and theme deploys are complete when hosting_deploy returns. A WordPress site import only starts: its files are extracted and the site is ready a few minutes later.\n- Every deploy overwrites the site's contents: confirm the domain with the user before the first deploy to a site that already has content.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
2
|
+
const instructions: string = "Hostinger API notes for agents. Find operations with search; the inputSchema it returns is authoritative for request shapes. Run one with execute, or chain several with multi-execute.\n\nDatabases (web hosting, hosting_* operations)\n- MySQL runs on the same server as the website. From the deployed app connect to host 127.0.0.1, port 3306. PHP may also use localhost (Unix socket). Node.js should use 127.0.0.1: localhost can resolve to IPv6 (::1) and not every database user has that grant.\n- The `host` from hosting_databases_list (srvNNNN.hstgr.io) is only for connections from outside Hostinger, after hosting_databases_create-remote-connection. Never use it from the app.\n- Agency Plan (agency-hosting_* operations) database users are created for localhost; the PHP app connects there.\n\nAsynchronous operations\n- A success response often means \"queued\", not \"done\". Poll the matching read operation with backoff (seconds, then minutes). Never re-send the write.\n- hosting_websites_create -> poll hosting_websites_list-setups with the domain until status is completed (a few minutes); file, deploy and database calls return 404/409 before that.\n- A Node.js deploy or hosting_nodejs_start-build -> poll hosting_get-deployment with the domain until the build state is completed or failed; a failed build comes back with its logs and failure analysis.\n- wordpress_installations_install and WordPress plugin/theme/core jobs -> poll wordpress_installations_list.\n- agency-hosting_website-setups_create -> poll agency-hosting_website-setups_status with setup_uuid; other Agency Plan jobs -> agency-hosting_websites_list-processes.\n- Website deletion, database repair and domain contact changes finish in the background.\n\nCredentials\n- Never write database passwords or API tokens into source code, client-side JavaScript or committed .env files.\n- Node.js apps read them from environment variables: set the full set with hosting_nodejs_replace-environment-variables (full replace; values are masked on read). Build-time variables (Next.js) need a new build afterwards.\n- PHP apps read them from a config file on the server, outside the repository.\n- Generate strong passwords and do not echo them back once stored.\n\nDeploying from a shell\n- The Hostinger CLI deploys a website in one command and links the directory: `hostinger up <dir> --domain <domain> --format json` (`--yes` replaces content, `--create` makes a site, `--dry-run` shows the plan). It never prompts without a terminal.\n\nDeploying a website (this server only)\n- hosting_deploy replaces the upload, archive-deploy, build, WordPress import/plugin/theme and Git operations named above. Give it a local directory (it detects static/PHP, Node.js, a WordPress site, plugin or theme and packs it itself), a local archive with `type`, or `git: { repository, branch }`. Do not run those operations by hand.\n- A Node.js deploy returns a buildUuid at once and builds on the server. Poll hosting_get-deployment with the domain, pausing longer each time, until the build state is completed or failed. A failed build comes back with its logs and analysis: fix the cause and deploy again. It replaces the build, log and settings operations.\n- Static, PHP, plugin and theme deploys are complete when hosting_deploy returns. A WordPress site import only starts: its files are extracted and the site is ready a few minutes later.\n- Every deploy overwrites the site's contents: confirm the domain with the user before the first deploy to a site that already has content.\n\nFor end-to-end site builds install the headless skill: npx skills add hostinger/api-mcp-server";
|
|
3
3
|
export default instructions;
|