hostinger-api-mcp 3.11.0 → 3.12.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +101 -22
  3. package/gemini-extension.json +1 -1
  4. package/package.json +1 -1
  5. package/server.json +2 -2
  6. package/skills/deploy-to-hosting/SKILL.md +1 -1
  7. package/src/core/runtime.js +117 -28
  8. package/src/core/runtime.ts +117 -28
  9. package/src/core/skills.js +3 -3
  10. package/src/core/skills.ts +3 -3
  11. package/src/core/tools/all.js +253 -11
  12. package/src/core/tools/all.ts +253 -11
  13. package/src/core/tools/hosting.js +23 -9
  14. package/src/core/tools/hosting.ts +23 -9
  15. package/src/core/tools/reach.js +230 -2
  16. package/src/core/tools/reach.ts +230 -2
  17. package/src/servers/agency-hosting.js +1 -1
  18. package/src/servers/agency-hosting.ts +1 -1
  19. package/src/servers/agent-readiness.js +1 -1
  20. package/src/servers/agent-readiness.ts +1 -1
  21. package/src/servers/all.js +1 -1
  22. package/src/servers/all.ts +1 -1
  23. package/src/servers/billing.js +1 -1
  24. package/src/servers/billing.ts +1 -1
  25. package/src/servers/dns.js +1 -1
  26. package/src/servers/dns.ts +1 -1
  27. package/src/servers/domains.js +1 -1
  28. package/src/servers/domains.ts +1 -1
  29. package/src/servers/ecommerce.js +1 -1
  30. package/src/servers/ecommerce.ts +1 -1
  31. package/src/servers/horizons.js +1 -1
  32. package/src/servers/horizons.ts +1 -1
  33. package/src/servers/hosting.js +1 -1
  34. package/src/servers/hosting.ts +1 -1
  35. package/src/servers/mail.js +1 -1
  36. package/src/servers/mail.ts +1 -1
  37. package/src/servers/reach.js +1 -1
  38. package/src/servers/reach.ts +1 -1
  39. package/src/servers/vps.js +1 -1
  40. package/src/servers/vps.ts +1 -1
  41. package/src/servers/wordpress.js +1 -1
  42. package/src/servers/wordpress.ts +1 -1
  43. package/types.d.ts +159 -11
@@ -25,7 +25,7 @@ const tools: OpenApiTool[] = [
25
25
  "destructiveHint": true
26
26
  },
27
27
  "topic": "hosting",
28
- "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, pass appType and nodeVersion from the project's engines, plus outputDirectory and buildScript if the app has a build step). Git needs GitHub or GitLab connected once in hPanel.",
28
+ "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, they are detected from the branch's package.json; pass appType, nodeVersion, outputDirectory, buildScript or entryFile to override them). Git needs GitHub or GitLab connected once in hPanel.",
29
29
  "method": "",
30
30
  "path": "",
31
31
  "inputSchema": {
@@ -54,6 +54,10 @@ const tools: OpenApiTool[] = [
54
54
  "directory": {
55
55
  "type": "string",
56
56
  "description": "Folder under the website's document root to deploy into (static deploys only; default the document root), e.g. my-api"
57
+ },
58
+ "installationUuid": {
59
+ "type": "string",
60
+ "description": "Git installation that can reach the repository, from hosting_git_list-installations. Only needed when the installation has more than 500 repositories, so the repository cannot be found by listing them."
57
61
  }
58
62
  },
59
63
  "required": [
@@ -92,7 +96,7 @@ const tools: OpenApiTool[] = [
92
96
  22,
93
97
  24
94
98
  ],
95
- "description": "Node.js major version (default: detected from an archive, or stored for the site, else 22; set it from the project's engines for a Git deploy)"
99
+ "description": "Node.js major version (default: detected from an archive, or stored for the site, else detected from the branch's package.json, else 22)"
96
100
  },
97
101
  "appType": {
98
102
  "type": "string",
@@ -103,16 +107,25 @@ const tools: OpenApiTool[] = [
103
107
  "description": "Directory with the package.json, relative to the site root (default .)"
104
108
  },
105
109
  "outputDirectory": {
106
- "type": "string",
107
- "description": "Build output directory relative to the root directory, e.g. dist"
110
+ "type": [
111
+ "string",
112
+ "null"
113
+ ],
114
+ "description": "Build output directory relative to the root directory, e.g. dist. Pass null to clear a stored value."
108
115
  },
109
116
  "buildScript": {
110
- "type": "string",
111
- "description": "The package.json script that builds the app, e.g. build"
117
+ "type": [
118
+ "string",
119
+ "null"
120
+ ],
121
+ "description": "The package.json script that builds the app, e.g. build. Pass null to clear a stored value."
112
122
  },
113
123
  "entryFile": {
114
- "type": "string",
115
- "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next."
124
+ "type": [
125
+ "string",
126
+ "null"
127
+ ],
128
+ "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next. Pass null to clear a stored value."
116
129
  },
117
130
  "packageManager": {
118
131
  "type": "string",
@@ -8455,7 +8468,8 @@ const tools: OpenApiTool[] = [
8455
8468
  "apiToken": []
8456
8469
  }
8457
8470
  ],
8458
- "group": "hosting"
8471
+ "group": "hosting",
8472
+ "hidden": true
8459
8473
  },
8460
8474
  {
8461
8475
  "name": "hosting_nodejs_list-environment-variables",
@@ -11553,7 +11567,7 @@ const tools: OpenApiTool[] = [
11553
11567
  "readOnlyHint": true,
11554
11568
  "destructiveHint": false
11555
11569
  },
11556
- "description": "Get a single campaign with its sender, subject, template reference, targeting and delivery\nprogress.\n\nThis describes how the campaign was set up and how far it has got. For opens, clicks and\nunsubscribes use the campaign statistics endpoint.",
11570
+ "description": "Get a single campaign with its sender, subject, template reference, targeting and delivery\nprogress.\n\nThis describes how the campaign was set up and how far it has got. For opens, clicks and\nunsubscribes use the campaign statistics endpoint. The email content is not included: pass\n`template_uuid` to the get email template endpoint to read its HTML.",
11557
11571
  "method": "GET",
11558
11572
  "path": "/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}",
11559
11573
  "inputSchema": {
@@ -14321,6 +14335,72 @@ const tools: OpenApiTool[] = [
14321
14335
  ],
14322
14336
  "group": "reach"
14323
14337
  },
14338
+ {
14339
+ "name": "reach_integrations_disconnect-ecommerce-store",
14340
+ "title": "Disconnect Ecommerce store",
14341
+ "annotations": {
14342
+ "title": "Disconnect Ecommerce store",
14343
+ "readOnlyHint": false,
14344
+ "destructiveHint": true,
14345
+ "idempotentHint": true
14346
+ },
14347
+ "description": "Disconnect an eCommerce store from the profile.\n\nReach stops receiving the store's customers and orders, and its products and coupons are\nremoved from Reach; contacts and past orders stay. Take `store_id` from the list eCommerce\nstores endpoint; for a store that is `connected_to_other_profile`, call this with that\nprofile. Also succeeds when the store is not connected to this profile, so success is not\nproof that anything was disconnected. Confirm the store and the plan with the customer\nbefore calling.",
14348
+ "method": "DELETE",
14349
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores/{storeId}",
14350
+ "inputSchema": {
14351
+ "type": "object",
14352
+ "properties": {
14353
+ "profileUuid": {
14354
+ "type": "string",
14355
+ "description": "Profile uuid parameter"
14356
+ },
14357
+ "storeId": {
14358
+ "type": "string",
14359
+ "description": "Hostinger eCommerce store ID, as returned by the eCommerce stores list"
14360
+ }
14361
+ },
14362
+ "required": [
14363
+ "profileUuid",
14364
+ "storeId"
14365
+ ]
14366
+ },
14367
+ "security": [
14368
+ {
14369
+ "apiToken": []
14370
+ }
14371
+ ],
14372
+ "group": "reach"
14373
+ },
14374
+ {
14375
+ "name": "reach_integrations_list-ecommerce-stores",
14376
+ "title": "List Ecommerce stores",
14377
+ "annotations": {
14378
+ "title": "List Ecommerce stores",
14379
+ "readOnlyHint": true,
14380
+ "destructiveHint": false
14381
+ },
14382
+ "description": "Get all of the customer's Hostinger eCommerce stores, each with its `store_id` and\n`connection_status` for the profile in the path.\n\nA store is connected to at most one profile. `connected_to_other_profile` does not name that\nprofile - call this for each profile to find it. The list is empty, not an error, when the\neCommerce service cannot be reached. Pass `store_id` to the disconnect eCommerce store\nendpoint. Connecting an AI Website Builder site connects the store selling on it.",
14383
+ "method": "GET",
14384
+ "path": "/api/reach/v1/profiles/{profileUuid}/ecommerce/stores",
14385
+ "inputSchema": {
14386
+ "type": "object",
14387
+ "properties": {
14388
+ "profileUuid": {
14389
+ "type": "string",
14390
+ "description": "Profile uuid parameter"
14391
+ }
14392
+ },
14393
+ "required": [
14394
+ "profileUuid"
14395
+ ]
14396
+ },
14397
+ "security": [
14398
+ {
14399
+ "apiToken": []
14400
+ }
14401
+ ],
14402
+ "group": "reach"
14403
+ },
14324
14404
  {
14325
14405
  "name": "reach_templates_list-email",
14326
14406
  "title": "List email templates",
@@ -14329,7 +14409,7 @@ const tools: OpenApiTool[] = [
14329
14409
  "readOnlyHint": true,
14330
14410
  "destructiveHint": false
14331
14411
  },
14332
- "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned - the template content itself is not exposed. Use the\n`uuid` of a template as the `template_uuid` when creating a campaign.",
14412
+ "description": "Get a list of the email templates in a profile, most recently updated first.\n\nTemplates are the reusable email bodies a campaign is built from. The list is not paginated\nand only the metadata is returned, without the HTML content. Use the `uuid` of a template\nas the `template_uuid` when creating a campaign. To read one template's HTML use the get\nemail template endpoint, and only when the content itself is needed.",
14333
14413
  "method": "GET",
14334
14414
  "path": "/api/reach/v1/profiles/{profileUuid}/templates",
14335
14415
  "inputSchema": {
@@ -14390,6 +14470,168 @@ const tools: OpenApiTool[] = [
14390
14470
  ],
14391
14471
  "group": "reach"
14392
14472
  },
14473
+ {
14474
+ "name": "reach_templates_email",
14475
+ "title": "Get email template",
14476
+ "annotations": {
14477
+ "title": "Get email template",
14478
+ "readOnlyHint": true,
14479
+ "destructiveHint": false
14480
+ },
14481
+ "description": "Get one email template of the profile with its full HTML in `template_content`.\n\nA campaign's email content is its template: to read what a campaign sends, get the campaign\nand pass its `template_uuid` here. The HTML can be large, so fetch it only when the content\nitself is needed, never to browse or pick templates - the list email templates endpoint does\nthat without content. Personalization tags such as `{{name}}` come back unrendered.",
14482
+ "method": "GET",
14483
+ "path": "/api/reach/v1/profiles/{profileUuid}/templates/{templateUuid}",
14484
+ "inputSchema": {
14485
+ "type": "object",
14486
+ "properties": {
14487
+ "profileUuid": {
14488
+ "type": "string",
14489
+ "description": "Profile uuid parameter"
14490
+ },
14491
+ "templateUuid": {
14492
+ "type": "string",
14493
+ "description": "Template uuid parameter"
14494
+ }
14495
+ },
14496
+ "required": [
14497
+ "profileUuid",
14498
+ "templateUuid"
14499
+ ]
14500
+ },
14501
+ "security": [
14502
+ {
14503
+ "apiToken": []
14504
+ }
14505
+ ],
14506
+ "group": "reach"
14507
+ },
14508
+ {
14509
+ "name": "reach_integrations_list-connected-websites",
14510
+ "title": "List connected websites",
14511
+ "annotations": {
14512
+ "title": "List connected websites",
14513
+ "readOnlyHint": true,
14514
+ "destructiveHint": false
14515
+ },
14516
+ "description": "Get the websites connected to the profile, each with its `domain` and `platform_type`.\n\nA domain is connected to at most one profile, so to find which plan a site is on, call this\nfor each profile. Only connected sites are listed, not every website the customer owns, and\neCommerce stores are not included - use the list eCommerce stores endpoint for those. Pass\n`domain` to the disconnect WordPress site or disconnect AI Website Builder site endpoint.",
14517
+ "method": "GET",
14518
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites",
14519
+ "inputSchema": {
14520
+ "type": "object",
14521
+ "properties": {
14522
+ "profileUuid": {
14523
+ "type": "string",
14524
+ "description": "Profile uuid parameter"
14525
+ }
14526
+ },
14527
+ "required": [
14528
+ "profileUuid"
14529
+ ]
14530
+ },
14531
+ "security": [
14532
+ {
14533
+ "apiToken": []
14534
+ }
14535
+ ],
14536
+ "group": "reach"
14537
+ },
14538
+ {
14539
+ "name": "reach_integrations_connect-ai-website-builder-site",
14540
+ "title": "Connect AI Website Builder site",
14541
+ "annotations": {
14542
+ "title": "Connect AI Website Builder site",
14543
+ "readOnlyHint": false,
14544
+ "destructiveHint": false
14545
+ },
14546
+ "description": "Connect an AI Website Builder site the customer built manually to the profile, so its\nsubscribers flow into Reach.\n\nFails with not found when the customer owns no AI Website Builder site with that domain.\nFails with `DOMAIN_ALREADY_EXISTS` when the domain is connected to any profile - to move a\nsite to another plan, disconnect it from the old profile first - and with\n`WEBSITE_CONNECTION_ALREADY_EXISTS` when this profile already has an AI Website Builder site.\nThe eCommerce store selling on the site, if it is not connected anywhere, is connected too.\nWordPress sites and sites made with the agentic AI Website Builder cannot be connected here.",
14547
+ "method": "POST",
14548
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14549
+ "inputSchema": {
14550
+ "type": "object",
14551
+ "properties": {
14552
+ "profileUuid": {
14553
+ "type": "string",
14554
+ "description": "Profile uuid parameter"
14555
+ },
14556
+ "domain": {
14557
+ "type": "string",
14558
+ "description": "domain parameter"
14559
+ }
14560
+ },
14561
+ "required": [
14562
+ "profileUuid",
14563
+ "domain"
14564
+ ]
14565
+ },
14566
+ "security": [
14567
+ {
14568
+ "apiToken": []
14569
+ }
14570
+ ],
14571
+ "group": "reach"
14572
+ },
14573
+ {
14574
+ "name": "reach_integrations_disconnect-ai-website-builder-site",
14575
+ "title": "Disconnect AI Website Builder site",
14576
+ "annotations": {
14577
+ "title": "Disconnect AI Website Builder site",
14578
+ "readOnlyHint": false,
14579
+ "destructiveHint": true,
14580
+ "idempotentHint": true
14581
+ },
14582
+ "description": "Disconnect an AI Website Builder site from the profile; the site stops sending subscribers\nto Reach.\n\nTake `domain` from the list connected websites endpoint. Works for a site that was already\ndeleted in the builder. Fails with not found when the domain is not connected to this\nprofile. Contacts and any connected eCommerce store stay. The site stays disconnected until\nit is connected again, so confirm the site and the plan with the customer before calling.",
14583
+ "method": "DELETE",
14584
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/website-builder",
14585
+ "inputSchema": {
14586
+ "type": "object",
14587
+ "properties": {
14588
+ "profileUuid": {
14589
+ "type": "string",
14590
+ "description": "Profile uuid parameter"
14591
+ }
14592
+ },
14593
+ "required": [
14594
+ "profileUuid"
14595
+ ]
14596
+ },
14597
+ "security": [
14598
+ {
14599
+ "apiToken": []
14600
+ }
14601
+ ],
14602
+ "group": "reach"
14603
+ },
14604
+ {
14605
+ "name": "reach_integrations_disconnect-wordpress-site",
14606
+ "title": "Disconnect WordPress site",
14607
+ "annotations": {
14608
+ "title": "Disconnect WordPress site",
14609
+ "readOnlyHint": false,
14610
+ "destructiveHint": true,
14611
+ "idempotentHint": true
14612
+ },
14613
+ "description": "Disconnect a WordPress site from the profile.\n\nThe Reach plugin on the site stops sending subscribers and store data, and the site's\nproducts and coupons are removed from Reach; contacts and past orders stay. Take `domain`\nfrom the list connected websites endpoint. Fails with not found when the domain is not\nconnected to this profile. This cannot be undone through the API - the customer reconnects\nfrom the WordPress plugin - so confirm the site and the plan with the customer before calling.",
14614
+ "method": "DELETE",
14615
+ "path": "/api/reach/v1/profiles/{profileUuid}/websites/wordpress",
14616
+ "inputSchema": {
14617
+ "type": "object",
14618
+ "properties": {
14619
+ "profileUuid": {
14620
+ "type": "string",
14621
+ "description": "Profile uuid parameter"
14622
+ }
14623
+ },
14624
+ "required": [
14625
+ "profileUuid"
14626
+ ]
14627
+ },
14628
+ "security": [
14629
+ {
14630
+ "apiToken": []
14631
+ }
14632
+ ],
14633
+ "group": "reach"
14634
+ },
14393
14635
  {
14394
14636
  "name": "vps_data-centers_list",
14395
14637
  "title": "Get data center list",
@@ -9,7 +9,7 @@ export default [
9
9
  "destructiveHint": true
10
10
  },
11
11
  "topic": "hosting",
12
- "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, pass appType and nodeVersion from the project's engines, plus outputDirectory and buildScript if the app has a build step). Git needs GitHub or GitLab connected once in hPanel.",
12
+ "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, they are detected from the branch's package.json; pass appType, nodeVersion, outputDirectory, buildScript or entryFile to override them). Git needs GitHub or GitLab connected once in hPanel.",
13
13
  "method": "",
14
14
  "path": "",
15
15
  "inputSchema": {
@@ -38,6 +38,10 @@ export default [
38
38
  "directory": {
39
39
  "type": "string",
40
40
  "description": "Folder under the website's document root to deploy into (static deploys only; default the document root), e.g. my-api"
41
+ },
42
+ "installationUuid": {
43
+ "type": "string",
44
+ "description": "Git installation that can reach the repository, from hosting_git_list-installations. Only needed when the installation has more than 500 repositories, so the repository cannot be found by listing them."
41
45
  }
42
46
  },
43
47
  "required": [
@@ -76,7 +80,7 @@ export default [
76
80
  22,
77
81
  24
78
82
  ],
79
- "description": "Node.js major version (default: detected from an archive, or stored for the site, else 22; set it from the project's engines for a Git deploy)"
83
+ "description": "Node.js major version (default: detected from an archive, or stored for the site, else detected from the branch's package.json, else 22)"
80
84
  },
81
85
  "appType": {
82
86
  "type": "string",
@@ -87,16 +91,25 @@ export default [
87
91
  "description": "Directory with the package.json, relative to the site root (default .)"
88
92
  },
89
93
  "outputDirectory": {
90
- "type": "string",
91
- "description": "Build output directory relative to the root directory, e.g. dist"
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ],
98
+ "description": "Build output directory relative to the root directory, e.g. dist. Pass null to clear a stored value."
92
99
  },
93
100
  "buildScript": {
94
- "type": "string",
95
- "description": "The package.json script that builds the app, e.g. build"
101
+ "type": [
102
+ "string",
103
+ "null"
104
+ ],
105
+ "description": "The package.json script that builds the app, e.g. build. Pass null to clear a stored value."
96
106
  },
97
107
  "entryFile": {
98
- "type": "string",
99
- "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next."
108
+ "type": [
109
+ "string",
110
+ "null"
111
+ ],
112
+ "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next. Pass null to clear a stored value."
100
113
  },
101
114
  "packageManager": {
102
115
  "type": "string",
@@ -2749,7 +2762,8 @@ export default [
2749
2762
  "apiToken": []
2750
2763
  }
2751
2764
  ],
2752
- "group": "hosting"
2765
+ "group": "hosting",
2766
+ "hidden": true
2753
2767
  },
2754
2768
  {
2755
2769
  "name": "hosting_nodejs_list-environment-variables",
@@ -25,7 +25,7 @@ const tools: OpenApiTool[] = [
25
25
  "destructiveHint": true
26
26
  },
27
27
  "topic": "hosting",
28
- "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, pass appType and nodeVersion from the project's engines, plus outputDirectory and buildScript if the app has a build step). Git needs GitHub or GitLab connected once in hPanel.",
28
+ "description": "Deploy, publish or upload a website to Hostinger web hosting (Shared, Cloud): static HTML, PHP, a nodejs (Node.js) app, a whole WordPress site, or a WordPress plugin or theme, from a local directory, an archive or a GitHub or GitLab repository. It detects what the project is and does the upload, build and Git setup itself: do not call upload or build operations, and do not archive the directory yourself. WARNING: it overwrites the website's contents and cannot be undone; confirm the domain with the user before deploying to a site that already has content. A Node.js build runs on the server: this returns a buildUuid at once, then call hosting_get-deployment until the build state is completed or failed. A plugin or theme goes into the site's WordPress installation, also when WordPress is in a folder of the document root (headless). Static, PHP, plugin and theme deploys are done when this returns; a WordPress site import only starts, and its files are extracted a few minutes later. From Git, pass type (static or nodejs) unless the site already runs a Node.js app or you pass Node.js settings; a static or PHP site deploys the branch now and again on every push; a Node.js site builds the branch now and on every later push, with the settings stored for the site (when none are stored, they are detected from the branch's package.json; pass appType, nodeVersion, outputDirectory, buildScript or entryFile to override them). Git needs GitHub or GitLab connected once in hPanel.",
29
29
  "method": "",
30
30
  "path": "",
31
31
  "inputSchema": {
@@ -54,6 +54,10 @@ const tools: OpenApiTool[] = [
54
54
  "directory": {
55
55
  "type": "string",
56
56
  "description": "Folder under the website's document root to deploy into (static deploys only; default the document root), e.g. my-api"
57
+ },
58
+ "installationUuid": {
59
+ "type": "string",
60
+ "description": "Git installation that can reach the repository, from hosting_git_list-installations. Only needed when the installation has more than 500 repositories, so the repository cannot be found by listing them."
57
61
  }
58
62
  },
59
63
  "required": [
@@ -92,7 +96,7 @@ const tools: OpenApiTool[] = [
92
96
  22,
93
97
  24
94
98
  ],
95
- "description": "Node.js major version (default: detected from an archive, or stored for the site, else 22; set it from the project's engines for a Git deploy)"
99
+ "description": "Node.js major version (default: detected from an archive, or stored for the site, else detected from the branch's package.json, else 22)"
96
100
  },
97
101
  "appType": {
98
102
  "type": "string",
@@ -103,16 +107,25 @@ const tools: OpenApiTool[] = [
103
107
  "description": "Directory with the package.json, relative to the site root (default .)"
104
108
  },
105
109
  "outputDirectory": {
106
- "type": "string",
107
- "description": "Build output directory relative to the root directory, e.g. dist"
110
+ "type": [
111
+ "string",
112
+ "null"
113
+ ],
114
+ "description": "Build output directory relative to the root directory, e.g. dist. Pass null to clear a stored value."
108
115
  },
109
116
  "buildScript": {
110
- "type": "string",
111
- "description": "The package.json script that builds the app, e.g. build"
117
+ "type": [
118
+ "string",
119
+ "null"
120
+ ],
121
+ "description": "The package.json script that builds the app, e.g. build. Pass null to clear a stored value."
112
122
  },
113
123
  "entryFile": {
114
- "type": "string",
115
- "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next."
124
+ "type": [
125
+ "string",
126
+ "null"
127
+ ],
128
+ "description": "Entry file of a server app. Relative to the root directory for express, fastify, hono, react-router and other; for a compiled (TypeScript) app give the built file, e.g. dist/server.js, because detection guesses a root-level file. Relative to the output directory for nest, nuxt, nitro, astro and svelte-kit (main.js, not dist/main.js). Ignored for next. Pass null to clear a stored value."
116
129
  },
117
130
  "packageManager": {
118
131
  "type": "string",
@@ -2765,7 +2778,8 @@ const tools: OpenApiTool[] = [
2765
2778
  "apiToken": []
2766
2779
  }
2767
2780
  ],
2768
- "group": "hosting"
2781
+ "group": "hosting",
2782
+ "hidden": true
2769
2783
  },
2770
2784
  {
2771
2785
  "name": "hosting_nodejs_list-environment-variables",