hostinger-api-mcp 3.22.1 → 3.22.3
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 +16 -0
- package/README.md +1 -1
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/core/runtime.js +27 -12
- package/src/core/runtime.ts +27 -12
- package/src/core/tools/all.js +1 -1
- package/src/core/tools/all.ts +1 -1
- package/src/core/tools/hosting.js +1 -1
- package/src/core/tools/hosting.ts +1 -1
- 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/types.d.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ 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.22.3 — 2026-10-29
|
|
8
|
+
|
|
9
|
+
No changes to the published artifact.
|
|
10
|
+
|
|
11
|
+
## v3.22.2 — 2026-10-29
|
|
12
|
+
|
|
13
|
+
### Operations
|
|
14
|
+
|
|
15
|
+
- Changed the description of `hosting_headless_submit-build-report`
|
|
16
|
+
|
|
17
|
+
### Also in this release
|
|
18
|
+
|
|
19
|
+
- Documentation: `README.md`
|
|
20
|
+
- Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
|
|
21
|
+
- Build and packaging: `types.d.ts`
|
|
22
|
+
|
|
7
23
|
## v3.22.1 — 2026-10-29
|
|
8
24
|
|
|
9
25
|
### Also in this release
|
package/README.md
CHANGED
|
@@ -2234,7 +2234,7 @@ key to a private repository as a deploy key before deploying it.
|
|
|
2234
2234
|
|
|
2235
2235
|
Submits the build report the headless skill writes at the end of a run (including early
|
|
2236
2236
|
stops), so Hostinger can learn where builds get stuck. Send one report per call, with the
|
|
2237
|
-
report JSON as the request body, unchanged.
|
|
2237
|
+
report JSON as the request body, unchanged.
|
|
2238
2238
|
|
|
2239
2239
|
The report must match report.schema.json v1; an invalid report returns 422 and is not
|
|
2240
2240
|
stored. The report is linked to the authenticated account, so do not add account details
|
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.22.
|
|
9
|
+
"version": "3.22.3",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@hostinger/mcp",
|
|
14
|
-
"version": "3.22.
|
|
14
|
+
"version": "3.22.3",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
package/src/core/runtime.js
CHANGED
|
@@ -62,7 +62,7 @@ const GetSkillRequestSchema = z.object({
|
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
64
|
* MCP Server for Hostinger API
|
|
65
|
-
* Generated from OpenAPI spec version 2.6.
|
|
65
|
+
* Generated from OpenAPI spec version 2.6.1
|
|
66
66
|
*/
|
|
67
67
|
class MCPServer {
|
|
68
68
|
constructor({ name, version, tools, instructions, skills = [] }) {
|
|
@@ -347,30 +347,36 @@ class MCPServer {
|
|
|
347
347
|
// Directories that hold credentials, the server's own token store (hostinger-mcp) among them.
|
|
348
348
|
credentialDirectories = ['.ssh', '.aws', '.gnupg', '.config', '.kube', '.docker', '.azure', 'hostinger-mcp'];
|
|
349
349
|
|
|
350
|
-
// System directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
|
|
351
|
-
systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library'
|
|
350
|
+
// System directories and the roots of the home directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
|
|
351
|
+
systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library',
|
|
352
|
+
// Every user's home directory, whatever the current home is (root's is /root, a container's can be /).
|
|
353
|
+
'/home', '/Users', ...(process.platform === 'win32' ? [path.join(process.env.SystemDrive || 'C:', 'Users')] : [])];
|
|
352
354
|
|
|
353
355
|
// A deploy publishes what it reads, and the path comes from the model, so prompt-injected arguments could
|
|
354
356
|
// publish any readable file. Refused, before anything is read or sent: the home directory and every directory
|
|
355
357
|
// above it (they contain the credentials), other users' home directories, system directories, a path in a
|
|
356
|
-
// credential directory, and a secret file.
|
|
358
|
+
// credential directory, and a secret file. The native realpath resolves symlinks and, on macOS
|
|
359
|
+
// and Windows, the on-disk case, 8.3 short names and trailing dots; a path it cannot resolve is refused.
|
|
357
360
|
// os is imported by deploy.template: the JS generator dedupes import blocks by their whole text, and this block
|
|
358
361
|
// must stay identical to agency-hosting/shared's, or tus and fs are imported twice.
|
|
359
362
|
assertDeployablePath(localPath) {
|
|
360
363
|
let real;
|
|
361
364
|
try {
|
|
362
|
-
real = fs.realpathSync(localPath);
|
|
365
|
+
real = fs.realpathSync.native(localPath);
|
|
363
366
|
} catch (error) {
|
|
364
367
|
throw new Error('Path not found: ' + localPath);
|
|
365
368
|
}
|
|
366
369
|
let home = os.homedir();
|
|
367
370
|
try {
|
|
368
|
-
home = fs.realpathSync(home);
|
|
371
|
+
home = fs.realpathSync.native(home);
|
|
369
372
|
} catch (error) {
|
|
370
373
|
// a missing home directory has nothing in it to protect
|
|
371
374
|
}
|
|
375
|
+
// macOS and Windows file systems ignore case: /USERS/me is the home directory there.
|
|
376
|
+
const caseless = process.platform === 'darwin' || process.platform === 'win32';
|
|
377
|
+
const fold = (p) => (caseless ? p.toLowerCase() : p);
|
|
372
378
|
const inside = (dir, file) => {
|
|
373
|
-
const relative = path.relative(dir, file);
|
|
379
|
+
const relative = path.relative(fold(dir), fold(file));
|
|
374
380
|
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
375
381
|
};
|
|
376
382
|
// A home in the filesystem root (HOME=/ in a container run as a user without a passwd entry) exempts nothing.
|
|
@@ -378,9 +384,14 @@ class MCPServer {
|
|
|
378
384
|
// The directory that holds the home directories (/Users, /home); not when home sits in the root (/root).
|
|
379
385
|
const homes = path.dirname(home);
|
|
380
386
|
const otherHome = !inHome && path.dirname(homes) !== homes && inside(homes, real);
|
|
387
|
+
// Hidden directories at the top of the home (dotfiles, tool state) and the per-user app data (Library,
|
|
388
|
+
// AppData) hold keychains, browser profiles and tokens; .claude-worktrees holds Claude Code's git worktrees.
|
|
389
|
+
const top = path.relative(fold(home), fold(real)).split(path.sep)[0];
|
|
390
|
+
const inHomeData = inHome && top !== '.claude-worktrees' && (top.startsWith('.') || top === fold('Library') || top === fold('AppData'));
|
|
381
391
|
const inSystem = !inHome && this.systemDirectories.some((dir) => inside(dir, real));
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
// Windows drops trailing dots and spaces from a name: .ssh. is .ssh.
|
|
393
|
+
const inCredentials = real.split(path.sep).some((segment) => this.credentialDirectories.includes((process.platform === 'win32' ? segment.replace(/[. ]+$/, '') : segment).toLowerCase()));
|
|
394
|
+
if (inside(real, home) || otherHome || inHomeData || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
|
|
384
395
|
throw new Error('Refusing to deploy ' + localPath + ': it is, or contains, a home, system or credentials location. Pass the project directory or archive.');
|
|
385
396
|
}
|
|
386
397
|
}
|
|
@@ -388,13 +399,14 @@ class MCPServer {
|
|
|
388
399
|
// Env files (examples such as .env.example are kept), credentials and private keys: a deploy would serve them
|
|
389
400
|
// publicly. Matches the CLI's isSecretFile, plus .npmrc and the Hostinger credential files.
|
|
390
401
|
isSecretFile(name) {
|
|
391
|
-
if (['.env', '.envrc', '.netrc', '.git-credentials', '.pgpass', '.npmrc', '.hostinger.yaml', 'credentials.json'].includes(name)) {
|
|
402
|
+
if (['.env', '.envrc', '.netrc', '.git-credentials', '.pgpass', '.npmrc', '.hostinger.yaml', 'credentials.json', 'auth.json', '.my.cnf', '.pypirc', '.vault-token'].includes(name)) {
|
|
392
403
|
return true;
|
|
393
404
|
}
|
|
394
405
|
if (['id_rsa', 'id_dsa', 'id_ecdsa', 'id_ed25519'].some((key) => name.startsWith(key))) {
|
|
395
406
|
return true;
|
|
396
407
|
}
|
|
397
|
-
|
|
408
|
+
// Shell and REPL histories, and Terraform state (it stores secrets in plain text).
|
|
409
|
+
if (name.endsWith('.pem') || name.endsWith('.key') || name.endsWith('_history') || name.endsWith('.tfstate') || name.endsWith('.tfstate.backup')) {
|
|
398
410
|
return true;
|
|
399
411
|
}
|
|
400
412
|
return name.startsWith('.env.') && !['.env.example', '.env.sample', '.env.template', '.env.dist'].includes(name);
|
|
@@ -415,7 +427,10 @@ class MCPServer {
|
|
|
415
427
|
}
|
|
416
428
|
const relativePath = relativeDir ? relativeDir + '/' + entry.name : entry.name;
|
|
417
429
|
if (entry.isDirectory()) {
|
|
418
|
-
|
|
430
|
+
// Credential directories are left out and reported; a project's own .config/ ships.
|
|
431
|
+
if (entry.name !== '.config' && this.credentialDirectories.includes(entry.name.toLowerCase())) {
|
|
432
|
+
skipped.push(relativePath);
|
|
433
|
+
} else if (entry.name !== 'node_modules' && entry.name !== '.git') {
|
|
419
434
|
walk(relativePath);
|
|
420
435
|
}
|
|
421
436
|
} else if (entry.isFile() && entry.name !== '.DS_Store' && path.resolve(dir, relativePath) !== exclude) {
|
package/src/core/runtime.ts
CHANGED
|
@@ -94,7 +94,7 @@ interface Skill { uri: string; frontmatter: Record<string, unknown>; resources:
|
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* MCP Server for Hostinger API
|
|
97
|
-
* Generated from OpenAPI spec version 2.6.
|
|
97
|
+
* Generated from OpenAPI spec version 2.6.1
|
|
98
98
|
*/
|
|
99
99
|
class MCPServer {
|
|
100
100
|
private readonly name: string;
|
|
@@ -379,30 +379,36 @@ class MCPServer {
|
|
|
379
379
|
// Directories that hold credentials, the server's own token store (hostinger-mcp) among them.
|
|
380
380
|
private credentialDirectories = ['.ssh', '.aws', '.gnupg', '.config', '.kube', '.docker', '.azure', 'hostinger-mcp'];
|
|
381
381
|
|
|
382
|
-
// System directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
|
|
383
|
-
private systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library'
|
|
382
|
+
// System directories and the roots of the home directories. /var as a whole stays deployable: sites live in /var/www, and macOS keeps its temp dir there.
|
|
383
|
+
private systemDirectories = ['/etc', '/root', '/usr', '/bin', '/sbin', '/boot', '/proc', '/sys', '/dev', '/var/lib', '/var/log', '/var/db', '/var/root', '/private/etc', '/private/var/lib', '/private/var/log', '/private/var/db', '/private/var/root', '/System', '/Library',
|
|
384
|
+
// Every user's home directory, whatever the current home is (root's is /root, a container's can be /).
|
|
385
|
+
'/home', '/Users', ...(process.platform === 'win32' ? [path.join(process.env.SystemDrive || 'C:', 'Users')] : [])];
|
|
384
386
|
|
|
385
387
|
// A deploy publishes what it reads, and the path comes from the model, so prompt-injected arguments could
|
|
386
388
|
// publish any readable file. Refused, before anything is read or sent: the home directory and every directory
|
|
387
389
|
// above it (they contain the credentials), other users' home directories, system directories, a path in a
|
|
388
|
-
// credential directory, and a secret file.
|
|
390
|
+
// credential directory, and a secret file. The native realpath resolves symlinks and, on macOS
|
|
391
|
+
// and Windows, the on-disk case, 8.3 short names and trailing dots; a path it cannot resolve is refused.
|
|
389
392
|
// os is imported by deploy.template: the JS generator dedupes import blocks by their whole text, and this block
|
|
390
393
|
// must stay identical to agency-hosting/shared's, or tus and fs are imported twice.
|
|
391
394
|
private assertDeployablePath(localPath: string): void {
|
|
392
395
|
let real: string;
|
|
393
396
|
try {
|
|
394
|
-
real = fs.realpathSync(localPath);
|
|
397
|
+
real = fs.realpathSync.native(localPath);
|
|
395
398
|
} catch (error) {
|
|
396
399
|
throw new Error('Path not found: ' + localPath);
|
|
397
400
|
}
|
|
398
401
|
let home = os.homedir();
|
|
399
402
|
try {
|
|
400
|
-
home = fs.realpathSync(home);
|
|
403
|
+
home = fs.realpathSync.native(home);
|
|
401
404
|
} catch (error) {
|
|
402
405
|
// a missing home directory has nothing in it to protect
|
|
403
406
|
}
|
|
407
|
+
// macOS and Windows file systems ignore case: /USERS/me is the home directory there.
|
|
408
|
+
const caseless = process.platform === 'darwin' || process.platform === 'win32';
|
|
409
|
+
const fold = (p: string): string => (caseless ? p.toLowerCase() : p);
|
|
404
410
|
const inside = (dir: string, file: string): boolean => {
|
|
405
|
-
const relative = path.relative(dir, file);
|
|
411
|
+
const relative = path.relative(fold(dir), fold(file));
|
|
406
412
|
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
407
413
|
};
|
|
408
414
|
// A home in the filesystem root (HOME=/ in a container run as a user without a passwd entry) exempts nothing.
|
|
@@ -410,9 +416,14 @@ class MCPServer {
|
|
|
410
416
|
// The directory that holds the home directories (/Users, /home); not when home sits in the root (/root).
|
|
411
417
|
const homes = path.dirname(home);
|
|
412
418
|
const otherHome = !inHome && path.dirname(homes) !== homes && inside(homes, real);
|
|
419
|
+
// Hidden directories at the top of the home (dotfiles, tool state) and the per-user app data (Library,
|
|
420
|
+
// AppData) hold keychains, browser profiles and tokens; .claude-worktrees holds Claude Code's git worktrees.
|
|
421
|
+
const top = path.relative(fold(home), fold(real)).split(path.sep)[0];
|
|
422
|
+
const inHomeData = inHome && top !== '.claude-worktrees' && (top.startsWith('.') || top === fold('Library') || top === fold('AppData'));
|
|
413
423
|
const inSystem = !inHome && this.systemDirectories.some((dir: string) => inside(dir, real));
|
|
414
|
-
|
|
415
|
-
|
|
424
|
+
// Windows drops trailing dots and spaces from a name: .ssh. is .ssh.
|
|
425
|
+
const inCredentials = real.split(path.sep).some((segment: string) => this.credentialDirectories.includes((process.platform === 'win32' ? segment.replace(/[. ]+$/, '') : segment).toLowerCase()));
|
|
426
|
+
if (inside(real, home) || otherHome || inHomeData || inSystem || inCredentials || (fs.statSync(real).isFile() && this.isSecretFile(path.basename(real)))) {
|
|
416
427
|
throw new Error('Refusing to deploy ' + localPath + ': it is, or contains, a home, system or credentials location. Pass the project directory or archive.');
|
|
417
428
|
}
|
|
418
429
|
}
|
|
@@ -420,13 +431,14 @@ class MCPServer {
|
|
|
420
431
|
// Env files (examples such as .env.example are kept), credentials and private keys: a deploy would serve them
|
|
421
432
|
// publicly. Matches the CLI's isSecretFile, plus .npmrc and the Hostinger credential files.
|
|
422
433
|
private isSecretFile(name: string): boolean {
|
|
423
|
-
if (['.env', '.envrc', '.netrc', '.git-credentials', '.pgpass', '.npmrc', '.hostinger.yaml', 'credentials.json'].includes(name)) {
|
|
434
|
+
if (['.env', '.envrc', '.netrc', '.git-credentials', '.pgpass', '.npmrc', '.hostinger.yaml', 'credentials.json', 'auth.json', '.my.cnf', '.pypirc', '.vault-token'].includes(name)) {
|
|
424
435
|
return true;
|
|
425
436
|
}
|
|
426
437
|
if (['id_rsa', 'id_dsa', 'id_ecdsa', 'id_ed25519'].some((key) => name.startsWith(key))) {
|
|
427
438
|
return true;
|
|
428
439
|
}
|
|
429
|
-
|
|
440
|
+
// Shell and REPL histories, and Terraform state (it stores secrets in plain text).
|
|
441
|
+
if (name.endsWith('.pem') || name.endsWith('.key') || name.endsWith('_history') || name.endsWith('.tfstate') || name.endsWith('.tfstate.backup')) {
|
|
430
442
|
return true;
|
|
431
443
|
}
|
|
432
444
|
return name.startsWith('.env.') && !['.env.example', '.env.sample', '.env.template', '.env.dist'].includes(name);
|
|
@@ -447,7 +459,10 @@ class MCPServer {
|
|
|
447
459
|
}
|
|
448
460
|
const relativePath = relativeDir ? relativeDir + '/' + entry.name : entry.name;
|
|
449
461
|
if (entry.isDirectory()) {
|
|
450
|
-
|
|
462
|
+
// Credential directories are left out and reported; a project's own .config/ ships.
|
|
463
|
+
if (entry.name !== '.config' && this.credentialDirectories.includes(entry.name.toLowerCase())) {
|
|
464
|
+
skipped.push(relativePath);
|
|
465
|
+
} else if (entry.name !== 'node_modules' && entry.name !== '.git') {
|
|
451
466
|
walk(relativePath);
|
|
452
467
|
}
|
|
453
468
|
} else if (entry.isFile() && entry.name !== '.DS_Store' && path.resolve(dir, relativePath) !== exclude) {
|
package/src/core/tools/all.js
CHANGED
|
@@ -8103,7 +8103,7 @@ export default [
|
|
|
8103
8103
|
"readOnlyHint": false,
|
|
8104
8104
|
"destructiveHint": false
|
|
8105
8105
|
},
|
|
8106
|
-
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged
|
|
8106
|
+
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged.\n\nThe report must match report.schema.json v1; an invalid report returns 422 and is not\nstored. The report is linked to the authenticated account, so do not add account details\nto it.",
|
|
8107
8107
|
"method": "POST",
|
|
8108
8108
|
"path": "/api/hosting/v1/headless/agent-reports",
|
|
8109
8109
|
"inputSchema": {
|
package/src/core/tools/all.ts
CHANGED
|
@@ -8120,7 +8120,7 @@ const tools: OpenApiTool[] = [
|
|
|
8120
8120
|
"readOnlyHint": false,
|
|
8121
8121
|
"destructiveHint": false
|
|
8122
8122
|
},
|
|
8123
|
-
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged
|
|
8123
|
+
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged.\n\nThe report must match report.schema.json v1; an invalid report returns 422 and is not\nstored. The report is linked to the authenticated account, so do not add account details\nto it.",
|
|
8124
8124
|
"method": "POST",
|
|
8125
8125
|
"path": "/api/hosting/v1/headless/agent-reports",
|
|
8126
8126
|
"inputSchema": {
|
|
@@ -2413,7 +2413,7 @@ export default [
|
|
|
2413
2413
|
"readOnlyHint": false,
|
|
2414
2414
|
"destructiveHint": false
|
|
2415
2415
|
},
|
|
2416
|
-
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged
|
|
2416
|
+
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged.\n\nThe report must match report.schema.json v1; an invalid report returns 422 and is not\nstored. The report is linked to the authenticated account, so do not add account details\nto it.",
|
|
2417
2417
|
"method": "POST",
|
|
2418
2418
|
"path": "/api/hosting/v1/headless/agent-reports",
|
|
2419
2419
|
"inputSchema": {
|
|
@@ -2430,7 +2430,7 @@ const tools: OpenApiTool[] = [
|
|
|
2430
2430
|
"readOnlyHint": false,
|
|
2431
2431
|
"destructiveHint": false
|
|
2432
2432
|
},
|
|
2433
|
-
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged
|
|
2433
|
+
"description": "Submits the build report the headless skill writes at the end of a run (including early\nstops), so Hostinger can learn where builds get stuck. Send one report per call, with the\nreport JSON as the request body, unchanged.\n\nThe report must match report.schema.json v1; an invalid report returns 422 and is not\nstored. The report is linked to the authenticated account, so do not add account details\nto it.",
|
|
2434
2434
|
"method": "POST",
|
|
2435
2435
|
"path": "/api/hosting/v1/headless/agent-reports",
|
|
2436
2436
|
"inputSchema": {
|
|
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
|
|
|
4
4
|
import tools from '../core/tools/agency-hosting.js';
|
|
5
5
|
import instructions from '../core/instructions.agency-hosting.js';
|
|
6
6
|
|
|
7
|
-
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.22.
|
|
7
|
+
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.22.3', tools, instructions });
|
|
@@ -4,4 +4,4 @@ import { startServer } from '../core/runtime.js';
|
|
|
4
4
|
import tools from '../core/tools/agency-hosting.js';
|
|
5
5
|
import instructions from '../core/instructions.agency-hosting.js';
|
|
6
6
|
|
|
7
|
-
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.22.
|
|
7
|
+
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.22.3', tools, instructions });
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
import { startServer } from '../core/runtime.js';
|
|
4
4
|
import tools from '../core/tools/agent-readiness.js';
|
|
5
5
|
|
|
6
|
-
startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.22.
|
|
6
|
+
startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.22.3', tools });
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
import { startServer } from '../core/runtime.js';
|
|
4
4
|
import tools from '../core/tools/agent-readiness.js';
|
|
5
5
|
|
|
6
|
-
startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.22.
|
|
6
|
+
startServer({ name: 'hostinger-agent-readiness-mcp', version: '3.22.3', tools });
|
package/src/servers/all.js
CHANGED
|
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
|
|
|
5
5
|
import instructions from '../core/instructions.js';
|
|
6
6
|
import skills from '../core/skills.js';
|
|
7
7
|
|
|
8
|
-
startServer({ name: 'hostinger-api-mcp', version: '3.22.
|
|
8
|
+
startServer({ name: 'hostinger-api-mcp', version: '3.22.3', tools, instructions, skills });
|
package/src/servers/all.ts
CHANGED
|
@@ -5,4 +5,4 @@ import tools from '../core/tools/all.js';
|
|
|
5
5
|
import instructions from '../core/instructions.js';
|
|
6
6
|
import skills from '../core/skills.js';
|
|
7
7
|
|
|
8
|
-
startServer({ name: 'hostinger-api-mcp', version: '3.22.
|
|
8
|
+
startServer({ name: 'hostinger-api-mcp', version: '3.22.3', tools, instructions, skills });
|
package/src/servers/billing.js
CHANGED
package/src/servers/billing.ts
CHANGED
package/src/servers/dns.js
CHANGED
package/src/servers/dns.ts
CHANGED
package/src/servers/domains.js
CHANGED
package/src/servers/domains.ts
CHANGED
package/src/servers/ecommerce.js
CHANGED
package/src/servers/ecommerce.ts
CHANGED
package/src/servers/horizons.js
CHANGED
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.22.
|
|
7
|
+
startServer({ name: 'hostinger-hosting-mcp', version: '3.22.3', 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.22.
|
|
7
|
+
startServer({ name: 'hostinger-hosting-mcp', version: '3.22.3', 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
|
@@ -4602,7 +4602,7 @@ key to a private repository as a deploy key before deploying it.
|
|
|
4602
4602
|
/**
|
|
4603
4603
|
* Submits the build report the headless skill writes at the end of a run (including early
|
|
4604
4604
|
stops), so Hostinger can learn where builds get stuck. Send one report per call, with the
|
|
4605
|
-
report JSON as the request body, unchanged.
|
|
4605
|
+
report JSON as the request body, unchanged.
|
|
4606
4606
|
|
|
4607
4607
|
The report must match report.schema.json v1; an invalid report returns 422 and is not
|
|
4608
4608
|
stored. The report is linked to the authenticated account, so do not add account details
|