hostinger-api-mcp 3.24.3 → 3.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.md +31 -105
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/skills/connect-domain/SKILL.md +4 -4
- package/skills/deploy-to-hosting/SKILL.md +1 -1
- package/skills/headless/SKILL.md +3 -3
- package/skills/headless/VERSION +2 -2
- package/skills/headless/steps/01-check-state/SKILL.md +1 -1
- package/skills/headless/steps/03-provision/SKILL.md +8 -8
- package/skills/headless/steps/03-provision/ecommerce/SKILL.md +4 -5
- package/skills/headless/steps/03-provision/webapp/SKILL.md +6 -7
- package/skills/headless/steps/03-provision/wordpress/SKILL.md +8 -9
- package/src/core/runtime.js +154 -1
- package/src/core/runtime.ts +154 -1
- package/src/core/skills.js +24 -24
- package/src/core/skills.ts +24 -24
- package/src/core/tools/all.js +193 -14
- package/src/core/tools/all.ts +193 -14
- package/src/core/tools/hosting.js +191 -12
- package/src/core/tools/hosting.ts +191 -12
- package/src/core/tools/wordpress.js +2 -2
- package/src/core/tools/wordpress.ts +2 -2
- 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 +99 -11
|
@@ -349,6 +349,177 @@ export default [
|
|
|
349
349
|
"handlerMethod": "handleHostingCacheClear",
|
|
350
350
|
"group": "hosting"
|
|
351
351
|
},
|
|
352
|
+
{
|
|
353
|
+
"name": "hosting_websites_list-domains",
|
|
354
|
+
"title": "List website parked (alias) domains and subdomains",
|
|
355
|
+
"annotations": {
|
|
356
|
+
"title": "List website parked (alias) domains and subdomains",
|
|
357
|
+
"readOnlyHint": true,
|
|
358
|
+
"destructiveHint": false
|
|
359
|
+
},
|
|
360
|
+
"topic": "hosting",
|
|
361
|
+
"description": "List the extra domains of a website: its parked (alias) domains, which show the same site under another domain name, and its subdomains (e.g. blog.example.com), with each one's root directory. parked items have domain (a domain name or an IP address) and type (domain or ip); subdomains items have domain (the full name), subdomain (the prefix) and root_directory. A list that cannot be read comes back as { error } and the other is still returned. To add or remove one use hosting_websites_add-domain or hosting_websites_remove-domain. Works for Shared and Cloud hosting websites.",
|
|
362
|
+
"method": "",
|
|
363
|
+
"path": "",
|
|
364
|
+
"inputSchema": {
|
|
365
|
+
"type": "object",
|
|
366
|
+
"properties": {
|
|
367
|
+
"domain": {
|
|
368
|
+
"type": "string",
|
|
369
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
"required": [
|
|
373
|
+
"domain"
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
"security": [],
|
|
377
|
+
"custom": true,
|
|
378
|
+
"replacesHidden": true,
|
|
379
|
+
"templateFile": "list-domains.template.js",
|
|
380
|
+
"templateFileTS": "list-domains.template.ts",
|
|
381
|
+
"handlerMethod": "handleHostingWebsitesListDomains",
|
|
382
|
+
"group": "hosting"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"name": "hosting_websites_add-domain",
|
|
386
|
+
"title": "Add a parked (alias) domain or subdomain to a website",
|
|
387
|
+
"annotations": {
|
|
388
|
+
"title": "Add a parked (alias) domain or subdomain to a website",
|
|
389
|
+
"readOnlyHint": false,
|
|
390
|
+
"destructiveHint": false
|
|
391
|
+
},
|
|
392
|
+
"topic": "hosting",
|
|
393
|
+
"description": "Add a domain to an existing website: type parked adds a parked (alias) domain, a second domain name (or an IP address) that shows the same site; type subdomain creates a subdomain such as blog.example.com with its own directory. For a parked domain the domain must be owned by the account or already point to the website: check a domain from outside the account with hosting_domains_verify-ownership first. www belongs to the main domain: do not add it as a subdomain. To create a new website use hosting_websites_create instead. Works for Shared and Cloud hosting websites.",
|
|
394
|
+
"method": "",
|
|
395
|
+
"path": "",
|
|
396
|
+
"inputSchema": {
|
|
397
|
+
"type": "object",
|
|
398
|
+
"properties": {
|
|
399
|
+
"domain": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
402
|
+
},
|
|
403
|
+
"type": {
|
|
404
|
+
"type": "string",
|
|
405
|
+
"enum": [
|
|
406
|
+
"parked",
|
|
407
|
+
"subdomain"
|
|
408
|
+
],
|
|
409
|
+
"description": "parked: an alias domain that shows the same website; subdomain: a subdomain of the website's domain."
|
|
410
|
+
},
|
|
411
|
+
"name": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "For parked: the domain name or IP address to park (e.g., example.net). For subdomain: the prefix (e.g., blog) or the full name (e.g., blog.example.com)."
|
|
414
|
+
},
|
|
415
|
+
"directory": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"description": "Subdomains only: the subdomain's directory relative to the website root."
|
|
418
|
+
},
|
|
419
|
+
"usePublicDirectory": {
|
|
420
|
+
"type": "boolean",
|
|
421
|
+
"description": "Subdomains only: serve the subdomain from the website's public directory instead of its own directory."
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
"required": [
|
|
425
|
+
"domain",
|
|
426
|
+
"type",
|
|
427
|
+
"name"
|
|
428
|
+
]
|
|
429
|
+
},
|
|
430
|
+
"security": [],
|
|
431
|
+
"custom": true,
|
|
432
|
+
"replacesHidden": true,
|
|
433
|
+
"templateFile": "add-domain.template.js",
|
|
434
|
+
"templateFileTS": "add-domain.template.ts",
|
|
435
|
+
"handlerMethod": "handleHostingWebsitesAddDomain",
|
|
436
|
+
"group": "hosting"
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"name": "hosting_websites_remove-domain",
|
|
440
|
+
"title": "Remove a parked (alias) domain or subdomain from a website",
|
|
441
|
+
"annotations": {
|
|
442
|
+
"title": "Remove a parked (alias) domain or subdomain from a website",
|
|
443
|
+
"readOnlyHint": false,
|
|
444
|
+
"destructiveHint": true
|
|
445
|
+
},
|
|
446
|
+
"topic": "hosting",
|
|
447
|
+
"description": "Remove a parked (alias) domain or a subdomain from a website. Pass its name as hosting_websites_list-domains shows it: a parked domain, or a subdomain's full name or prefix; the tool finds which one it is. To delete a whole website use hosting_websites_delete. Works for Shared and Cloud hosting websites.",
|
|
448
|
+
"method": "",
|
|
449
|
+
"path": "",
|
|
450
|
+
"inputSchema": {
|
|
451
|
+
"type": "object",
|
|
452
|
+
"properties": {
|
|
453
|
+
"domain": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
456
|
+
},
|
|
457
|
+
"name": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "The parked domain (e.g., example.net) or the subdomain, as its full name (e.g., blog.example.com) or prefix (e.g., blog), to remove."
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
"required": [
|
|
463
|
+
"domain",
|
|
464
|
+
"name"
|
|
465
|
+
]
|
|
466
|
+
},
|
|
467
|
+
"security": [],
|
|
468
|
+
"custom": true,
|
|
469
|
+
"replacesHidden": true,
|
|
470
|
+
"templateFile": "remove-domain.template.js",
|
|
471
|
+
"templateFileTS": "remove-domain.template.ts",
|
|
472
|
+
"handlerMethod": "handleHostingWebsitesRemoveDomain",
|
|
473
|
+
"group": "hosting"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "hosting_websites_start-setup",
|
|
477
|
+
"title": "Start website setup (renamed to hosting_websites_create)",
|
|
478
|
+
"annotations": {
|
|
479
|
+
"title": "Start website setup (renamed to hosting_websites_create)",
|
|
480
|
+
"readOnlyHint": false,
|
|
481
|
+
"destructiveHint": false
|
|
482
|
+
},
|
|
483
|
+
"topic": "hosting",
|
|
484
|
+
"description": "Renamed to hosting_websites_create. This name still runs so older skills keep working, and will be removed in a future release.",
|
|
485
|
+
"method": "",
|
|
486
|
+
"path": "",
|
|
487
|
+
"inputSchema": {
|
|
488
|
+
"type": "object",
|
|
489
|
+
"properties": {
|
|
490
|
+
"order_id": {
|
|
491
|
+
"type": "integer",
|
|
492
|
+
"description": "Hosting order ID. List orders to find available IDs."
|
|
493
|
+
},
|
|
494
|
+
"type": {
|
|
495
|
+
"type": "string",
|
|
496
|
+
"description": "Website type, as hosting_websites_create takes it."
|
|
497
|
+
},
|
|
498
|
+
"domain": {
|
|
499
|
+
"type": "string",
|
|
500
|
+
"description": "Domain for the website, as hosting_websites_create takes it."
|
|
501
|
+
},
|
|
502
|
+
"datacenter_code": {
|
|
503
|
+
"type": "string",
|
|
504
|
+
"description": "Datacenter code, as hosting_websites_create takes it."
|
|
505
|
+
},
|
|
506
|
+
"wordpress": {
|
|
507
|
+
"type": "object",
|
|
508
|
+
"description": "WordPress install settings, as hosting_websites_create takes them."
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
"required": [
|
|
512
|
+
"order_id"
|
|
513
|
+
]
|
|
514
|
+
},
|
|
515
|
+
"security": [],
|
|
516
|
+
"custom": true,
|
|
517
|
+
"templateFile": "start-setup.template.js",
|
|
518
|
+
"templateFileTS": "start-setup.template.ts",
|
|
519
|
+
"handlerMethod": "handleHostingWebsitesStartSetup",
|
|
520
|
+
"group": "hosting",
|
|
521
|
+
"hidden": true
|
|
522
|
+
},
|
|
352
523
|
{
|
|
353
524
|
"name": "hosting_import-wordpress-website",
|
|
354
525
|
"title": "Import WordPress website",
|
|
@@ -1629,7 +1800,8 @@ export default [
|
|
|
1629
1800
|
"apiToken": []
|
|
1630
1801
|
}
|
|
1631
1802
|
],
|
|
1632
|
-
"group": "hosting"
|
|
1803
|
+
"group": "hosting",
|
|
1804
|
+
"hidden": true
|
|
1633
1805
|
},
|
|
1634
1806
|
{
|
|
1635
1807
|
"name": "hosting_domains_list-website-parked",
|
|
@@ -1664,7 +1836,8 @@ export default [
|
|
|
1664
1836
|
"apiToken": []
|
|
1665
1837
|
}
|
|
1666
1838
|
],
|
|
1667
|
-
"group": "hosting"
|
|
1839
|
+
"group": "hosting",
|
|
1840
|
+
"hidden": true
|
|
1668
1841
|
},
|
|
1669
1842
|
{
|
|
1670
1843
|
"name": "hosting_domains_create-website-parked",
|
|
@@ -1704,7 +1877,8 @@ export default [
|
|
|
1704
1877
|
"apiToken": []
|
|
1705
1878
|
}
|
|
1706
1879
|
],
|
|
1707
|
-
"group": "hosting"
|
|
1880
|
+
"group": "hosting",
|
|
1881
|
+
"hidden": true
|
|
1708
1882
|
},
|
|
1709
1883
|
{
|
|
1710
1884
|
"name": "hosting_domains_delete-website-parked",
|
|
@@ -1745,7 +1919,8 @@ export default [
|
|
|
1745
1919
|
"apiToken": []
|
|
1746
1920
|
}
|
|
1747
1921
|
],
|
|
1748
|
-
"group": "hosting"
|
|
1922
|
+
"group": "hosting",
|
|
1923
|
+
"hidden": true
|
|
1749
1924
|
},
|
|
1750
1925
|
{
|
|
1751
1926
|
"name": "hosting_domains_list-website-subdomains",
|
|
@@ -1780,7 +1955,8 @@ export default [
|
|
|
1780
1955
|
"apiToken": []
|
|
1781
1956
|
}
|
|
1782
1957
|
],
|
|
1783
|
-
"group": "hosting"
|
|
1958
|
+
"group": "hosting",
|
|
1959
|
+
"hidden": true
|
|
1784
1960
|
},
|
|
1785
1961
|
{
|
|
1786
1962
|
"name": "hosting_domains_create-website-subdomain",
|
|
@@ -1828,7 +2004,8 @@ export default [
|
|
|
1828
2004
|
"apiToken": []
|
|
1829
2005
|
}
|
|
1830
2006
|
],
|
|
1831
|
-
"group": "hosting"
|
|
2007
|
+
"group": "hosting",
|
|
2008
|
+
"hidden": true
|
|
1832
2009
|
},
|
|
1833
2010
|
{
|
|
1834
2011
|
"name": "hosting_domains_delete-website-subdomain",
|
|
@@ -1869,7 +2046,8 @@ export default [
|
|
|
1869
2046
|
"apiToken": []
|
|
1870
2047
|
}
|
|
1871
2048
|
],
|
|
1872
|
-
"group": "hosting"
|
|
2049
|
+
"group": "hosting",
|
|
2050
|
+
"hidden": true
|
|
1873
2051
|
},
|
|
1874
2052
|
{
|
|
1875
2053
|
"name": "hosting_domains_verify-ownership",
|
|
@@ -3546,14 +3724,14 @@ export default [
|
|
|
3546
3724
|
"group": "hosting"
|
|
3547
3725
|
},
|
|
3548
3726
|
{
|
|
3549
|
-
"name": "
|
|
3727
|
+
"name": "hosting_websites_create",
|
|
3550
3728
|
"title": "Start website setup",
|
|
3551
3729
|
"annotations": {
|
|
3552
3730
|
"title": "Start website setup",
|
|
3553
3731
|
"readOnlyHint": false,
|
|
3554
3732
|
"destructiveHint": false
|
|
3555
3733
|
},
|
|
3556
|
-
"description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15\nseconds and wait for `status: completed` before uploading files, deploying or creating\ndatabases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)\ncreate a headless website; `headless_wordpress` additionally installs WordPress into the\n`cms` directory of the website root with generated credentials. `headless_empty` installs\nnothing: WordPress can be added later through\n`POST /api/hosting/v1/accounts/{username}/wordpress/installations`\n(`wordpress_installations_install`) with `type: headless`.\n\nOmit `domain` to set the website up on a generated temporary free subdomain
|
|
3734
|
+
"description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15\nseconds and wait for `status: completed` before uploading files, deploying or creating\ndatabases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)\ncreate a headless website; `headless_wordpress` additionally installs WordPress into the\n`cms` directory of the website root with generated credentials. `headless_empty` installs\nnothing: WordPress can be added later through\n`POST /api/hosting/v1/accounts/{username}/wordpress/installations`\n(`wordpress_installations_install`) with `type: headless`.\n\nOmit `domain` to set the website up on a generated temporary free subdomain; the created\nsetup returns it as `domain`. REST clients that need to know the free subdomain before the\ncall, so a timed-out call can be looked up and retried on the same domain, can generate\none through `POST /api/hosting/v1/domains/free-subdomains` and send it as `domain`. It is\naccepted for 24 hours, only from the client that generated it.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
|
|
3557
3735
|
"method": "POST",
|
|
3558
3736
|
"path": "/api/hosting/v1/orders/{order_id}/onboardings",
|
|
3559
3737
|
"inputSchema": {
|
|
@@ -3576,7 +3754,7 @@ export default [
|
|
|
3576
3754
|
},
|
|
3577
3755
|
"domain": {
|
|
3578
3756
|
"type": "string",
|
|
3579
|
-
"description": "Customer-owned domain
|
|
3757
|
+
"description": "Customer-owned domain. Omit or `null` to set the website up on a generated temporary free subdomain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. A free subdomain generated through `POST /api/hosting/v1/domains/free-subdomains` in the last 24 hours is also accepted."
|
|
3580
3758
|
},
|
|
3581
3759
|
"datacenter_code": {
|
|
3582
3760
|
"type": "string",
|
|
@@ -4271,7 +4449,7 @@ export default [
|
|
|
4271
4449
|
"group": "hosting"
|
|
4272
4450
|
},
|
|
4273
4451
|
{
|
|
4274
|
-
"name": "hosting_websites_create",
|
|
4452
|
+
"name": "hosting_websites_create-deprecated",
|
|
4275
4453
|
"title": "Create website",
|
|
4276
4454
|
"annotations": {
|
|
4277
4455
|
"title": "Create website",
|
|
@@ -4307,7 +4485,8 @@ export default [
|
|
|
4307
4485
|
"apiToken": []
|
|
4308
4486
|
}
|
|
4309
4487
|
],
|
|
4310
|
-
"group": "hosting"
|
|
4488
|
+
"group": "hosting",
|
|
4489
|
+
"hidden": true
|
|
4311
4490
|
},
|
|
4312
4491
|
{
|
|
4313
4492
|
"name": "hosting_websites_deploy-static-site-archive",
|
|
@@ -366,6 +366,177 @@ const tools: OpenApiTool[] = [
|
|
|
366
366
|
"handlerMethod": "handleHostingCacheClear",
|
|
367
367
|
"group": "hosting"
|
|
368
368
|
},
|
|
369
|
+
{
|
|
370
|
+
"name": "hosting_websites_list-domains",
|
|
371
|
+
"title": "List website parked (alias) domains and subdomains",
|
|
372
|
+
"annotations": {
|
|
373
|
+
"title": "List website parked (alias) domains and subdomains",
|
|
374
|
+
"readOnlyHint": true,
|
|
375
|
+
"destructiveHint": false
|
|
376
|
+
},
|
|
377
|
+
"topic": "hosting",
|
|
378
|
+
"description": "List the extra domains of a website: its parked (alias) domains, which show the same site under another domain name, and its subdomains (e.g. blog.example.com), with each one's root directory. parked items have domain (a domain name or an IP address) and type (domain or ip); subdomains items have domain (the full name), subdomain (the prefix) and root_directory. A list that cannot be read comes back as { error } and the other is still returned. To add or remove one use hosting_websites_add-domain or hosting_websites_remove-domain. Works for Shared and Cloud hosting websites.",
|
|
379
|
+
"method": "",
|
|
380
|
+
"path": "",
|
|
381
|
+
"inputSchema": {
|
|
382
|
+
"type": "object",
|
|
383
|
+
"properties": {
|
|
384
|
+
"domain": {
|
|
385
|
+
"type": "string",
|
|
386
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"required": [
|
|
390
|
+
"domain"
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
"security": [],
|
|
394
|
+
"custom": true,
|
|
395
|
+
"replacesHidden": true,
|
|
396
|
+
"templateFile": "list-domains.template.js",
|
|
397
|
+
"templateFileTS": "list-domains.template.ts",
|
|
398
|
+
"handlerMethod": "handleHostingWebsitesListDomains",
|
|
399
|
+
"group": "hosting"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"name": "hosting_websites_add-domain",
|
|
403
|
+
"title": "Add a parked (alias) domain or subdomain to a website",
|
|
404
|
+
"annotations": {
|
|
405
|
+
"title": "Add a parked (alias) domain or subdomain to a website",
|
|
406
|
+
"readOnlyHint": false,
|
|
407
|
+
"destructiveHint": false
|
|
408
|
+
},
|
|
409
|
+
"topic": "hosting",
|
|
410
|
+
"description": "Add a domain to an existing website: type parked adds a parked (alias) domain, a second domain name (or an IP address) that shows the same site; type subdomain creates a subdomain such as blog.example.com with its own directory. For a parked domain the domain must be owned by the account or already point to the website: check a domain from outside the account with hosting_domains_verify-ownership first. www belongs to the main domain: do not add it as a subdomain. To create a new website use hosting_websites_create instead. Works for Shared and Cloud hosting websites.",
|
|
411
|
+
"method": "",
|
|
412
|
+
"path": "",
|
|
413
|
+
"inputSchema": {
|
|
414
|
+
"type": "object",
|
|
415
|
+
"properties": {
|
|
416
|
+
"domain": {
|
|
417
|
+
"type": "string",
|
|
418
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
419
|
+
},
|
|
420
|
+
"type": {
|
|
421
|
+
"type": "string",
|
|
422
|
+
"enum": [
|
|
423
|
+
"parked",
|
|
424
|
+
"subdomain"
|
|
425
|
+
],
|
|
426
|
+
"description": "parked: an alias domain that shows the same website; subdomain: a subdomain of the website's domain."
|
|
427
|
+
},
|
|
428
|
+
"name": {
|
|
429
|
+
"type": "string",
|
|
430
|
+
"description": "For parked: the domain name or IP address to park (e.g., example.net). For subdomain: the prefix (e.g., blog) or the full name (e.g., blog.example.com)."
|
|
431
|
+
},
|
|
432
|
+
"directory": {
|
|
433
|
+
"type": "string",
|
|
434
|
+
"description": "Subdomains only: the subdomain's directory relative to the website root."
|
|
435
|
+
},
|
|
436
|
+
"usePublicDirectory": {
|
|
437
|
+
"type": "boolean",
|
|
438
|
+
"description": "Subdomains only: serve the subdomain from the website's public directory instead of its own directory."
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
"required": [
|
|
442
|
+
"domain",
|
|
443
|
+
"type",
|
|
444
|
+
"name"
|
|
445
|
+
]
|
|
446
|
+
},
|
|
447
|
+
"security": [],
|
|
448
|
+
"custom": true,
|
|
449
|
+
"replacesHidden": true,
|
|
450
|
+
"templateFile": "add-domain.template.js",
|
|
451
|
+
"templateFileTS": "add-domain.template.ts",
|
|
452
|
+
"handlerMethod": "handleHostingWebsitesAddDomain",
|
|
453
|
+
"group": "hosting"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"name": "hosting_websites_remove-domain",
|
|
457
|
+
"title": "Remove a parked (alias) domain or subdomain from a website",
|
|
458
|
+
"annotations": {
|
|
459
|
+
"title": "Remove a parked (alias) domain or subdomain from a website",
|
|
460
|
+
"readOnlyHint": false,
|
|
461
|
+
"destructiveHint": true
|
|
462
|
+
},
|
|
463
|
+
"topic": "hosting",
|
|
464
|
+
"description": "Remove a parked (alias) domain or a subdomain from a website. Pass its name as hosting_websites_list-domains shows it: a parked domain, or a subdomain's full name or prefix; the tool finds which one it is. To delete a whole website use hosting_websites_delete. Works for Shared and Cloud hosting websites.",
|
|
465
|
+
"method": "",
|
|
466
|
+
"path": "",
|
|
467
|
+
"inputSchema": {
|
|
468
|
+
"type": "object",
|
|
469
|
+
"properties": {
|
|
470
|
+
"domain": {
|
|
471
|
+
"type": "string",
|
|
472
|
+
"description": "Domain name of the website, exactly as listed on the account and without www. (e.g., example.com)"
|
|
473
|
+
},
|
|
474
|
+
"name": {
|
|
475
|
+
"type": "string",
|
|
476
|
+
"description": "The parked domain (e.g., example.net) or the subdomain, as its full name (e.g., blog.example.com) or prefix (e.g., blog), to remove."
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
"required": [
|
|
480
|
+
"domain",
|
|
481
|
+
"name"
|
|
482
|
+
]
|
|
483
|
+
},
|
|
484
|
+
"security": [],
|
|
485
|
+
"custom": true,
|
|
486
|
+
"replacesHidden": true,
|
|
487
|
+
"templateFile": "remove-domain.template.js",
|
|
488
|
+
"templateFileTS": "remove-domain.template.ts",
|
|
489
|
+
"handlerMethod": "handleHostingWebsitesRemoveDomain",
|
|
490
|
+
"group": "hosting"
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
"name": "hosting_websites_start-setup",
|
|
494
|
+
"title": "Start website setup (renamed to hosting_websites_create)",
|
|
495
|
+
"annotations": {
|
|
496
|
+
"title": "Start website setup (renamed to hosting_websites_create)",
|
|
497
|
+
"readOnlyHint": false,
|
|
498
|
+
"destructiveHint": false
|
|
499
|
+
},
|
|
500
|
+
"topic": "hosting",
|
|
501
|
+
"description": "Renamed to hosting_websites_create. This name still runs so older skills keep working, and will be removed in a future release.",
|
|
502
|
+
"method": "",
|
|
503
|
+
"path": "",
|
|
504
|
+
"inputSchema": {
|
|
505
|
+
"type": "object",
|
|
506
|
+
"properties": {
|
|
507
|
+
"order_id": {
|
|
508
|
+
"type": "integer",
|
|
509
|
+
"description": "Hosting order ID. List orders to find available IDs."
|
|
510
|
+
},
|
|
511
|
+
"type": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"description": "Website type, as hosting_websites_create takes it."
|
|
514
|
+
},
|
|
515
|
+
"domain": {
|
|
516
|
+
"type": "string",
|
|
517
|
+
"description": "Domain for the website, as hosting_websites_create takes it."
|
|
518
|
+
},
|
|
519
|
+
"datacenter_code": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"description": "Datacenter code, as hosting_websites_create takes it."
|
|
522
|
+
},
|
|
523
|
+
"wordpress": {
|
|
524
|
+
"type": "object",
|
|
525
|
+
"description": "WordPress install settings, as hosting_websites_create takes them."
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
"required": [
|
|
529
|
+
"order_id"
|
|
530
|
+
]
|
|
531
|
+
},
|
|
532
|
+
"security": [],
|
|
533
|
+
"custom": true,
|
|
534
|
+
"templateFile": "start-setup.template.js",
|
|
535
|
+
"templateFileTS": "start-setup.template.ts",
|
|
536
|
+
"handlerMethod": "handleHostingWebsitesStartSetup",
|
|
537
|
+
"group": "hosting",
|
|
538
|
+
"hidden": true
|
|
539
|
+
},
|
|
369
540
|
{
|
|
370
541
|
"name": "hosting_import-wordpress-website",
|
|
371
542
|
"title": "Import WordPress website",
|
|
@@ -1646,7 +1817,8 @@ const tools: OpenApiTool[] = [
|
|
|
1646
1817
|
"apiToken": []
|
|
1647
1818
|
}
|
|
1648
1819
|
],
|
|
1649
|
-
"group": "hosting"
|
|
1820
|
+
"group": "hosting",
|
|
1821
|
+
"hidden": true
|
|
1650
1822
|
},
|
|
1651
1823
|
{
|
|
1652
1824
|
"name": "hosting_domains_list-website-parked",
|
|
@@ -1681,7 +1853,8 @@ const tools: OpenApiTool[] = [
|
|
|
1681
1853
|
"apiToken": []
|
|
1682
1854
|
}
|
|
1683
1855
|
],
|
|
1684
|
-
"group": "hosting"
|
|
1856
|
+
"group": "hosting",
|
|
1857
|
+
"hidden": true
|
|
1685
1858
|
},
|
|
1686
1859
|
{
|
|
1687
1860
|
"name": "hosting_domains_create-website-parked",
|
|
@@ -1721,7 +1894,8 @@ const tools: OpenApiTool[] = [
|
|
|
1721
1894
|
"apiToken": []
|
|
1722
1895
|
}
|
|
1723
1896
|
],
|
|
1724
|
-
"group": "hosting"
|
|
1897
|
+
"group": "hosting",
|
|
1898
|
+
"hidden": true
|
|
1725
1899
|
},
|
|
1726
1900
|
{
|
|
1727
1901
|
"name": "hosting_domains_delete-website-parked",
|
|
@@ -1762,7 +1936,8 @@ const tools: OpenApiTool[] = [
|
|
|
1762
1936
|
"apiToken": []
|
|
1763
1937
|
}
|
|
1764
1938
|
],
|
|
1765
|
-
"group": "hosting"
|
|
1939
|
+
"group": "hosting",
|
|
1940
|
+
"hidden": true
|
|
1766
1941
|
},
|
|
1767
1942
|
{
|
|
1768
1943
|
"name": "hosting_domains_list-website-subdomains",
|
|
@@ -1797,7 +1972,8 @@ const tools: OpenApiTool[] = [
|
|
|
1797
1972
|
"apiToken": []
|
|
1798
1973
|
}
|
|
1799
1974
|
],
|
|
1800
|
-
"group": "hosting"
|
|
1975
|
+
"group": "hosting",
|
|
1976
|
+
"hidden": true
|
|
1801
1977
|
},
|
|
1802
1978
|
{
|
|
1803
1979
|
"name": "hosting_domains_create-website-subdomain",
|
|
@@ -1845,7 +2021,8 @@ const tools: OpenApiTool[] = [
|
|
|
1845
2021
|
"apiToken": []
|
|
1846
2022
|
}
|
|
1847
2023
|
],
|
|
1848
|
-
"group": "hosting"
|
|
2024
|
+
"group": "hosting",
|
|
2025
|
+
"hidden": true
|
|
1849
2026
|
},
|
|
1850
2027
|
{
|
|
1851
2028
|
"name": "hosting_domains_delete-website-subdomain",
|
|
@@ -1886,7 +2063,8 @@ const tools: OpenApiTool[] = [
|
|
|
1886
2063
|
"apiToken": []
|
|
1887
2064
|
}
|
|
1888
2065
|
],
|
|
1889
|
-
"group": "hosting"
|
|
2066
|
+
"group": "hosting",
|
|
2067
|
+
"hidden": true
|
|
1890
2068
|
},
|
|
1891
2069
|
{
|
|
1892
2070
|
"name": "hosting_domains_verify-ownership",
|
|
@@ -3563,14 +3741,14 @@ const tools: OpenApiTool[] = [
|
|
|
3563
3741
|
"group": "hosting"
|
|
3564
3742
|
},
|
|
3565
3743
|
{
|
|
3566
|
-
"name": "
|
|
3744
|
+
"name": "hosting_websites_create",
|
|
3567
3745
|
"title": "Start website setup",
|
|
3568
3746
|
"annotations": {
|
|
3569
3747
|
"title": "Start website setup",
|
|
3570
3748
|
"readOnlyHint": false,
|
|
3571
3749
|
"destructiveHint": false
|
|
3572
3750
|
},
|
|
3573
|
-
"description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15\nseconds and wait for `status: completed` before uploading files, deploying or creating\ndatabases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)\ncreate a headless website; `headless_wordpress` additionally installs WordPress into the\n`cms` directory of the website root with generated credentials. `headless_empty` installs\nnothing: WordPress can be added later through\n`POST /api/hosting/v1/accounts/{username}/wordpress/installations`\n(`wordpress_installations_install`) with `type: headless`.\n\nOmit `domain` to set the website up on a generated temporary free subdomain
|
|
3751
|
+
"description": "Starts a website setup on a Web or Cloud hosting order and returns the created setup\nright away; the website itself is provisioned asynchronously. Poll the list website\nsetups endpoint (`hosting_websites_list-setups`) with the `domain` filter every 10 to 15\nseconds and wait for `status: completed` before uploading files, deploying or creating\ndatabases.\n\nOmit `type` for an empty website. `type: wordpress` installs WordPress in the website\nroot with the admin user, email and password from `wordpress`, the domain as the site\ntitle, and `en_US` when `wordpress.language` is omitted. The headless types\n(`headless_empty`, `headless_wordpress`, `headless_ecommerce`, `headless_pocketbase`)\ncreate a headless website; `headless_wordpress` additionally installs WordPress into the\n`cms` directory of the website root with generated credentials. `headless_empty` installs\nnothing: WordPress can be added later through\n`POST /api/hosting/v1/accounts/{username}/wordpress/installations`\n(`wordpress_installations_install`) with `type: headless`.\n\nOmit `domain` to set the website up on a generated temporary free subdomain; the created\nsetup returns it as `domain`. REST clients that need to know the free subdomain before the\ncall, so a timed-out call can be looked up and retried on the same domain, can generate\none through `POST /api/hosting/v1/domains/free-subdomains` and send it as `domain`. It is\naccepted for 24 hours, only from the client that generated it.\n\nWhen the order has no hosting account yet, the setup creates one first, in the datacenter\ngiven by `datacenter_code` or the order's default datacenter when it is omitted.\nReturns 404 when the order does not exist or is not accessible to the authenticated\nclient, and 409 with a `Retry-After` header while a setup for the same domain is still\nrunning.",
|
|
3574
3752
|
"method": "POST",
|
|
3575
3753
|
"path": "/api/hosting/v1/orders/{order_id}/onboardings",
|
|
3576
3754
|
"inputSchema": {
|
|
@@ -3593,7 +3771,7 @@ const tools: OpenApiTool[] = [
|
|
|
3593
3771
|
},
|
|
3594
3772
|
"domain": {
|
|
3595
3773
|
"type": "string",
|
|
3596
|
-
"description": "Customer-owned domain
|
|
3774
|
+
"description": "Customer-owned domain. Omit or `null` to set the website up on a generated temporary free subdomain. Cannot start with \"www.\" and can have at most one subdomain level, e.g. `blog.example.com`. A free subdomain generated through `POST /api/hosting/v1/domains/free-subdomains` in the last 24 hours is also accepted."
|
|
3597
3775
|
},
|
|
3598
3776
|
"datacenter_code": {
|
|
3599
3777
|
"type": "string",
|
|
@@ -4288,7 +4466,7 @@ const tools: OpenApiTool[] = [
|
|
|
4288
4466
|
"group": "hosting"
|
|
4289
4467
|
},
|
|
4290
4468
|
{
|
|
4291
|
-
"name": "hosting_websites_create",
|
|
4469
|
+
"name": "hosting_websites_create-deprecated",
|
|
4292
4470
|
"title": "Create website",
|
|
4293
4471
|
"annotations": {
|
|
4294
4472
|
"title": "Create website",
|
|
@@ -4324,7 +4502,8 @@ const tools: OpenApiTool[] = [
|
|
|
4324
4502
|
"apiToken": []
|
|
4325
4503
|
}
|
|
4326
4504
|
],
|
|
4327
|
-
"group": "hosting"
|
|
4505
|
+
"group": "hosting",
|
|
4506
|
+
"hidden": true
|
|
4328
4507
|
},
|
|
4329
4508
|
{
|
|
4330
4509
|
"name": "hosting_websites_deploy-static-site-archive",
|
|
@@ -427,7 +427,7 @@ export default [
|
|
|
427
427
|
"readOnlyHint": false,
|
|
428
428
|
"destructiveHint": false
|
|
429
429
|
},
|
|
430
|
-
"description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/orders/{order_id}/onboardings\n(`
|
|
430
|
+
"description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/orders/{order_id}/onboardings\n(`hosting_websites_create`) and poll GET /api/hosting/v1/onboardings\n(`hosting_websites_list-setups`) with the `domain` filter until its `status` is\n`completed`.\n\nSend `type: headless` to turn a headless website (for example one created by\n`hosting_websites_create` with `type: headless_empty`) into a headless WordPress\nwebsite: WordPress is installed into the `cms` directory with the Hostinger headless\nMU plugin and the website is marked as a headless WordPress website. `directory` is\nnot allowed with it. The target website must already be headless: the headless\ninstall rewrites the root `.htaccess`, so on any other website the request is\nrejected with 422.\n\nCall GET /api/hosting/v1/wordpress/installations (`wordpress_installations_list`)\nfiltered by username and domain before proceeding to check whether WordPress is\nalready installed on the target domain/path. If WordPress already exists and\n`overwrite` is false (the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations\n(`wordpress_installations_list`) filtered by username and domain to track\nprogress. When the installation appears in that list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
|
|
431
431
|
"method": "POST",
|
|
432
432
|
"path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
|
|
433
433
|
"inputSchema": {
|
|
@@ -451,7 +451,7 @@ export default [
|
|
|
451
451
|
},
|
|
452
452
|
"type": {
|
|
453
453
|
"type": "string",
|
|
454
|
-
"description": "Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`
|
|
454
|
+
"description": "Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`hosting_websites_create`) with `type: headless_empty`; any other website is rejected with 422.",
|
|
455
455
|
"enum": [
|
|
456
456
|
"default",
|
|
457
457
|
"headless"
|
|
@@ -444,7 +444,7 @@ const tools: OpenApiTool[] = [
|
|
|
444
444
|
"readOnlyHint": false,
|
|
445
445
|
"destructiveHint": false
|
|
446
446
|
},
|
|
447
|
-
"description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/orders/{order_id}/onboardings\n(`
|
|
447
|
+
"description": "Install WordPress on an existing website.\n\nThe website must already exist before calling this endpoint. To create a new\nwebsite first, use POST /api/hosting/v1/orders/{order_id}/onboardings\n(`hosting_websites_create`) and poll GET /api/hosting/v1/onboardings\n(`hosting_websites_list-setups`) with the `domain` filter until its `status` is\n`completed`.\n\nSend `type: headless` to turn a headless website (for example one created by\n`hosting_websites_create` with `type: headless_empty`) into a headless WordPress\nwebsite: WordPress is installed into the `cms` directory with the Hostinger headless\nMU plugin and the website is marked as a headless WordPress website. `directory` is\nnot allowed with it. The target website must already be headless: the headless\ninstall rewrites the root `.htaccess`, so on any other website the request is\nrejected with 422.\n\nCall GET /api/hosting/v1/wordpress/installations (`wordpress_installations_list`)\nfiltered by username and domain before proceeding to check whether WordPress is\nalready installed on the target domain/path. If WordPress already exists and\n`overwrite` is false (the default), the async job will fail.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that WordPress is ready. Installation typically\ntakes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations\n(`wordpress_installations_list`) filtered by username and domain to track\nprogress. When the installation appears in that list, WordPress is ready.\n\nReturns 422 when the account already uses all the databases its plan allows,\nunless `database.name` is an existing database on the account.",
|
|
448
448
|
"method": "POST",
|
|
449
449
|
"path": "/api/hosting/v1/accounts/{username}/wordpress/installations",
|
|
450
450
|
"inputSchema": {
|
|
@@ -468,7 +468,7 @@ const tools: OpenApiTool[] = [
|
|
|
468
468
|
},
|
|
469
469
|
"type": {
|
|
470
470
|
"type": "string",
|
|
471
|
-
"description": "Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`
|
|
471
|
+
"description": "Installation kind; `default` when omitted. `headless` installs WordPress into the `cms` directory with the Hostinger headless MU plugin and marks the website as a headless WordPress website. Accepted only for a website that is already headless, e.g. one created by `POST /api/hosting/v1/orders/{order_id}/onboardings` (`hosting_websites_create`) with `type: headless_empty`; any other website is rejected with 422.",
|
|
472
472
|
"enum": [
|
|
473
473
|
"default",
|
|
474
474
|
"headless"
|
|
@@ -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.
|
|
7
|
+
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.25.1', 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.
|
|
7
|
+
startServer({ name: 'hostinger-agency-hosting-mcp', version: '3.25.1', tools, instructions });
|