@hostinger/mcp 2.14.0 → 2.15.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 CHANGED
@@ -4,6 +4,18 @@ 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
+ ## v2.15.0 — 2026-10-14
8
+
9
+ ### Operations
10
+
11
+ - Added `hosting_headless_submit-build-report` — Submit headless build report
12
+
13
+ ### Also in this release
14
+
15
+ - Documentation: `README.md`
16
+ - Request handling and authentication: `src/core/runtime.js`, `src/core/runtime.ts`
17
+ - Build and packaging: `types.d.ts`
18
+
7
19
  ## v2.14.0 — 2026-10-14
8
20
 
9
21
  ### Operations
package/README.md CHANGED
@@ -69,14 +69,14 @@ pnpm update -g @hostinger/mcp
69
69
 
70
70
  This package installs the following MCP server commands:
71
71
 
72
- - `hostinger-api-mcp` — unified server over every operation (416 total)
72
+ - `hostinger-api-mcp` — unified server over every operation (417 total)
73
73
  - `hostinger-agency-hosting-mcp` — 42 operations for agency-hosting
74
74
  - `hostinger-billing-mcp` — 9 operations for billing
75
75
  - `hostinger-dns-mcp` — 8 operations for dns
76
76
  - `hostinger-domains-mcp` — 42 operations for domains
77
77
  - `hostinger-ecommerce-mcp` — 29 operations for ecommerce
78
78
  - `hostinger-horizons-mcp` — 6 operations for horizons
79
- - `hostinger-hosting-mcp` — 80 operations for hosting
79
+ - `hostinger-hosting-mcp` — 81 operations for hosting
80
80
  - `hostinger-mail-mcp` — 38 operations for mail
81
81
  - `hostinger-reach-mcp` — 56 operations for reach
82
82
  - `hostinger-vps-mcp` — 67 operations for vps
@@ -2282,6 +2282,19 @@ key to a private repository as a deploy key before deploying it.
2282
2282
  - **Method**: `POST`
2283
2283
  - **Path**: `/api/hosting/v1/accounts/{username}/git/ssh-key`
2284
2284
 
2285
+ #### hosting_headless_submit-build-report
2286
+
2287
+ Submits the build report the headless skill writes at the end of a run (including early
2288
+ stops), so Hostinger can learn where builds get stuck. Send one report per call, with the
2289
+ report JSON as the request body, unchanged. Only send a report when the user agreed to it.
2290
+
2291
+ The report must match report.schema.json v1; an invalid report returns 422 and is not
2292
+ stored. The report is linked to the authenticated account, so do not add account details
2293
+ to it.
2294
+
2295
+ - **Method**: `POST`
2296
+ - **Path**: `/api/hosting/v1/headless/agent-reports`
2297
+
2285
2298
  #### hosting_nodejs_list-builds
2286
2299
 
2287
2300
  Retrieve a paginated list of Node.js build processes for a specific website.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
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/mcp",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
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": "2.14.0",
9
+ "version": "2.15.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "2.14.0",
14
+ "version": "2.15.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -64,7 +64,7 @@ const GetSkillRequestSchema = z.object({
64
64
 
65
65
  /**
66
66
  * MCP Server for Hostinger API
67
- * Generated from OpenAPI spec version 1.65.0
67
+ * Generated from OpenAPI spec version 1.66.0
68
68
  */
69
69
  class MCPServer {
70
70
  constructor({ name, version, tools, instructions, skills = [] }) {
@@ -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 1.65.0
97
+ * Generated from OpenAPI spec version 1.66.0
98
98
  */
99
99
  class MCPServer {
100
100
  private readonly name: string;
@@ -7317,6 +7317,229 @@ export default [
7317
7317
  ],
7318
7318
  "group": "hosting"
7319
7319
  },
7320
+ {
7321
+ "name": "hosting_headless_submit-build-report",
7322
+ "title": "Submit headless build report",
7323
+ "annotations": {
7324
+ "title": "Submit headless build report",
7325
+ "readOnlyHint": false,
7326
+ "destructiveHint": false
7327
+ },
7328
+ "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. Only send a report when the user agreed to it.\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.",
7329
+ "method": "POST",
7330
+ "path": "/api/hosting/v1/headless/agent-reports",
7331
+ "inputSchema": {
7332
+ "type": "object",
7333
+ "properties": {
7334
+ "schema_version": {
7335
+ "type": "string",
7336
+ "description": "Report schema version",
7337
+ "enum": [
7338
+ "1"
7339
+ ]
7340
+ },
7341
+ "generated_at": {
7342
+ "type": "string",
7343
+ "description": "When the report was written"
7344
+ },
7345
+ "consent": {
7346
+ "type": "object",
7347
+ "description": "Upload status of the report, as written by the headless skill",
7348
+ "properties": {
7349
+ "sent": {
7350
+ "type": "boolean",
7351
+ "description": "sent parameter"
7352
+ },
7353
+ "note": {
7354
+ "type": "string",
7355
+ "description": "note parameter"
7356
+ }
7357
+ },
7358
+ "required": [
7359
+ "sent"
7360
+ ]
7361
+ },
7362
+ "run": {
7363
+ "type": "object",
7364
+ "description": "The run the report is for",
7365
+ "properties": {
7366
+ "id": {
7367
+ "type": "string",
7368
+ "description": "id parameter"
7369
+ },
7370
+ "kind": {
7371
+ "type": "string",
7372
+ "description": "kind parameter",
7373
+ "enum": [
7374
+ "build",
7375
+ "resume",
7376
+ "redesign",
7377
+ "iterate"
7378
+ ]
7379
+ },
7380
+ "skill": {
7381
+ "type": "string",
7382
+ "description": "skill parameter"
7383
+ },
7384
+ "follow_ups": {
7385
+ "type": "array",
7386
+ "description": "follow_ups parameter",
7387
+ "items": {
7388
+ "type": "object",
7389
+ "description": "follow_ups parameter",
7390
+ "properties": {}
7391
+ }
7392
+ }
7393
+ },
7394
+ "required": [
7395
+ "id",
7396
+ "kind"
7397
+ ]
7398
+ },
7399
+ "info": {
7400
+ "type": "object",
7401
+ "description": "Website, tool and outcome of the run",
7402
+ "properties": {
7403
+ "domain": {
7404
+ "type": "string",
7405
+ "description": "domain parameter"
7406
+ },
7407
+ "tool": {
7408
+ "type": "string",
7409
+ "description": "tool parameter"
7410
+ },
7411
+ "outcome": {
7412
+ "type": "string",
7413
+ "description": "outcome parameter",
7414
+ "enum": [
7415
+ "live",
7416
+ "stopped",
7417
+ "failed",
7418
+ "abandoned"
7419
+ ]
7420
+ }
7421
+ },
7422
+ "required": [
7423
+ "domain",
7424
+ "tool",
7425
+ "outcome"
7426
+ ]
7427
+ },
7428
+ "timing": {
7429
+ "type": "object",
7430
+ "description": "Run start and end times and per-stage timings",
7431
+ "properties": {
7432
+ "started_at": {
7433
+ "type": "string",
7434
+ "description": "started_at parameter"
7435
+ },
7436
+ "ended_at": {
7437
+ "type": "string",
7438
+ "description": "ended_at parameter"
7439
+ },
7440
+ "minutes_total": {
7441
+ "type": "number",
7442
+ "description": "minutes_total parameter"
7443
+ },
7444
+ "stages": {
7445
+ "type": "array",
7446
+ "description": "stages parameter",
7447
+ "items": {
7448
+ "type": "object",
7449
+ "description": "stages parameter",
7450
+ "properties": {}
7451
+ }
7452
+ }
7453
+ },
7454
+ "required": [
7455
+ "started_at",
7456
+ "ended_at",
7457
+ "minutes_total",
7458
+ "stages"
7459
+ ]
7460
+ },
7461
+ "tokens": {
7462
+ "type": "object",
7463
+ "description": "Token usage, only when the tool reports its own usage",
7464
+ "properties": {}
7465
+ },
7466
+ "issues": {
7467
+ "type": "array",
7468
+ "description": "Problems hit during the run",
7469
+ "items": {
7470
+ "type": "object",
7471
+ "description": "issues parameter",
7472
+ "properties": {}
7473
+ }
7474
+ },
7475
+ "user_feedback": {
7476
+ "type": "array",
7477
+ "description": "Feedback the user gave during the run",
7478
+ "items": {
7479
+ "type": "object",
7480
+ "description": "user_feedback parameter",
7481
+ "properties": {}
7482
+ }
7483
+ },
7484
+ "skill_gaps": {
7485
+ "type": "array",
7486
+ "description": "Places where the skill instructions were missing or wrong",
7487
+ "items": {
7488
+ "type": "object",
7489
+ "description": "skill_gaps parameter",
7490
+ "properties": {}
7491
+ }
7492
+ },
7493
+ "what_went_well": {
7494
+ "type": "array",
7495
+ "description": "Things that worked well during the run",
7496
+ "items": {
7497
+ "type": "object",
7498
+ "description": "what_went_well parameter",
7499
+ "properties": {}
7500
+ }
7501
+ },
7502
+ "logging_gaps": {
7503
+ "type": "array",
7504
+ "description": "Where the run log is missing or unsure",
7505
+ "items": {
7506
+ "type": "object",
7507
+ "description": "logging_gaps parameter",
7508
+ "properties": {}
7509
+ }
7510
+ },
7511
+ "previous_runs": {
7512
+ "type": "array",
7513
+ "description": "Earlier runs for the same website",
7514
+ "items": {
7515
+ "type": "object",
7516
+ "description": "previous_runs parameter",
7517
+ "properties": {}
7518
+ }
7519
+ }
7520
+ },
7521
+ "required": [
7522
+ "schema_version",
7523
+ "generated_at",
7524
+ "consent",
7525
+ "run",
7526
+ "info",
7527
+ "timing",
7528
+ "tokens",
7529
+ "issues",
7530
+ "user_feedback",
7531
+ "skill_gaps",
7532
+ "what_went_well",
7533
+ "previous_runs"
7534
+ ]
7535
+ },
7536
+ "security": [
7537
+ {
7538
+ "apiToken": []
7539
+ }
7540
+ ],
7541
+ "group": "hosting"
7542
+ },
7320
7543
  {
7321
7544
  "name": "hosting_nodejs_list-builds",
7322
7545
  "title": "List NodeJS builds",
@@ -7331,6 +7331,229 @@ const tools: OpenApiTool[] = [
7331
7331
  ],
7332
7332
  "group": "hosting"
7333
7333
  },
7334
+ {
7335
+ "name": "hosting_headless_submit-build-report",
7336
+ "title": "Submit headless build report",
7337
+ "annotations": {
7338
+ "title": "Submit headless build report",
7339
+ "readOnlyHint": false,
7340
+ "destructiveHint": false
7341
+ },
7342
+ "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. Only send a report when the user agreed to it.\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.",
7343
+ "method": "POST",
7344
+ "path": "/api/hosting/v1/headless/agent-reports",
7345
+ "inputSchema": {
7346
+ "type": "object",
7347
+ "properties": {
7348
+ "schema_version": {
7349
+ "type": "string",
7350
+ "description": "Report schema version",
7351
+ "enum": [
7352
+ "1"
7353
+ ]
7354
+ },
7355
+ "generated_at": {
7356
+ "type": "string",
7357
+ "description": "When the report was written"
7358
+ },
7359
+ "consent": {
7360
+ "type": "object",
7361
+ "description": "Upload status of the report, as written by the headless skill",
7362
+ "properties": {
7363
+ "sent": {
7364
+ "type": "boolean",
7365
+ "description": "sent parameter"
7366
+ },
7367
+ "note": {
7368
+ "type": "string",
7369
+ "description": "note parameter"
7370
+ }
7371
+ },
7372
+ "required": [
7373
+ "sent"
7374
+ ]
7375
+ },
7376
+ "run": {
7377
+ "type": "object",
7378
+ "description": "The run the report is for",
7379
+ "properties": {
7380
+ "id": {
7381
+ "type": "string",
7382
+ "description": "id parameter"
7383
+ },
7384
+ "kind": {
7385
+ "type": "string",
7386
+ "description": "kind parameter",
7387
+ "enum": [
7388
+ "build",
7389
+ "resume",
7390
+ "redesign",
7391
+ "iterate"
7392
+ ]
7393
+ },
7394
+ "skill": {
7395
+ "type": "string",
7396
+ "description": "skill parameter"
7397
+ },
7398
+ "follow_ups": {
7399
+ "type": "array",
7400
+ "description": "follow_ups parameter",
7401
+ "items": {
7402
+ "type": "object",
7403
+ "description": "follow_ups parameter",
7404
+ "properties": {}
7405
+ }
7406
+ }
7407
+ },
7408
+ "required": [
7409
+ "id",
7410
+ "kind"
7411
+ ]
7412
+ },
7413
+ "info": {
7414
+ "type": "object",
7415
+ "description": "Website, tool and outcome of the run",
7416
+ "properties": {
7417
+ "domain": {
7418
+ "type": "string",
7419
+ "description": "domain parameter"
7420
+ },
7421
+ "tool": {
7422
+ "type": "string",
7423
+ "description": "tool parameter"
7424
+ },
7425
+ "outcome": {
7426
+ "type": "string",
7427
+ "description": "outcome parameter",
7428
+ "enum": [
7429
+ "live",
7430
+ "stopped",
7431
+ "failed",
7432
+ "abandoned"
7433
+ ]
7434
+ }
7435
+ },
7436
+ "required": [
7437
+ "domain",
7438
+ "tool",
7439
+ "outcome"
7440
+ ]
7441
+ },
7442
+ "timing": {
7443
+ "type": "object",
7444
+ "description": "Run start and end times and per-stage timings",
7445
+ "properties": {
7446
+ "started_at": {
7447
+ "type": "string",
7448
+ "description": "started_at parameter"
7449
+ },
7450
+ "ended_at": {
7451
+ "type": "string",
7452
+ "description": "ended_at parameter"
7453
+ },
7454
+ "minutes_total": {
7455
+ "type": "number",
7456
+ "description": "minutes_total parameter"
7457
+ },
7458
+ "stages": {
7459
+ "type": "array",
7460
+ "description": "stages parameter",
7461
+ "items": {
7462
+ "type": "object",
7463
+ "description": "stages parameter",
7464
+ "properties": {}
7465
+ }
7466
+ }
7467
+ },
7468
+ "required": [
7469
+ "started_at",
7470
+ "ended_at",
7471
+ "minutes_total",
7472
+ "stages"
7473
+ ]
7474
+ },
7475
+ "tokens": {
7476
+ "type": "object",
7477
+ "description": "Token usage, only when the tool reports its own usage",
7478
+ "properties": {}
7479
+ },
7480
+ "issues": {
7481
+ "type": "array",
7482
+ "description": "Problems hit during the run",
7483
+ "items": {
7484
+ "type": "object",
7485
+ "description": "issues parameter",
7486
+ "properties": {}
7487
+ }
7488
+ },
7489
+ "user_feedback": {
7490
+ "type": "array",
7491
+ "description": "Feedback the user gave during the run",
7492
+ "items": {
7493
+ "type": "object",
7494
+ "description": "user_feedback parameter",
7495
+ "properties": {}
7496
+ }
7497
+ },
7498
+ "skill_gaps": {
7499
+ "type": "array",
7500
+ "description": "Places where the skill instructions were missing or wrong",
7501
+ "items": {
7502
+ "type": "object",
7503
+ "description": "skill_gaps parameter",
7504
+ "properties": {}
7505
+ }
7506
+ },
7507
+ "what_went_well": {
7508
+ "type": "array",
7509
+ "description": "Things that worked well during the run",
7510
+ "items": {
7511
+ "type": "object",
7512
+ "description": "what_went_well parameter",
7513
+ "properties": {}
7514
+ }
7515
+ },
7516
+ "logging_gaps": {
7517
+ "type": "array",
7518
+ "description": "Where the run log is missing or unsure",
7519
+ "items": {
7520
+ "type": "object",
7521
+ "description": "logging_gaps parameter",
7522
+ "properties": {}
7523
+ }
7524
+ },
7525
+ "previous_runs": {
7526
+ "type": "array",
7527
+ "description": "Earlier runs for the same website",
7528
+ "items": {
7529
+ "type": "object",
7530
+ "description": "previous_runs parameter",
7531
+ "properties": {}
7532
+ }
7533
+ }
7534
+ },
7535
+ "required": [
7536
+ "schema_version",
7537
+ "generated_at",
7538
+ "consent",
7539
+ "run",
7540
+ "info",
7541
+ "timing",
7542
+ "tokens",
7543
+ "issues",
7544
+ "user_feedback",
7545
+ "skill_gaps",
7546
+ "what_went_well",
7547
+ "previous_runs"
7548
+ ]
7549
+ },
7550
+ "security": [
7551
+ {
7552
+ "apiToken": []
7553
+ }
7554
+ ],
7555
+ "group": "hosting"
7556
+ },
7334
7557
  {
7335
7558
  "name": "hosting_nodejs_list-builds",
7336
7559
  "title": "List NodeJS builds",
@@ -1790,6 +1790,229 @@ export default [
1790
1790
  ],
1791
1791
  "group": "hosting"
1792
1792
  },
1793
+ {
1794
+ "name": "hosting_headless_submit-build-report",
1795
+ "title": "Submit headless build report",
1796
+ "annotations": {
1797
+ "title": "Submit headless build report",
1798
+ "readOnlyHint": false,
1799
+ "destructiveHint": false
1800
+ },
1801
+ "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. Only send a report when the user agreed to it.\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.",
1802
+ "method": "POST",
1803
+ "path": "/api/hosting/v1/headless/agent-reports",
1804
+ "inputSchema": {
1805
+ "type": "object",
1806
+ "properties": {
1807
+ "schema_version": {
1808
+ "type": "string",
1809
+ "description": "Report schema version",
1810
+ "enum": [
1811
+ "1"
1812
+ ]
1813
+ },
1814
+ "generated_at": {
1815
+ "type": "string",
1816
+ "description": "When the report was written"
1817
+ },
1818
+ "consent": {
1819
+ "type": "object",
1820
+ "description": "Upload status of the report, as written by the headless skill",
1821
+ "properties": {
1822
+ "sent": {
1823
+ "type": "boolean",
1824
+ "description": "sent parameter"
1825
+ },
1826
+ "note": {
1827
+ "type": "string",
1828
+ "description": "note parameter"
1829
+ }
1830
+ },
1831
+ "required": [
1832
+ "sent"
1833
+ ]
1834
+ },
1835
+ "run": {
1836
+ "type": "object",
1837
+ "description": "The run the report is for",
1838
+ "properties": {
1839
+ "id": {
1840
+ "type": "string",
1841
+ "description": "id parameter"
1842
+ },
1843
+ "kind": {
1844
+ "type": "string",
1845
+ "description": "kind parameter",
1846
+ "enum": [
1847
+ "build",
1848
+ "resume",
1849
+ "redesign",
1850
+ "iterate"
1851
+ ]
1852
+ },
1853
+ "skill": {
1854
+ "type": "string",
1855
+ "description": "skill parameter"
1856
+ },
1857
+ "follow_ups": {
1858
+ "type": "array",
1859
+ "description": "follow_ups parameter",
1860
+ "items": {
1861
+ "type": "object",
1862
+ "description": "follow_ups parameter",
1863
+ "properties": {}
1864
+ }
1865
+ }
1866
+ },
1867
+ "required": [
1868
+ "id",
1869
+ "kind"
1870
+ ]
1871
+ },
1872
+ "info": {
1873
+ "type": "object",
1874
+ "description": "Website, tool and outcome of the run",
1875
+ "properties": {
1876
+ "domain": {
1877
+ "type": "string",
1878
+ "description": "domain parameter"
1879
+ },
1880
+ "tool": {
1881
+ "type": "string",
1882
+ "description": "tool parameter"
1883
+ },
1884
+ "outcome": {
1885
+ "type": "string",
1886
+ "description": "outcome parameter",
1887
+ "enum": [
1888
+ "live",
1889
+ "stopped",
1890
+ "failed",
1891
+ "abandoned"
1892
+ ]
1893
+ }
1894
+ },
1895
+ "required": [
1896
+ "domain",
1897
+ "tool",
1898
+ "outcome"
1899
+ ]
1900
+ },
1901
+ "timing": {
1902
+ "type": "object",
1903
+ "description": "Run start and end times and per-stage timings",
1904
+ "properties": {
1905
+ "started_at": {
1906
+ "type": "string",
1907
+ "description": "started_at parameter"
1908
+ },
1909
+ "ended_at": {
1910
+ "type": "string",
1911
+ "description": "ended_at parameter"
1912
+ },
1913
+ "minutes_total": {
1914
+ "type": "number",
1915
+ "description": "minutes_total parameter"
1916
+ },
1917
+ "stages": {
1918
+ "type": "array",
1919
+ "description": "stages parameter",
1920
+ "items": {
1921
+ "type": "object",
1922
+ "description": "stages parameter",
1923
+ "properties": {}
1924
+ }
1925
+ }
1926
+ },
1927
+ "required": [
1928
+ "started_at",
1929
+ "ended_at",
1930
+ "minutes_total",
1931
+ "stages"
1932
+ ]
1933
+ },
1934
+ "tokens": {
1935
+ "type": "object",
1936
+ "description": "Token usage, only when the tool reports its own usage",
1937
+ "properties": {}
1938
+ },
1939
+ "issues": {
1940
+ "type": "array",
1941
+ "description": "Problems hit during the run",
1942
+ "items": {
1943
+ "type": "object",
1944
+ "description": "issues parameter",
1945
+ "properties": {}
1946
+ }
1947
+ },
1948
+ "user_feedback": {
1949
+ "type": "array",
1950
+ "description": "Feedback the user gave during the run",
1951
+ "items": {
1952
+ "type": "object",
1953
+ "description": "user_feedback parameter",
1954
+ "properties": {}
1955
+ }
1956
+ },
1957
+ "skill_gaps": {
1958
+ "type": "array",
1959
+ "description": "Places where the skill instructions were missing or wrong",
1960
+ "items": {
1961
+ "type": "object",
1962
+ "description": "skill_gaps parameter",
1963
+ "properties": {}
1964
+ }
1965
+ },
1966
+ "what_went_well": {
1967
+ "type": "array",
1968
+ "description": "Things that worked well during the run",
1969
+ "items": {
1970
+ "type": "object",
1971
+ "description": "what_went_well parameter",
1972
+ "properties": {}
1973
+ }
1974
+ },
1975
+ "logging_gaps": {
1976
+ "type": "array",
1977
+ "description": "Where the run log is missing or unsure",
1978
+ "items": {
1979
+ "type": "object",
1980
+ "description": "logging_gaps parameter",
1981
+ "properties": {}
1982
+ }
1983
+ },
1984
+ "previous_runs": {
1985
+ "type": "array",
1986
+ "description": "Earlier runs for the same website",
1987
+ "items": {
1988
+ "type": "object",
1989
+ "description": "previous_runs parameter",
1990
+ "properties": {}
1991
+ }
1992
+ }
1993
+ },
1994
+ "required": [
1995
+ "schema_version",
1996
+ "generated_at",
1997
+ "consent",
1998
+ "run",
1999
+ "info",
2000
+ "timing",
2001
+ "tokens",
2002
+ "issues",
2003
+ "user_feedback",
2004
+ "skill_gaps",
2005
+ "what_went_well",
2006
+ "previous_runs"
2007
+ ]
2008
+ },
2009
+ "security": [
2010
+ {
2011
+ "apiToken": []
2012
+ }
2013
+ ],
2014
+ "group": "hosting"
2015
+ },
1793
2016
  {
1794
2017
  "name": "hosting_nodejs_list-builds",
1795
2018
  "title": "List NodeJS builds",
@@ -1804,6 +1804,229 @@ const tools: OpenApiTool[] = [
1804
1804
  ],
1805
1805
  "group": "hosting"
1806
1806
  },
1807
+ {
1808
+ "name": "hosting_headless_submit-build-report",
1809
+ "title": "Submit headless build report",
1810
+ "annotations": {
1811
+ "title": "Submit headless build report",
1812
+ "readOnlyHint": false,
1813
+ "destructiveHint": false
1814
+ },
1815
+ "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. Only send a report when the user agreed to it.\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.",
1816
+ "method": "POST",
1817
+ "path": "/api/hosting/v1/headless/agent-reports",
1818
+ "inputSchema": {
1819
+ "type": "object",
1820
+ "properties": {
1821
+ "schema_version": {
1822
+ "type": "string",
1823
+ "description": "Report schema version",
1824
+ "enum": [
1825
+ "1"
1826
+ ]
1827
+ },
1828
+ "generated_at": {
1829
+ "type": "string",
1830
+ "description": "When the report was written"
1831
+ },
1832
+ "consent": {
1833
+ "type": "object",
1834
+ "description": "Upload status of the report, as written by the headless skill",
1835
+ "properties": {
1836
+ "sent": {
1837
+ "type": "boolean",
1838
+ "description": "sent parameter"
1839
+ },
1840
+ "note": {
1841
+ "type": "string",
1842
+ "description": "note parameter"
1843
+ }
1844
+ },
1845
+ "required": [
1846
+ "sent"
1847
+ ]
1848
+ },
1849
+ "run": {
1850
+ "type": "object",
1851
+ "description": "The run the report is for",
1852
+ "properties": {
1853
+ "id": {
1854
+ "type": "string",
1855
+ "description": "id parameter"
1856
+ },
1857
+ "kind": {
1858
+ "type": "string",
1859
+ "description": "kind parameter",
1860
+ "enum": [
1861
+ "build",
1862
+ "resume",
1863
+ "redesign",
1864
+ "iterate"
1865
+ ]
1866
+ },
1867
+ "skill": {
1868
+ "type": "string",
1869
+ "description": "skill parameter"
1870
+ },
1871
+ "follow_ups": {
1872
+ "type": "array",
1873
+ "description": "follow_ups parameter",
1874
+ "items": {
1875
+ "type": "object",
1876
+ "description": "follow_ups parameter",
1877
+ "properties": {}
1878
+ }
1879
+ }
1880
+ },
1881
+ "required": [
1882
+ "id",
1883
+ "kind"
1884
+ ]
1885
+ },
1886
+ "info": {
1887
+ "type": "object",
1888
+ "description": "Website, tool and outcome of the run",
1889
+ "properties": {
1890
+ "domain": {
1891
+ "type": "string",
1892
+ "description": "domain parameter"
1893
+ },
1894
+ "tool": {
1895
+ "type": "string",
1896
+ "description": "tool parameter"
1897
+ },
1898
+ "outcome": {
1899
+ "type": "string",
1900
+ "description": "outcome parameter",
1901
+ "enum": [
1902
+ "live",
1903
+ "stopped",
1904
+ "failed",
1905
+ "abandoned"
1906
+ ]
1907
+ }
1908
+ },
1909
+ "required": [
1910
+ "domain",
1911
+ "tool",
1912
+ "outcome"
1913
+ ]
1914
+ },
1915
+ "timing": {
1916
+ "type": "object",
1917
+ "description": "Run start and end times and per-stage timings",
1918
+ "properties": {
1919
+ "started_at": {
1920
+ "type": "string",
1921
+ "description": "started_at parameter"
1922
+ },
1923
+ "ended_at": {
1924
+ "type": "string",
1925
+ "description": "ended_at parameter"
1926
+ },
1927
+ "minutes_total": {
1928
+ "type": "number",
1929
+ "description": "minutes_total parameter"
1930
+ },
1931
+ "stages": {
1932
+ "type": "array",
1933
+ "description": "stages parameter",
1934
+ "items": {
1935
+ "type": "object",
1936
+ "description": "stages parameter",
1937
+ "properties": {}
1938
+ }
1939
+ }
1940
+ },
1941
+ "required": [
1942
+ "started_at",
1943
+ "ended_at",
1944
+ "minutes_total",
1945
+ "stages"
1946
+ ]
1947
+ },
1948
+ "tokens": {
1949
+ "type": "object",
1950
+ "description": "Token usage, only when the tool reports its own usage",
1951
+ "properties": {}
1952
+ },
1953
+ "issues": {
1954
+ "type": "array",
1955
+ "description": "Problems hit during the run",
1956
+ "items": {
1957
+ "type": "object",
1958
+ "description": "issues parameter",
1959
+ "properties": {}
1960
+ }
1961
+ },
1962
+ "user_feedback": {
1963
+ "type": "array",
1964
+ "description": "Feedback the user gave during the run",
1965
+ "items": {
1966
+ "type": "object",
1967
+ "description": "user_feedback parameter",
1968
+ "properties": {}
1969
+ }
1970
+ },
1971
+ "skill_gaps": {
1972
+ "type": "array",
1973
+ "description": "Places where the skill instructions were missing or wrong",
1974
+ "items": {
1975
+ "type": "object",
1976
+ "description": "skill_gaps parameter",
1977
+ "properties": {}
1978
+ }
1979
+ },
1980
+ "what_went_well": {
1981
+ "type": "array",
1982
+ "description": "Things that worked well during the run",
1983
+ "items": {
1984
+ "type": "object",
1985
+ "description": "what_went_well parameter",
1986
+ "properties": {}
1987
+ }
1988
+ },
1989
+ "logging_gaps": {
1990
+ "type": "array",
1991
+ "description": "Where the run log is missing or unsure",
1992
+ "items": {
1993
+ "type": "object",
1994
+ "description": "logging_gaps parameter",
1995
+ "properties": {}
1996
+ }
1997
+ },
1998
+ "previous_runs": {
1999
+ "type": "array",
2000
+ "description": "Earlier runs for the same website",
2001
+ "items": {
2002
+ "type": "object",
2003
+ "description": "previous_runs parameter",
2004
+ "properties": {}
2005
+ }
2006
+ }
2007
+ },
2008
+ "required": [
2009
+ "schema_version",
2010
+ "generated_at",
2011
+ "consent",
2012
+ "run",
2013
+ "info",
2014
+ "timing",
2015
+ "tokens",
2016
+ "issues",
2017
+ "user_feedback",
2018
+ "skill_gaps",
2019
+ "what_went_well",
2020
+ "previous_runs"
2021
+ ]
2022
+ },
2023
+ "security": [
2024
+ {
2025
+ "apiToken": []
2026
+ }
2027
+ ],
2028
+ "group": "hosting"
2029
+ },
1807
2030
  {
1808
2031
  "name": "hosting_nodejs_list-builds",
1809
2032
  "title": "List NodeJS builds",
@@ -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.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.14.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.15.0', 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.js';
6
6
 
7
- startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.14.0', tools, instructions });
7
+ startServer({ name: 'hostinger-agency-hosting-mcp', version: '2.15.0', tools, instructions });
@@ -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: '2.14.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.15.0', tools, instructions, skills });
@@ -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: '2.14.0', tools, instructions, skills });
8
+ startServer({ name: 'hostinger-api-mcp', version: '2.15.0', tools, instructions, skills });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/billing.js';
5
5
 
6
- startServer({ name: 'hostinger-billing-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-billing-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/dns.js';
5
5
 
6
- startServer({ name: 'hostinger-dns-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-dns-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/domains.js';
5
5
 
6
- startServer({ name: 'hostinger-domains-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-domains-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/ecommerce.js';
5
5
 
6
- startServer({ name: 'hostinger-ecommerce-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-ecommerce-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/horizons.js';
5
5
 
6
- startServer({ name: 'hostinger-horizons-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-horizons-mcp', version: '2.15.0', tools });
@@ -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: '2.14.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.15.0', tools, instructions });
@@ -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: '2.14.0', tools, instructions });
7
+ startServer({ name: 'hostinger-hosting-mcp', version: '2.15.0', tools, instructions });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/mail.js';
5
5
 
6
- startServer({ name: 'hostinger-mail-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-mail-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/reach.js';
5
5
 
6
- startServer({ name: 'hostinger-reach-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-reach-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/vps.js';
5
5
 
6
- startServer({ name: 'hostinger-vps-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-vps-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.15.0', tools });
@@ -3,4 +3,4 @@
3
3
  import { startServer } from '../core/runtime.js';
4
4
  import tools from '../core/tools/wordpress.js';
5
5
 
6
- startServer({ name: 'hostinger-wordpress-mcp', version: '2.14.0', tools });
6
+ startServer({ name: 'hostinger-wordpress-mcp', version: '2.15.0', tools });
package/types.d.ts CHANGED
@@ -4213,6 +4213,73 @@ key to a private repository as a deploy key before deploying it.
4213
4213
  response: any; // Response structure will depend on the API
4214
4214
  };
4215
4215
 
4216
+ /**
4217
+ * Submits the build report the headless skill writes at the end of a run (including early
4218
+ stops), so Hostinger can learn where builds get stuck. Send one report per call, with the
4219
+ report JSON as the request body, unchanged. Only send a report when the user agreed to it.
4220
+
4221
+ The report must match report.schema.json v1; an invalid report returns 422 and is not
4222
+ stored. The report is linked to the authenticated account, so do not add account details
4223
+ to it.
4224
+ */
4225
+ "hosting_headless_submit-build-report": {
4226
+ params: {
4227
+ /**
4228
+ * Report schema version
4229
+ */
4230
+ schema_version: string;
4231
+ /**
4232
+ * When the report was written
4233
+ */
4234
+ generated_at: string;
4235
+ /**
4236
+ * Upload status of the report, as written by the headless skill
4237
+ */
4238
+ consent: object;
4239
+ /**
4240
+ * The run the report is for
4241
+ */
4242
+ run: object;
4243
+ /**
4244
+ * Website, tool and outcome of the run
4245
+ */
4246
+ info: object;
4247
+ /**
4248
+ * Run start and end times and per-stage timings
4249
+ */
4250
+ timing: object;
4251
+ /**
4252
+ * Token usage, only when the tool reports its own usage
4253
+ */
4254
+ tokens: object;
4255
+ /**
4256
+ * Problems hit during the run
4257
+ */
4258
+ issues: array;
4259
+ /**
4260
+ * Feedback the user gave during the run
4261
+ */
4262
+ user_feedback: array;
4263
+ /**
4264
+ * Places where the skill instructions were missing or wrong
4265
+ */
4266
+ skill_gaps: array;
4267
+ /**
4268
+ * Things that worked well during the run
4269
+ */
4270
+ what_went_well: array;
4271
+ /**
4272
+ * Where the run log is missing or unsure
4273
+ */
4274
+ logging_gaps?: array;
4275
+ /**
4276
+ * Earlier runs for the same website
4277
+ */
4278
+ previous_runs: array;
4279
+ };
4280
+ response: any; // Response structure will depend on the API
4281
+ };
4282
+
4216
4283
  /**
4217
4284
  * Retrieve a paginated list of Node.js build processes for a specific website.
4218
4285