hostinger-api-mcp 3.27.4 → 3.28.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/gemini-extension.json +1 -1
  3. package/package.json +1 -1
  4. package/server.json +2 -2
  5. package/skills/headless/SKILL.md +49 -21
  6. package/skills/headless/VERSION +3 -3
  7. package/skills/headless/connect/SKILL.md +51 -3
  8. package/skills/headless/connect/tools/antigravity.md +21 -19
  9. package/skills/headless/connect/tools/claude-code.md +24 -14
  10. package/skills/headless/connect/tools/codex.md +21 -15
  11. package/skills/headless/connect/tools/cursor.md +20 -14
  12. package/skills/headless/connect/tools/devin.md +23 -18
  13. package/skills/headless/connect/tools/vscode.md +24 -14
  14. package/skills/headless/run-log.mjs +21 -1
  15. package/skills/headless/steps/01-check-state/SKILL.md +12 -13
  16. package/skills/headless/steps/03-provision/SKILL.md +11 -10
  17. package/skills/headless/steps/03-provision/ecommerce/SKILL.md +15 -19
  18. package/skills/headless/steps/03-provision/webapp/SKILL.md +3 -2
  19. package/skills/headless/steps/03-provision/wordpress/SKILL.md +6 -7
  20. package/skills/headless/steps/04-content-model/SKILL.md +39 -21
  21. package/skills/headless/steps/04-content-model/ecommerce/SKILL.md +3 -3
  22. package/skills/headless/steps/04-content-model/wordpress/SKILL.md +1 -2
  23. package/skills/headless/steps/07-validate/SKILL.md +3 -3
  24. package/skills/headless/steps/08-deploy/SKILL.md +56 -22
  25. package/skills/headless/steps/09-done/SKILL.md +3 -2
  26. package/skills/headless/wait.mjs +245 -0
  27. package/src/core/skills.js +67 -60
  28. package/src/core/skills.ts +67 -60
  29. package/src/servers/agency-hosting.js +1 -1
  30. package/src/servers/agency-hosting.ts +1 -1
  31. package/src/servers/agent-readiness.js +1 -1
  32. package/src/servers/agent-readiness.ts +1 -1
  33. package/src/servers/all.js +1 -1
  34. package/src/servers/all.ts +1 -1
  35. package/src/servers/billing.js +1 -1
  36. package/src/servers/billing.ts +1 -1
  37. package/src/servers/dns.js +1 -1
  38. package/src/servers/dns.ts +1 -1
  39. package/src/servers/domains.js +1 -1
  40. package/src/servers/domains.ts +1 -1
  41. package/src/servers/ecommerce.js +1 -1
  42. package/src/servers/ecommerce.ts +1 -1
  43. package/src/servers/gpu.js +1 -1
  44. package/src/servers/gpu.ts +1 -1
  45. package/src/servers/horizons.js +1 -1
  46. package/src/servers/horizons.ts +1 -1
  47. package/src/servers/hosting.js +1 -1
  48. package/src/servers/hosting.ts +1 -1
  49. package/src/servers/mail.js +1 -1
  50. package/src/servers/mail.ts +1 -1
  51. package/src/servers/reach.js +1 -1
  52. package/src/servers/reach.ts +1 -1
  53. package/src/servers/vps.js +1 -1
  54. package/src/servers/vps.ts +1 -1
  55. package/src/servers/wordpress.js +1 -1
  56. 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.28.1 — 2026-11-04
8
+
9
+ ### Also in this release
10
+
11
+ - Bundled agent skills: 11 files
12
+ - Other files: `src/core/skills.js`, `src/core/skills.ts`
13
+
14
+ ## v3.28.0 — 2026-11-04
15
+
16
+ ### Also in this release
17
+
18
+ - Dependencies: `package-lock.json`
19
+ - Bundled agent skills: 14 files
20
+ - Other files: `src/core/skills.js`, `src/core/skills.ts`
21
+
7
22
  ## v3.27.4 — 2026-11-03
8
23
 
9
24
  ### Also in this release
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.27.4",
3
+ "version": "3.28.1",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.27.4",
3
+ "version": "3.28.1",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "3.27.4",
9
+ "version": "3.28.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.27.4",
14
+ "version": "3.28.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -58,7 +58,7 @@ The order is sequencial run and check the whole headless flow:
58
58
  | — | **connect** — connect the Hostinger connector, auth, get active plan | `connect/SKILL.md` → `connect/tools/<tool>.md` | `connect.json` | no |
59
59
  | 1 | **check state** — where does this domain stand? resume / switch / start over | `steps/01-check-state/SKILL.md` | `state.json` | no |
60
60
  | 2 | **refine** — discover what the user wants, in conversation | `steps/02-refine/SKILL.md` | `brief.md` | no |
61
- | 3 | **provision** — choose the backend from the brief, then provision it | `steps/03-provision/<backend>/SKILL.md` | `site.json` | **bg** — fire, then poll in the background |
61
+ | 3 | **provision** — choose the backend from the brief, then provision it | `steps/03-provision/<backend>/SKILL.md` | `site.json` | **bg** — fire, then wait at the join |
62
62
  | 4 | **content model** — define + create content/images, then push to the backend | `steps/04-content-model/<backend>/SKILL.md` | `content-model.md` | prepare: no · **push: yes** |
63
63
  | 5 | **design** — derive design directions from the brief, pick one, write the `design.md` contract + logo | `steps/05-design/SKILL.md` | `design.md`, `brand/` | no |
64
64
  | 6 | **frontend** — pick/confirm the framework (default Next.js SSR), implement `design.md` against the backend | `steps/06-frontend/SKILL.md` | source in `<workspace>/src/` | shell: no · **data: yes** |
@@ -89,7 +89,7 @@ the user rather than improvising the stage from its description.
89
89
  The **Instance?** column says whether a stage touches the live backend:
90
90
  `no` = pure prepare work that can run during the provision wait;
91
91
  `push`/`data`/`yes` = a commit phase that joins the instance barrier;
92
- `bg` = provision itself, the background task.
92
+ `bg` = provision itself: Hostinger runs the job while you do the prepare work.
93
93
 
94
94
  **Always end with the final report.** Whenever a run ends, give the user the final report defined
95
95
  in `steps/09-done/SKILL.md`: an outcome paragraph, a *Steps completed* table (one row per stage that
@@ -99,8 +99,8 @@ missing step, a failed provision, or a user pause. Every run also saves a **buil
99
99
  Waiting for the user's answer to a question is not a run ending: end your turn with the question
100
100
  alone, with no final report and no build report.
101
101
 
102
- **Log the run as you go.** Wrap every stage (and each phase of a split stage) in
103
- `run-log.mjs stage-start` / `stage-end`, and log an event the moment something goes wrong, the user
102
+ **Log the run as you go.** Wrap every stage (and each phase of a split stage) in the run log —
103
+ `run-log.mjs next <stage>` at each boundary — and log an event the moment something goes wrong, the user
104
104
  corrects you, or a skill is missing or wrong — before you continue. See *Run log and build report*.
105
105
 
106
106
  **Why this order.** connect first, so account/plan failures surface before the user spends time
@@ -178,17 +178,37 @@ which of these cases applies and records it, then provision takes the matching p
178
178
  3. **User wants a webapp.** Provision is a plain Node.js app host, not headless — `webapp` ignores
179
179
  headless shells entirely and is only reached by experimental actions, never the onboarding flow.
180
180
 
181
- Either way the create/install is asynchronous and returns `queued` immediately, then it's polled
182
- every ~15 s for a few minutes — **what you poll depends on the path**: a fresh
183
- `hosting_websites_create` is polled with `hosting_websites_list-setups` until `completed`, while a
184
- shell swap (`wordpress_installations_install`) creates no new setup, so it's polled with
185
- `wordpress_installations_list` until the `/cms` row is `is_valid`. Don't block on that poll. The
186
- single rule that makes the overlap safe:
181
+ Either way the create/install is asynchronous and returns `queued` immediately, then it takes a few
182
+ minutes — **what to wait on depends on the path**: a fresh `hosting_websites_create` is `wait.mjs setup`
183
+ (until `hosting_websites_list-setups` says `completed`), while a shell swap
184
+ (`wordpress_installations_install`) creates no new setup, so it's `wait.mjs cms` (until the `/cms` row of
185
+ `wordpress_installations_list` is valid). Run it at the join, not at the fire: by then the prepare work
186
+ has usually outlasted the job, so it returns at once. The single rule that makes the overlap safe:
187
187
 
188
- > **Fire provision as a background task, then do every stage's prepare work while it settles. The
188
+ > **Fire provision (Hostinger runs it asynchronously), then do every stage's prepare work while it settles. The
189
189
  > moment a step must write to the live instance, it waits for provision to report ready (via the
190
190
  > backend step's readiness poll — see above). That wait is the *instance barrier*.**
191
191
 
192
+ ### Waiting on Hostinger: `wait.mjs`
193
+
194
+ `wait.mjs` (next to this file) waits for a slow Hostinger job in one command, so you don't spend a turn
195
+ on every check:
196
+
197
+ ```bash
198
+ node <skill>/wait.mjs setup <domain> # a fresh site's setup → completed
199
+ node <skill>/wait.mjs cms <domain> <username> # a shell swap's WordPress install at /cms → valid
200
+ node <skill>/wait.mjs build <domain> <buildUuid> # the deploy build → completed, then the root serves 200
201
+ node <skill>/wait.mjs live <domain> # the root serves 200
202
+ ```
203
+
204
+ Run it in the foreground, with a `--timeout` just under your tool's command limit (e.g. `--timeout 9m`
205
+ when commands may run 10 minutes); on `timed_out`, run the same command again: it picks the job up
206
+ where it is. It prints one JSON line and
207
+ exits 0 with `ok: true` and what it waited for; 1 with `ok: false` when the job failed, timed out
208
+ (`timed_out`, `last_status`) or hit an error that waiting won't fix (`error`); 2 when it couldn't start
209
+ the local Hostinger MCP, with `fallback` naming the connector operation to poll yourself, every ~15 s.
210
+ Never write your own `sleep` loops.
211
+
192
212
  ---
193
213
 
194
214
  ## State and artifacts
@@ -243,14 +263,15 @@ provision runs in the background, its status lives in its own `provision` field
243
263
  }
244
264
  ```
245
265
 
246
- - `provision` is **absent** until provision fires, `{"status":"in_progress", …}` while the
247
- background poll runs, and `{"status":"completed", …}` once `hosting_websites_list-setups` confirms
248
- it. `domain` is the poll target.
266
+ - `provision` is **absent** until provision fires, `{"status":"in_progress", …}` from the fire until
267
+ the join's `wait.mjs` returns `ok: true`, then `{"status":"completed", …}`. `domain` is the wait's
268
+ target.
249
269
  - Any **instance-barrier** step (content-model push, frontend data, deploy) must read
250
- `provision.status == "completed"` — and re-verify it against the connector — before it runs. A
251
- prepare step ignores `provision` entirely.
252
- - On **resume**, `provision.status` is a hint only: re-poll `hosting_websites_list-setups` to learn
253
- the truth, then update the field.
270
+ `provision.status == "completed"` before it runs. The connector is asked twice per run: at
271
+ check-state (or the provision join that sets `completed`), and in deploy's pre-flight, because deploy
272
+ overwrites the site. Steps in between trust `state.json`. A prepare step ignores `provision` entirely.
273
+ - On **resume**, `provision.status` is a hint only: check-state re-polls `hosting_websites_list-setups`
274
+ to learn the truth, then updates the field.
254
275
  - Write `state.json` however is easiest, rewriting the whole file included: the run log lives in
255
276
  `run-log.json`, which only `run-log.mjs` writes.
256
277
  - The **onboarding slug** is how hPanel names the coding tool: `claude` for Claude Code, else
@@ -269,9 +290,10 @@ in. Write it out in full each time (a shell variable holding the command breaks
269
290
  ```bash
270
291
  node <skill>/run-log.mjs <domain> run-start --tool <tool> --model <model> --skill <skill version> # check-state, first thing
271
292
  node <skill>/run-log.mjs <domain> run-update --kind resume # check-state, once the route is agreed (or redesign / iterate)
272
- node <skill>/run-log.mjs <domain> stage-start frontend # before a stage
273
- node <skill>/run-log.mjs <domain> stage-end frontend ok_after_retries --note "second framework tried"
274
- node <skill>/run-log.mjs <domain> stage-start frontend --phase shell # split stages log each phase
293
+ node <skill>/run-log.mjs <domain> next frontend # at a stage boundary: ends the open stage as ok, starts this one
294
+ node <skill>/run-log.mjs <domain> next frontend --phase shell # split stages log each phase
295
+ node <skill>/run-log.mjs <domain> stage-end frontend ok_after_retries --note "second framework tried" # any other result, or a note
296
+ node <skill>/run-log.mjs <domain> stage-start frontend # start without ending anything
275
297
  node <skill>/run-log.mjs <domain> event issue '{"stage":"content_model","symptom":"…","cause":"…","workaround":"…","severity":"medium","resolved":true}'
276
298
  node <skill>/run-log.mjs <domain> report --outcome live # done, or wherever the run stops
277
299
  node <skill>/run-log.mjs <domain> report-sent <run> # after the report was sent (see below)
@@ -280,6 +302,12 @@ node <skill>/run-log.mjs <domain> unsent # check-state:
280
302
  node <skill>/run-log.mjs <domain> run-resume --reason "about/contact layout fix" # follow-up in the same session
281
303
  ```
282
304
 
305
+ **Don't spend a turn on the log.** Put each run-log call in the same shell command as the work next
306
+ to it, joined with `&&` (e.g. `node <skill>/run-log.mjs <domain> next deploy && cd … && zip …`), and use
307
+ `next` at a boundary rather than a `stage-end` plus a `stage-start`. When the stage ending wasn't plain
308
+ `ok` or needs a note, put its `stage-end` first in the same command. `next` refuses when two stages are
309
+ open and names them; end them with `stage-end`.
310
+
283
311
  **Follow-ups continue the run.** When the user asks for a change after the final report in the
284
312
  same session (a layout fix, a copy tweak, a redeploy), that work belongs to the run it follows:
285
313
  call `run-resume`, log the feedback and the stages it re-runs as usual, then `report` again. That
@@ -1,3 +1,3 @@
1
- version=3.27.4
2
- commit=10d66593f943
3
- built=2026-11-03
1
+ version=3.28.1
2
+ commit=4609383f23a0
3
+ built=2026-11-04
@@ -72,10 +72,58 @@ npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --login
72
72
  npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --logout
73
73
  ```
74
74
 
75
- Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or `%APPDATA%\hostinger-mcp\credentials.json` (Windows) and are shared by every Hostinger MCP binary. OAuth works only in stdio mode; `--http` needs `HOSTINGER_API_TOKEN`.
75
+ Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or `%APPDATA%\hostinger-mcp\credentials.json` (Windows) and are shared by every Hostinger MCP binary. OAuth works only when the tool runs the server over its default local (stdio) transport, which is what every registration below uses; `--http` needs `HOSTINGER_API_TOKEN`.
76
76
 
77
77
  ## Phase 2 - Route to the specific tool instructions
78
78
 
79
+ **Use the Hostinger connector only through your tool's native MCP tools** (`mcp__hostinger__*`,
80
+ `mcp__hostinger-*__*`, or however your tool names them). Never spawn the MCP server yourself and
81
+ never write a JSON-RPC client to talk to it: every connector call must be a visible MCP tool call
82
+ the user can follow and approve, not a script.
83
+
84
+ ### Check both tool groups, not just "some Hostinger tools"
85
+
86
+ The build needs **two** groups of connector operations, and they come from different servers. Having
87
+ one group says nothing about the other:
88
+
89
+ | Group | Operations | Comes from | Needed by |
90
+ |---|---|---|---|
91
+ | **Hosting** | `hosting_*` (websites, deploy, build report), `wordpress_*` | `hostinger` (`npx -y @hostinger/mcp@latest`), or the scoped servers such as `hostinger-hosting` + `hostinger-wordpress` | every build |
92
+ | **Ecommerce** | `ecommerce_*` (stores, products, shipping, payments) | **only** `hostinger-ecommerce` (`npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp`), or the Ecommerce MCP in the Hostinger Connector. Neither `hostinger` nor the scoped hosting servers include it | Ecommerce backends (chosen later, in refine) |
93
+
94
+ Check each group on its own, right here at connect, before anything else:
95
+
96
+ - **Hosting:** a Hostinger search tool finds `hosting_websites_list` (e.g. search "list websites").
97
+ - **Ecommerce:** a tool from the `hostinger-ecommerce` server is in the session (Claude Code:
98
+ `mcp__hostinger-ecommerce__*`), and its search finds `ecommerce_stores_list` (e.g. search "list stores").
99
+
100
+ Only when **both** pass are the Hostinger tools "in this session". If either is missing, the tools
101
+ are **not** in this session: follow *register, restart, resume* below for the missing server(s) now,
102
+ even though other Hostinger tools respond. Don't wait for refine to choose a backend: the restart
103
+ costs the least before the user has been asked anything, and finding the gap at provision forces a
104
+ second restart in the middle of the build.
105
+
106
+ ### When the Hostinger tools aren't in this session: register, restart, resume
107
+
108
+ Most coding tools load MCP servers only when they start, so a server registered mid-run isn't usable
109
+ until the tool restarts. When either tool group above is missing:
110
+
111
+ 1. **Register the missing servers** in the tool's MCP config, as the tool route below shows: `hostinger`
112
+ (`npx -y @hostinger/mcp@latest`) if the hosting group is missing, and `hostinger-ecommerce`
113
+ (`npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp`) if the ecommerce group is missing.
114
+ Skip a server that is already registered under its name. When neither group is there, register
115
+ both: the backend isn't chosen until refine, and one restart then covers every backend.
116
+ 2. **Pull the skills and write `connect.json`** (the route's skills step and Phase 3) before you stop,
117
+ so the next run starts from them.
118
+ 3. **Send the first message and end your turn.** It follows *The first message* in
119
+ `headless/SKILL.md`: the sign-in link if one was needed, then one line saying Hostinger is set up
120
+ and asking the user to restart the tool (the route says how) and paste the same prompt again so the
121
+ build continues from there. This is a pause, not a run ending: no final report and no build report.
122
+ 4. **On the next run** the tools are loaded, so connect skips registration and check-state resumes the
123
+ domain's workspace.
124
+
125
+ If a tool loads new servers without a restart (VS Code), use them right away and skip steps 3–4.
126
+
79
127
  | Tool | Route |
80
128
  |-------------|---------------------------------|
81
129
  | Claude Code | `connect/tools/claude-code.md` |
@@ -85,8 +133,8 @@ Credentials live in `~/.config/hostinger-mcp/credentials.json` (macOS/Linux) or
85
133
  | Antigravity | `connect/tools/antigravity.md` |
86
134
  | Devin | `connect/tools/devin.md` |
87
135
 
88
- If the user's tool isn't listed yet, connect it the generic way (register the Hostinger MCP server
89
- for that tool, or drive `npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp` over stdio) and continue.
136
+ If the user's tool isn't listed yet, connect it the generic way: register both Hostinger MCP servers
137
+ in that tool's MCP config (command `npx`, args as above), then follow *register, restart, resume*.
90
138
 
91
139
  ### Always pull the latest skills (never run a stale copy)
92
140
 
@@ -8,25 +8,18 @@ description: "Specific Antigravity Hostinger MCP Server connection instructions
8
8
  - Make Hostinger MCP tools and Skills available in Google Antigravity.
9
9
  - Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
10
10
 
11
- ## Step 1 — Make the connector callable (no restart needed)
12
-
13
- The later stages drive the Hostinger connector. If its Hostinger tools already respond in this
14
- session, use them and move on.
15
-
16
- If they don't, **don't rely on registering the server and restarting** — Antigravity loads MCP servers
17
- when the editor starts, and you can't restart it mid-run. The Hostinger MCP runs as a local **stdio**
18
- process and the bootstrap already signed you in, so talk to it directly for this run: spawn
19
- `npx -y @hostinger/mcp@latest` and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout
20
- (`initialize` → `notifications/initialized` → `tools/call`). It reuses your cached sign-in automatically
21
- (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle. It
22
- exposes `search`, `execute`, `multi-execute`; everything the stages need goes through `execute`, and a
23
- result is in `reply.result.content[0].text`. Write the little client yourself (~20 lines), keep one
24
- process alive for the whole run, and use it wherever a stage calls the connector.
25
-
26
- **To persist it for future Antigravity sessions** (optional), add the server to
27
- `~/.gemini/antigravity/mcp_config.json` (Windows: `C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json`) —
28
- reachable from the Agent panel's "..." → MCP Servers → Manage MCP Servers → View raw config — then fully
29
- quit and reopen Antigravity once so it loads:
11
+ ## Step 1 — Make the MCP tools available
12
+
13
+ The later stages drive the Hostinger connector through Antigravity's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
14
+ says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
15
+ respond → use them and move on.
16
+
17
+ If either is missing, add the missing server(s) to `~/.gemini/antigravity/mcp_config.json` (Windows:
18
+ `C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json`), which you can reach from the Agent panel's
19
+ "..." → MCP Servers → Manage MCP Servers → View raw config. Merge them into any existing
20
+ `mcpServers` rather than replacing the file. The bootstrap already signed you in, so they reuse the
21
+ cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are
22
+ no tokens to handle:
30
23
 
31
24
  ```json
32
25
  {
@@ -34,11 +27,20 @@ quit and reopen Antigravity once so it loads:
34
27
  "hostinger": {
35
28
  "command": "npx",
36
29
  "args": ["-y", "@hostinger/mcp@latest"]
30
+ },
31
+ "hostinger-ecommerce": {
32
+ "command": "npx",
33
+ "args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
37
34
  }
38
35
  }
39
36
  }
40
37
  ```
41
38
 
39
+ Antigravity loads MCP servers only when the editor starts, so follow *register, restart, resume* in
40
+ `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to fully quit and reopen
41
+ Antigravity and paste the same prompt. Never spawn the server yourself or write a JSON-RPC client to
42
+ reach it.
43
+
42
44
  ## Step 2 — Install the skills and hand off
43
45
 
44
46
  Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
@@ -9,20 +9,30 @@ description: "Specific Claude Code Hostinger MCP Server connection instructions
9
9
  - Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are available.
10
10
 
11
11
 
12
- ## Step 1 — Make the MCP callable (no restart needed)
13
-
14
- Stages 2–10 drive the Hostinger connector. If its tools are already in this session
15
- (`mcp__hostinger__*`, or the scoped `mcp__hostinger-*__*`), use them and move on.
16
-
17
- If they aren't, **don't register the server and restart** — Claude Code only loads MCP servers at
18
- startup, but you don't need it to. The Hostinger MCP runs as a local **stdio** process and the
19
- bootstrap already signed you in, so talk to it directly: spawn `npx -y @hostinger/mcp@latest` and
20
- speak newline-delimited JSON-RPC 2.0 over its stdin/stdout (`initialize` →
21
- `notifications/initialized` → `tools/call`). It reuses your cached sign-in automatically
22
- (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle. It
23
- exposes `search`, `execute`, `multi-execute`; everything the stages need goes through `execute`, and
24
- a result is in `reply.result.content[0].text`. Write the little client yourself (~20 lines), keep one
25
- process alive for the whole run, and use it wherever a stage calls the connector.
12
+ ## Step 1 — Make the MCP tools available
13
+
14
+ Stages 2–10 drive the Hostinger connector through Claude Code's native MCP tools. Check **both** tool
15
+ groups as *Check both tool groups* in `connect/SKILL.md` says:
16
+
17
+ - **Hosting:** `mcp__hostinger__*`, or the scoped `mcp__hostinger-hosting__*`.
18
+ - **Ecommerce:** `mcp__hostinger-ecommerce__*`. The scoped servers (`hostinger-hosting`,
19
+ `hostinger-wordpress`, `hostinger-domains`, …) never include it, so a session full of
20
+ `mcp__hostinger-*__*` tools can still be missing it.
21
+
22
+ Both present → use them and move on. Either missing → register the missing server(s) at user scope
23
+ now (`claude mcp list` shows what's already registered; skip those). The bootstrap already signed you
24
+ in, so they reuse the cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or
25
+ `HOSTINGER_API_TOKEN`) and there are no tokens to handle:
26
+
27
+ ```bash
28
+ claude mcp add hostinger --scope user -- npx -y @hostinger/mcp@latest # hosting group missing
29
+ claude mcp add hostinger-ecommerce --scope user -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp # ecommerce group missing
30
+ ```
31
+
32
+ Claude Code loads MCP servers only at startup, so follow *register, restart, resume* in
33
+ `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to exit Claude Code, start it
34
+ again in the same folder (`claude`, or `claude --continue` to keep this conversation) and paste the
35
+ same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
26
36
 
27
37
  ## Step 2 — Install the skills and hand off
28
38
 
@@ -8,31 +8,37 @@ description: "Specific Codex Hostinger MCP Server connection instructions for th
8
8
  - Make Hostinger MCP tools and Skills available in Codex.
9
9
  - Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
10
10
 
11
- ## Step 1 — Make the connector callable (no restart needed)
11
+ ## Step 1 — Make the MCP tools available
12
12
 
13
- The later stages drive the Hostinger connector. If its Hostinger tools already respond in this
14
- session, use them and move on.
13
+ The later stages drive the Hostinger connector through Codex's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
14
+ says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
15
+ respond → use them and move on.
15
16
 
16
- If they don't, **don't rely on registering the server and restarting** — Codex loads MCP servers when
17
- it starts, and you can't restart it mid-run. The Hostinger MCP runs as a local **stdio** process and the
18
- bootstrap already signed you in, so talk to it directly for this run: spawn `npx -y @hostinger/mcp@latest`
19
- and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout (`initialize` →
20
- `notifications/initialized` → `tools/call`). It reuses your cached sign-in automatically
21
- (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle. It
22
- exposes `search`, `execute`, `multi-execute`; everything the stages need goes through `execute`, and a
23
- result is in `reply.result.content[0].text`. Write the little client yourself (~20 lines), keep one
24
- process alive for the whole run, and use it wherever a stage calls the connector.
17
+ If either is missing, register the missing server(s); skip one already registered. The bootstrap already signed you in, so they reuse the cached
18
+ sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are no tokens
19
+ to handle:
25
20
 
26
- **To persist it for future Codex sessions** (optional), register the server with
27
- `codex mcp add hostinger -- npx -y @hostinger/mcp@latest`, or add it to `~/.codex/config.toml`, then
28
- restart Codex so it loads:
21
+ ```bash
22
+ codex mcp add hostinger -- npx -y @hostinger/mcp@latest
23
+ codex mcp add hostinger-ecommerce -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp
24
+ ```
25
+
26
+ or add them to `~/.codex/config.toml`:
29
27
 
30
28
  ```toml
31
29
  [mcp_servers.hostinger]
32
30
  command = "npx"
33
31
  args = ["-y", "@hostinger/mcp@latest"]
32
+
33
+ [mcp_servers.hostinger-ecommerce]
34
+ command = "npx"
35
+ args = ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
34
36
  ```
35
37
 
38
+ Codex loads MCP servers only when it starts, so follow *register, restart, resume* in
39
+ `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to restart Codex and paste the
40
+ same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
41
+
36
42
  ## Step 2 — Install the skills and hand off
37
43
 
38
44
  Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
@@ -32,9 +32,17 @@ npm install -g @hostinger/mcp
32
32
  hostinger-api-mcp --version
33
33
  ```
34
34
 
35
- ### Persist for future Cursor sessions (optional)
35
+ ### Register the servers in Cursor
36
36
 
37
- Register the server in `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global), then fully quit and reopen Cursor once so it loads. **Do not** put `HOSTINGER_API_TOKEN` in this file when you want OAuth — leave the token unset so stdio OAuth can run:
37
+ Check **both** tool groups, as *Check both tool groups* in `connect/SKILL.md` says: hosting
38
+ (`mcp__hostinger__*` or `mcp__hostinger-hosting__*`) **and** ecommerce (`mcp__hostinger-ecommerce__*`).
39
+ The scoped `mcp__hostinger-*__*` servers never include ecommerce, so they alone don't count. Both
40
+ present → skip registration: go to Step 2 only if you still need sign-in, otherwise go to Step 3.
41
+
42
+ If either is missing, register the missing server(s) in `~/.cursor/mcp.json` (global, so every project and every
43
+ later run has them). Merge them into any existing `mcpServers` rather than replacing the file.
44
+ **Do not** put `HOSTINGER_API_TOKEN` in this file when you want OAuth: leave the token unset so
45
+ OAuth can run:
38
46
 
39
47
  ```json
40
48
  {
@@ -42,12 +50,20 @@ Register the server in `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (glo
42
50
  "hostinger": {
43
51
  "command": "npx",
44
52
  "args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-api-mcp"]
53
+ },
54
+ "hostinger-ecommerce": {
55
+ "command": "npx",
56
+ "args": ["--yes", "--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
45
57
  }
46
58
  }
47
59
  }
48
60
  ```
49
61
 
50
- If Hostinger MCP tools are already in this session (`mcp__hostinger__*` / `mcp__hostinger-*__*`), skip ahead to Step 2 only if you still need sign-in; otherwise go to Step 3.
62
+ Cursor loads MCP servers only when the editor starts, so after Step 2 and Step 3 follow
63
+ *register, restart, resume* in `connect/SKILL.md`: ask the user to fully quit and reopen Cursor
64
+ (and, if Cursor asks, enable the two Hostinger servers under Settings → MCP), then paste the same
65
+ prompt. Never spawn the server yourself or write a JSON-RPC client to reach it: every connector call
66
+ must be a native MCP tool call.
51
67
 
52
68
  ## Step 2 — Authenticate with OAuth (browser opens)
53
69
 
@@ -84,17 +100,7 @@ npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --logout
84
100
 
85
101
  **API token (optional, CI / scripts):** set `HOSTINGER_API_TOKEN` in the environment before launching Cursor. When present it always wins and no OAuth code runs. Do not commit the token.
86
102
 
87
- ## Step 3 — Use the connector in this run (no Cursor restart)
88
-
89
- Cursor only loads registered MCP servers when the editor starts, so a mid-run `.cursor/mcp.json` change will not attach tools to **this** session. For the rest of this run, talk to the local stdio server directly: spawn
90
-
91
- ```bash
92
- npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp
93
- ```
94
-
95
- and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout (`initialize` → `notifications/initialized` → `tools/call`). It reuses the cached sign-in from Step 2 (or `HOSTINGER_API_TOKEN`) — no tokens to handle in chat. It exposes `search`, `execute`, and `multi-execute`; everything the stages need goes through `execute`, and a result is in `reply.result.content[0].text`. Keep one process alive for the whole run.
96
-
97
- ## Step 4 — Install the skills and hand off
103
+ ## Step 3 — Install the skills and hand off
98
104
 
99
105
  Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
100
106
  directly with no further network calls during the run. **Always pull the latest and overwrite any
@@ -8,32 +8,37 @@ description: "Specific Devin Hostinger MCP Server connection instructions for th
8
8
  - Make Hostinger MCP tools and Skills available in Devin.
9
9
  - Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
10
10
 
11
- ## Step 1 — Make the connector callable
11
+ ## Step 1 — Make the MCP tools available
12
12
 
13
- The later stages drive the Hostinger connector. If its Hostinger tools already respond in this
14
- session, use them and move on.
13
+ The later stages drive the Hostinger connector through Devin's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
14
+ says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
15
+ respond → use them and move on.
15
16
 
16
- If they don't, register the Hostinger MCP server for Devin. The local MCP runs as a **stdio** process
17
- and the bootstrap already signed you in, so it reuses your cached sign-in automatically
18
- (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle.
17
+ If either is missing, register the missing server(s) for Devin; skip one already registered. The bootstrap already signed you in, so they reuse the
18
+ cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are no
19
+ tokens to handle.
19
20
 
20
- - **Devin CLI:** `devin mcp add hostinger -- npx -y @hostinger/mcp@latest`
21
- - **Devin app:** Settings → MCP Marketplace → **Add Your Own**, transport **STDIO**, with:
21
+ - **Devin CLI:**
22
+
23
+ ```bash
24
+ devin mcp add hostinger -- npx -y @hostinger/mcp@latest
25
+ devin mcp add hostinger-ecommerce -- npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp
26
+ ```
27
+
28
+ - **Devin app:** Settings → MCP Marketplace → **Add Your Own**, transport **STDIO**, once per server:
22
29
 
23
30
  ```json
24
- {
25
- "command": "npx",
26
- "args": ["-y", "@hostinger/mcp@latest"]
27
- }
31
+ { "command": "npx", "args": ["-y", "@hostinger/mcp@latest"] }
28
32
  ```
29
33
 
30
- On Devin Desktop, fully quit and reopen the app once after adding the server so it loads.
34
+ ```json
35
+ { "command": "npx", "args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"] }
36
+ ```
31
37
 
32
- If you can't reach the registered server from this run, drive `npx -y @hostinger/mcp@latest` directly
33
- over stdio instead: spawn it and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout
34
- (`initialize` → `notifications/initialized` → `tools/call`). It exposes `search`, `execute`,
35
- `multi-execute`; everything the stages need goes through `execute`, and a result is in
36
- `reply.result.content[0].text`.
38
+ If the tools still aren't in this session, follow *register, restart, resume* in `connect/SKILL.md`:
39
+ finish Step 2 and `connect.json`, then ask the user to restart the Devin session (on Devin Desktop,
40
+ fully quit and reopen the app) and paste the same prompt. Never spawn the server yourself or write a
41
+ JSON-RPC client to reach it.
37
42
 
38
43
  ## Step 2 — Install the skills and hand off
39
44
 
@@ -8,15 +8,16 @@ description: "Specific VS Code Hostinger MCP Server connection instructions for
8
8
  - Make Hostinger MCP tools and Skills available in VS Code (GitHub Copilot / agent mode).
9
9
  - Don't provision hosting, create stores, install WordPress, or deploy by hand here — the skill does all of that. This entry stops at signed in and checking that Hostinger MCP and skills are reachable.
10
10
 
11
- ## Step 1 — Make the connector callable
11
+ ## Step 1 — Make the MCP tools available
12
12
 
13
- The later stages drive the Hostinger connector. If its Hostinger tools already respond in this
14
- session, use them and move on.
13
+ The later stages drive the Hostinger connector through VS Code's native MCP tools. Check **both** tool groups (hosting and ecommerce), as *Check both tool groups* in `connect/SKILL.md`
14
+ says: other Hostinger tools responding doesn't mean the `hostinger-ecommerce` ones are there. Both
15
+ respond → use them and move on.
15
16
 
16
- If they don't, register the Hostinger MCP server for VS Code. The local MCP runs as a **stdio**
17
- process and the bootstrap already signed you in, so it reuses your cached sign-in automatically
18
- (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) — no tokens to handle. Add it to
19
- `.vscode/mcp.json` (workspace) or your user `settings.json` under `mcp`:
17
+ If either is missing, register the missing server(s) for VS Code; skip one already registered. The bootstrap already signed you in, so they reuse
18
+ the cached sign-in (`~/.config/hostinger-mcp/credentials.json`, or `HOSTINGER_API_TOKEN`) and there are
19
+ no tokens to handle. Add them to `.vscode/mcp.json` (workspace) or your user `settings.json` under
20
+ `mcp`:
20
21
 
21
22
  ```json
22
23
  // .vscode/mcp.json
@@ -26,21 +27,30 @@ process and the bootstrap already signed you in, so it reuses your cached sign-i
26
27
  "type": "stdio",
27
28
  "command": "npx",
28
29
  "args": ["-y", "@hostinger/mcp@latest"]
30
+ },
31
+ "hostinger-ecommerce": {
32
+ "type": "stdio",
33
+ "command": "npx",
34
+ "args": ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
29
35
  }
30
36
  }
31
37
  }
32
38
  ```
33
39
 
34
- Or add it in one command: `code --add-mcp '{"name":"hostinger","command":"npx","args":["-y","@hostinger/mcp@latest"]}'`.
35
- VS Code picks up the server and its tools become available immediately — no editor restart needed.
40
+ Or add them in two commands:
41
+
42
+ ```bash
43
+ code --add-mcp '{"name":"hostinger","command":"npx","args":["-y","@hostinger/mcp@latest"]}'
44
+ code --add-mcp '{"name":"hostinger-ecommerce","command":"npx","args":["--package=@hostinger/mcp@latest","hostinger-ecommerce-mcp"]}'
45
+ ```
46
+
47
+ VS Code picks up new servers and their tools become available right away, with no editor restart.
36
48
  (Alternatively, the official Hostinger Connector extension installs the same server:
37
49
  `code --install-extension hostinger-official.hostinger-connector`.)
38
50
 
39
- If you can't reach the registered server from this run, drive `npx -y @hostinger/mcp@latest` directly
40
- over stdio instead: spawn it and speak newline-delimited JSON-RPC 2.0 over its stdin/stdout
41
- (`initialize` → `notifications/initialized` → `tools/call`). It exposes `search`, `execute`,
42
- `multi-execute`; everything the stages need goes through `execute`, and a result is in
43
- `reply.result.content[0].text`.
51
+ If the tools still don't show up, follow *register, restart, resume* in `connect/SKILL.md`: finish
52
+ Step 2 and `connect.json`, then ask the user to run **Developer: Reload Window** and paste the same
53
+ prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
44
54
 
45
55
  ## Step 2 — Install the skills and hand off
46
56