hostinger-api-mcp 1.43.1 → 1.44.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.
@@ -475,6 +475,30 @@ export default [
475
475
  ],
476
476
  "group": "agency-hosting"
477
477
  },
478
+ {
479
+ "name": "agency-hosting_generateUploadURLV1",
480
+ "description": "Generate a file browser upload URL with authentication credentials for uploading files\nto an Agency Plan website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's file storage via the TUS resumable upload protocol (TUS 1.0.0). Send\n`X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request below.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside the website's file storage, e.g.\n`app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
481
+ "method": "POST",
482
+ "path": "/api/agency-hosting/v1/websites/{website_uid}/files/upload-urls",
483
+ "inputSchema": {
484
+ "type": "object",
485
+ "properties": {
486
+ "website_uid": {
487
+ "type": "string",
488
+ "description": "Agency Plan website UID"
489
+ }
490
+ },
491
+ "required": [
492
+ "website_uid"
493
+ ]
494
+ },
495
+ "security": [
496
+ {
497
+ "apiToken": []
498
+ }
499
+ ],
500
+ "group": "agency-hosting"
501
+ },
478
502
  {
479
503
  "name": "agency-hosting_importWebsiteFromArchiveV1",
480
504
  "description": "Imports an Agency Plan website from an already-uploaded archive.\n\nUpload the archive to the website's root directory via file browser first, then provide its\nfilename in this request. Website contents are overwritten by the archive contents. Supported\narchive types: .zip, .tar, .tar.gz, .tgz.",
@@ -4542,6 +4566,35 @@ export default [
4542
4566
  ],
4543
4567
  "group": "hosting"
4544
4568
  },
4569
+ {
4570
+ "name": "hosting_generateUploadURLV1",
4571
+ "description": "Generate a file browser upload URL with authentication credentials\nfor uploading files directly to a website's file storage.\n\nReturns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the\nwebsite's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).\nSend `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request\nbelow.\n\n1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers\n `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.\n2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or\n `PATCH` requests with an `upload-offset` header tracking progress) until complete.\n\n`relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.\n\nInstead of a TUS client, plain `curl` also works:\n```\nFILE=app.zip\nSIZE=$(stat -f%z \"$FILE\") # stat -c%s on Linux\n\ncurl -i -X POST \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Upload-Length: ${SIZE}\" \\\n -H \"Upload-Offset: 0\"\n# -> 201 Created\n\ncurl -i -X PATCH \"{url}/${FILE}?override=true\" \\\n -H \"X-Auth: {auth_key}\" \\\n -H \"X-Auth-Rest: {rest_auth_key}\" \\\n -H \"Tus-Resumable: 1.0.0\" \\\n -H \"Content-Type: application/offset+octet-stream\" \\\n -H \"Upload-Offset: 0\" \\\n --data-binary \"@${FILE}\"\n# -> 204 No Content, Upload-Offset response header equals SIZE when done\n```",
4572
+ "method": "POST",
4573
+ "path": "/api/hosting/v1/files/upload-urls",
4574
+ "inputSchema": {
4575
+ "type": "object",
4576
+ "properties": {
4577
+ "username": {
4578
+ "type": "string",
4579
+ "description": "Account username"
4580
+ },
4581
+ "domain": {
4582
+ "type": "string",
4583
+ "description": "Website domain"
4584
+ }
4585
+ },
4586
+ "required": [
4587
+ "username",
4588
+ "domain"
4589
+ ]
4590
+ },
4591
+ "security": [
4592
+ {
4593
+ "apiToken": []
4594
+ }
4595
+ ],
4596
+ "group": "hosting"
4597
+ },
4545
4598
  {
4546
4599
  "name": "hosting_listWebsiteFilesAndDirectoriesV1",
4547
4600
  "description": "List files and directories under a website's document root.\n\nUse `directory` to browse a subdirectory relative to the document root. Symlinked entries\nare listed but never traversed into or resolved.",
@@ -4694,9 +4747,122 @@ export default [
4694
4747
  ],
4695
4748
  "group": "hosting"
4696
4749
  },
4750
+ {
4751
+ "name": "hosting_startNode_jsBuildV1",
4752
+ "description": "Start a Node.js build process using files already present on the website's file storage.\n\nWARNING: on success this overwrites the website's existing contents and cannot be\nundone — verify this is intended before calling this endpoint.\n\nThe `source_type` must be `archive` and `source_options.archive_path` must point to an\nexisting archive file on the server (relative to the website document root).\nUse the `Generate Upload URL` endpoint to obtain credentials and upload the archive first.\n\nTo auto-detect build settings from an archive before starting, first call the\n`Get Node.js Build Settings from Archive` endpoint. To upload an archive and start\na build in one step, use the `Create Node.js Build from Archive` endpoint instead.\n\nThe returned build `uuid` can be used to poll progress and retrieve logs via\nthe `Get Node.js Build Logs` endpoint.",
4753
+ "method": "POST",
4754
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds",
4755
+ "inputSchema": {
4756
+ "type": "object",
4757
+ "properties": {
4758
+ "username": {
4759
+ "type": "string",
4760
+ "description": "username parameter"
4761
+ },
4762
+ "domain": {
4763
+ "type": "string",
4764
+ "description": "Domain name"
4765
+ },
4766
+ "node_version": {
4767
+ "type": "integer",
4768
+ "description": "Node.js version",
4769
+ "enum": [
4770
+ 18,
4771
+ 20,
4772
+ 22,
4773
+ 24
4774
+ ]
4775
+ },
4776
+ "app_type": {
4777
+ "type": "string",
4778
+ "description": "Node.js application type",
4779
+ "enum": [
4780
+ "create-react-app",
4781
+ "gatsby",
4782
+ "vite",
4783
+ "angular",
4784
+ "react",
4785
+ "vue",
4786
+ "parcel",
4787
+ "next",
4788
+ "nuxt",
4789
+ "nest",
4790
+ "express",
4791
+ "fastify",
4792
+ "astro",
4793
+ "svelte",
4794
+ "svelte-kit",
4795
+ "hono",
4796
+ "react-router",
4797
+ "nitro",
4798
+ "other"
4799
+ ]
4800
+ },
4801
+ "root_directory": {
4802
+ "type": "string",
4803
+ "description": "Application root directory (where package.json is located) relative to public_html"
4804
+ },
4805
+ "output_directory": {
4806
+ "type": "string",
4807
+ "description": "Build output directory relative to the root directory"
4808
+ },
4809
+ "build_script": {
4810
+ "type": "string",
4811
+ "description": "Build script that will be ran to build the application"
4812
+ },
4813
+ "entry_file": {
4814
+ "type": "string",
4815
+ "description": "The main entry point file for the application"
4816
+ },
4817
+ "package_manager": {
4818
+ "type": "string",
4819
+ "description": "Package manager",
4820
+ "enum": [
4821
+ "npm",
4822
+ "yarn",
4823
+ "pnpm"
4824
+ ]
4825
+ },
4826
+ "source_type": {
4827
+ "type": "string",
4828
+ "description": "The source type of the files",
4829
+ "enum": [
4830
+ "archive"
4831
+ ]
4832
+ },
4833
+ "source_options": {
4834
+ "type": "object",
4835
+ "description": "Source-specific options",
4836
+ "properties": {
4837
+ "archive_path": {
4838
+ "type": "string",
4839
+ "description": "The path to the archive file relative to the document root of the vhost (required if source is \"archive\")"
4840
+ }
4841
+ }
4842
+ }
4843
+ },
4844
+ "required": [
4845
+ "username",
4846
+ "domain",
4847
+ "node_version",
4848
+ "app_type",
4849
+ "root_directory",
4850
+ "output_directory",
4851
+ "build_script",
4852
+ "source_type",
4853
+ "source_options"
4854
+ ]
4855
+ },
4856
+ "security": [
4857
+ {
4858
+ "apiToken": []
4859
+ }
4860
+ ],
4861
+ "group": "hosting"
4862
+ },
4697
4863
  {
4698
4864
  "name": "hosting_createNodeJSBuildFromArchiveV1",
4699
- "description": "Upload a project archive, auto-detect build settings, and immediately start a Node.js build.\n\nThis is the recommended single-step approach for deploying a Node.js application.\nThe archive is uploaded to the website's file storage, build settings are auto-detected\nfrom the package.json inside the archive, and the build process starts automatically.\nOptional override fields take precedence over auto-detected values.\nMaximum archive size is 50MB.\n\nBefore archiving, exclude `node_modules/` and any build output directories\n(e.g. `dist/`, `.next/`, `build/`) — they are not needed because the build\nprocess runs the install step automatically, and including them unnecessarily\nincreases the archive size. This also helps keep the archive well under the 50MB limit.\n\nExample (zip):\n```\nzip -r archive.zip . --exclude \"node_modules/*\" --exclude \"dist/*\"\n```\n\nThe returned build `uuid` can be used to poll progress and retrieve logs via\nthe `Get Node.js Build Logs` endpoint.",
4865
+ "description": "Upload a project archive, auto-detect build settings, and immediately start a Node.js build.\n\nWARNING: on success this overwrites the website's existing contents and cannot be\nundone — verify this is intended before calling this endpoint.\n\nThis is the recommended single-step approach for deploying a Node.js application.\nThe archive is uploaded to the website's file storage, build settings are auto-detected\nfrom the package.json inside the archive, and the build process starts automatically.\nOptional override fields take precedence over auto-detected values.\nMaximum archive size is 50MB.\n\nBefore archiving, exclude `node_modules/` and any build output directories\n(e.g. `dist/`, `.next/`, `build/`) — they are not needed because the build\nprocess runs the install step automatically, and including them unnecessarily\nincreases the archive size. This also helps keep the archive well under the 50MB limit.\n\nExample (zip):\n```\nzip -r archive.zip . --exclude \"node_modules/*\" --exclude \"dist/*\"\n```\n\nThe returned build `uuid` can be used to poll progress and retrieve logs via\nthe `Get Node.js Build Logs` endpoint.",
4700
4866
  "method": "POST",
4701
4867
  "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/from-archive",
4702
4868
  "inputSchema": {
@@ -4788,6 +4954,40 @@ export default [
4788
4954
  ],
4789
4955
  "group": "hosting"
4790
4956
  },
4957
+ {
4958
+ "name": "hosting_getNode_jsBuildSettingsFromArchiveV1",
4959
+ "description": "Auto-detect Node.js build settings from a package.json inside an archive already on the server.\n\nUse this before calling `Start Node.js Build` to preview what settings will be used,\nor to let the user review and override values (framework, node version, root directory,\noutput directory, build script) before committing to a build.\n\nThe archive must already be present on the website's file storage. Use the\n`Generate Upload URL` endpoint to obtain credentials and upload the archive first.\nTo upload an archive and start a build in one step without inspecting settings first,\nuse the `Create Node.js Build from Archive` endpoint instead.",
4960
+ "method": "GET",
4961
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/settings/from-archive",
4962
+ "inputSchema": {
4963
+ "type": "object",
4964
+ "properties": {
4965
+ "username": {
4966
+ "type": "string",
4967
+ "description": "username parameter"
4968
+ },
4969
+ "domain": {
4970
+ "type": "string",
4971
+ "description": "Domain name"
4972
+ },
4973
+ "archive_path": {
4974
+ "type": "string",
4975
+ "description": "The path to the archive file relative to the document root of the vhost"
4976
+ }
4977
+ },
4978
+ "required": [
4979
+ "username",
4980
+ "domain",
4981
+ "archive_path"
4982
+ ]
4983
+ },
4984
+ "security": [
4985
+ {
4986
+ "apiToken": []
4987
+ }
4988
+ ],
4989
+ "group": "hosting"
4990
+ },
4791
4991
  {
4792
4992
  "name": "hosting_getNodeJSBuildLogsV1",
4793
4993
  "description": "Retrieve logs from a specific Node.js build process.\n\nTo stream live output while a build is running, poll this endpoint repeatedly\nwhile the build state is `running`, passing the previously returned `lines` count\nas `from_line` to fetch only new output since the last call.\nLog content may contain ANSI escape sequences (color codes).",
@@ -5371,6 +5571,40 @@ export default [
5371
5571
  ],
5372
5572
  "group": "hosting"
5373
5573
  },
5574
+ {
5575
+ "name": "hosting_deployStaticSiteArchiveV1",
5576
+ "description": "Deploy a static application from an archive file.\n\nWARNING: this overwrites the website's existing contents and cannot be undone —\nverify this is intended before calling this endpoint.\n\nThis endpoint allows you to deploy a static application from an archive\nfile that has been uploaded to the website's directory.\n\nThis only works for static sites (pre-built HTML/CSS/JS with no build step). For\nNode.js applications, use `Create NodeJS build from archive` instead, or\n`Start Node.js build` if the archive is already uploaded. For WordPress sites,\nuse `Import WordPress website`.",
5577
+ "method": "POST",
5578
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/deploy",
5579
+ "inputSchema": {
5580
+ "type": "object",
5581
+ "properties": {
5582
+ "username": {
5583
+ "type": "string",
5584
+ "description": "username parameter"
5585
+ },
5586
+ "domain": {
5587
+ "type": "string",
5588
+ "description": "Domain name"
5589
+ },
5590
+ "archive_path": {
5591
+ "type": "string",
5592
+ "description": "Relative path to the archive file from website root directory"
5593
+ }
5594
+ },
5595
+ "required": [
5596
+ "username",
5597
+ "domain",
5598
+ "archive_path"
5599
+ ]
5600
+ },
5601
+ "security": [
5602
+ {
5603
+ "apiToken": []
5604
+ }
5605
+ ],
5606
+ "group": "hosting"
5607
+ },
5374
5608
  {
5375
5609
  "name": "hosting_deleteWebsiteV1",
5376
5610
  "description": "This endpoint permanently removes a website and all of its data. This action\ncannot be undone. Before calling it, make sure the user understands the\nconsequences and explicitly confirms that they want to proceed.\n\nAll website files, databases and related configuration will be removed.\nThe hosting plan itself is kept, so a new website can be created on it afterwards.\n\nSupported websites: main and addon domain websites on web hosting plans, and\nWebsite Builder websites. Parked domains and subdomains cannot be deleted with\nthis endpoint. The domain must be the exact website domain, not a preview\ndomain or an alias.\n\nReturns 404 when the domain does not exist or does not belong to the\nauthenticated client.\n\nWebsite removal is processed asynchronously and can take a few minutes to\ncomplete. The response returns before the removal finishes.",
@@ -10530,6 +10764,45 @@ export default [
10530
10764
  ],
10531
10765
  "group": "wordpress"
10532
10766
  },
10767
+ {
10768
+ "name": "hosting_importWordPressWebsiteV1",
10769
+ "description": "Import WordPress website to the specified domain.\n\nWARNING: this overwrites the website's existing contents and cannot be undone —\nverify this is intended before calling this endpoint.\n\nThis endpoint allows you to import a WordPress website from archive and\ndatabase files that have been uploaded to the website's directory.",
10770
+ "method": "POST",
10771
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/import",
10772
+ "inputSchema": {
10773
+ "type": "object",
10774
+ "properties": {
10775
+ "username": {
10776
+ "type": "string",
10777
+ "description": "username parameter"
10778
+ },
10779
+ "domain": {
10780
+ "type": "string",
10781
+ "description": "Domain name"
10782
+ },
10783
+ "archive_path": {
10784
+ "type": "string",
10785
+ "description": "Path to the WordPress archive file (relative to website root)"
10786
+ },
10787
+ "sql_path": {
10788
+ "type": "string",
10789
+ "description": "Path to the database SQL file (relative to website root)"
10790
+ }
10791
+ },
10792
+ "required": [
10793
+ "username",
10794
+ "domain",
10795
+ "archive_path",
10796
+ "sql_path"
10797
+ ]
10798
+ },
10799
+ "security": [
10800
+ {
10801
+ "apiToken": []
10802
+ }
10803
+ ],
10804
+ "group": "wordpress"
10805
+ },
10533
10806
  {
10534
10807
  "name": "hosting_installWordPressV1",
10535
10808
  "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/websites and poll\nGET /api/hosting/v1/websites until it appears.\n\nCall GET /api/hosting/v1/wordpress/installations filtered by username and\ndomain before proceeding to check whether WordPress is already installed on\nthe target domain/path. If WordPress already exists and `overwrite` is false\n(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 filtered\nby username and domain to track progress. When the installation appears in\nthat list, WordPress is ready.",
@@ -11067,6 +11340,45 @@ export default [
11067
11340
  ],
11068
11341
  "group": "wordpress"
11069
11342
  },
11343
+ {
11344
+ "name": "hosting_deployWordPressPluginV1",
11345
+ "description": "Deploy a WordPress plugin from an already uploaded directory.\n\nThis endpoint allows you to deploy a WordPress plugin that has been uploaded to the website's directory.\nThe plugin will be activated and made available in the WordPress admin panel.",
11346
+ "method": "POST",
11347
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/plugins/deploy",
11348
+ "inputSchema": {
11349
+ "type": "object",
11350
+ "properties": {
11351
+ "username": {
11352
+ "type": "string",
11353
+ "description": "username parameter"
11354
+ },
11355
+ "domain": {
11356
+ "type": "string",
11357
+ "description": "Domain name"
11358
+ },
11359
+ "slug": {
11360
+ "type": "string",
11361
+ "description": "Slug of the plugin"
11362
+ },
11363
+ "plugin_path": {
11364
+ "type": "string",
11365
+ "description": "Relative path to the plugin directory from wp-content/plugins"
11366
+ }
11367
+ },
11368
+ "required": [
11369
+ "username",
11370
+ "domain",
11371
+ "slug",
11372
+ "plugin_path"
11373
+ ]
11374
+ },
11375
+ "security": [
11376
+ {
11377
+ "apiToken": []
11378
+ }
11379
+ ],
11380
+ "group": "wordpress"
11381
+ },
11070
11382
  {
11071
11383
  "name": "hosting_installWordPressPluginsV1",
11072
11384
  "description": "Install one or more plugins on an existing WordPress installation.\n\nProvide the WordPress installation (software) identifier in the path. It can\nbe obtained from GET /api/hosting/v1/wordpress/installations (the `id`\nfield). Use GET /api/hosting/v1/wordpress/plugins to discover the plugin\nslugs available for installation.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that the plugins are ready.",
@@ -11389,6 +11701,49 @@ export default [
11389
11701
  ],
11390
11702
  "group": "wordpress"
11391
11703
  },
11704
+ {
11705
+ "name": "hosting_deployWordPressThemeV1",
11706
+ "description": "Deploy a WordPress theme from an already uploaded directory.\n\nThis endpoint allows you to deploy a WordPress theme that has been uploaded to the website's directory.\nThe theme can be optionally activated after deployment.",
11707
+ "method": "POST",
11708
+ "path": "/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/themes/deploy",
11709
+ "inputSchema": {
11710
+ "type": "object",
11711
+ "properties": {
11712
+ "username": {
11713
+ "type": "string",
11714
+ "description": "username parameter"
11715
+ },
11716
+ "domain": {
11717
+ "type": "string",
11718
+ "description": "Domain name"
11719
+ },
11720
+ "slug": {
11721
+ "type": "string",
11722
+ "description": "Slug of the theme"
11723
+ },
11724
+ "theme_path": {
11725
+ "type": "string",
11726
+ "description": "Relative path to the theme directory from wp-content/themes"
11727
+ },
11728
+ "is_activated": {
11729
+ "type": "boolean",
11730
+ "description": "Whether to activate the theme after deployment"
11731
+ }
11732
+ },
11733
+ "required": [
11734
+ "username",
11735
+ "domain",
11736
+ "slug",
11737
+ "theme_path"
11738
+ ]
11739
+ },
11740
+ "security": [
11741
+ {
11742
+ "apiToken": []
11743
+ }
11744
+ ],
11745
+ "group": "wordpress"
11746
+ },
11392
11747
  {
11393
11748
  "name": "hosting_installWordPressThemeV1",
11394
11749
  "description": "Install a theme on an existing WordPress installation.\n\nProvide the WordPress installation (software) identifier in the path. It can\nbe obtained from GET /api/hosting/v1/wordpress/installations (the `id`\nfield).\n\nWhen the theme is one of the Hostinger themes (hostinger-blog,\nhostinger-affiliate-theme, hostinger-ai-theme), the optional `palette`,\n`layout`, and `font` fields are forwarded to the custom installer (defaults:\npalette1, layout1, default). For any other theme they are ignored.\n\nThis operation is asynchronous: a successful response only means the install\njob has been queued, not that the theme is ready.",