{
  "markdown": "# hostinger-api-mcp\n\nModel Context Protocol (MCP) server for Hostinger API.\n\n## Quick start: Hosted remote server\n\nIf you don't want to install or run anything locally, connect directly to Hostinger's hosted MCP server:\n\n```\nhttps://mcp.hostinger.com\n```\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http hostinger https://mcp.hostinger.com\n```\n\nThis opens a browser window to authorize via OAuth. Once approved, all tools below are available in your session.\n\n### Other MCP-compatible clients\n\nAdd `https://mcp.hostinger.com` as a remote Streamable HTTP MCP server in your client's configuration and complete the OAuth prompt when it appears. Refer to your client's docs for how it exposes \"add remote MCP server\" / \"custom connector\" settings.\n\n## Prerequisites\n- Node.js version 24 or higher\n\nIf you don't have Node.js installed, you can download it from the [official website](https://nodejs.org/en/download/).\nAlternatively, you can use a package manager like [Homebrew](https://brew.sh/) (for macOS) or [Chocolatey](https://chocolatey.org/) (for Windows) to install Node.js.\n\nWe recommend using [NVM (Node Version Manager)](https://github.com/nvm-sh/nvm) to install and manage installed Node.js versions.\nAfter installing NVM, you can install Node.js with the following command:\n```bash\nnvm install v24\nnvm use v24\n```\n\n## Installation\n\nTo install the MCP server, run one of the following command, depending on your package manager:\n\n```bash\n# Install globally from npm\nnpm install -g @hostinger/mcp\n\n# Or with yarn\nyarn global add @hostinger/mcp\n\n# Or with pnpm\npnpm add -g @hostinger/mcp\n```\n\n## Update\n\nTo update the MCP server to the latest version, use one of the following commands, depending on your package manager:\n\n```bash\n# Update globally from npm\nnpm update -g @hostinger/mcp\n\n# Or with yarn\nyarn global upgrade @hostinger/mcp\n\n# Or with pnpm\npnpm update -g @hostinger/mcp\n```\n\n## Binaries\n\nThis package installs the following MCP server commands:\n\n- `hostinger-api-mcp` — unified server with every tool (382 total)\n- `hostinger-agency-hosting-mcp` — 38 tools for agency-hosting\n- `hostinger-billing-mcp` — 9 tools for billing\n- `hostinger-dns-mcp` — 8 tools for dns\n- `hostinger-domains-mcp` — 40 tools for domains\n- `hostinger-ecommerce-mcp` — 29 tools for ecommerce\n- `hostinger-horizons-mcp` — 2 tools for horizons\n- `hostinger-hosting-mcp` — 64 tools for hosting\n- `hostinger-mail-mcp` — 38 tools for mail\n- `hostinger-reach-mcp` — 52 tools for reach\n- `hostinger-vps-mcp` — 64 tools for vps\n- `hostinger-wordpress-mcp` — 38 tools for wordpress\n\nPick the binary that matches your agent's scope. `hostinger-api-mcp` remains the backwards-compatible default.\n\n## Configuration\n\nThe following environment variables can be configured when running the server:\n- `DEBUG`: Enable debug logging (true/false) (default: false)\n- `HOSTINGER_API_TOKEN`: Your API token, which will be sent in the `Authorization` header. When set, OAuth is bypassed entirely.\n- `API_TOKEN`: Deprecated alias for `HOSTINGER_API_TOKEN`. Will be removed in a future version — prefer `HOSTINGER_API_TOKEN`.\n- `OAUTH_ISSUER`: OAuth server base URL (default: `https://auth.hostinger.com`). Only used when `HOSTINGER_API_TOKEN` is not set.\n\n## Authentication\n\nThe server supports two authentication methods:\n\n### API Token (recommended for CI/scripts)\n\nSet `HOSTINGER_API_TOKEN` in the environment or `.env` file. When present it always takes precedence — no OAuth code runs.\n\n### OAuth 2.0 with PKCE (interactive sign-in)\n\nWhen `HOSTINGER_API_TOKEN` is not set and the server runs in stdio mode, OAuth 2.0 with PKCE is used automatically on the first authenticated tool call:\n\n1. A dynamic OAuth client is registered with the issuer (RFC 7591) — once per machine.\n2. A browser window opens to the authorization page.\n3. After sign-in, the server captures the redirect on a local ephemeral port, exchanges the code for tokens, and stores them.\n4. Subsequent calls reuse the stored access token; expired tokens are refreshed automatically. If a refresh token is revoked, the browser flow is re-launched.\n\nCredentials are stored at:\n- macOS / Linux: `~/.config/hostinger-mcp/credentials.json` (mode 0600)\n- Windows: `%APPDATA%\\hostinger-mcp\\credentials.json`\n\nCredentials are shared across all Hostinger MCP binaries (`hostinger-api-mcp`, `hostinger-vps-mcp`, etc.).\n\n**Manual commands:**\n\n```bash\n# Run the OAuth sign-in flow immediately (don't wait for the first tool call)\nhostinger-api-mcp --login\n\n# Revoke stored credentials\nhostinger-api-mcp --logout\n```\n\n**HTTP transport note:** OAuth sign-in is not supported in `--http` mode. Set `HOSTINGER_API_TOKEN` before using `--http`.\n\n## Usage\n\n### JSON configuration for Claude, Cursor, etc.\n\n```json\n{\n    \"mcpServers\": {\n        \"hostinger-api\": {\n            \"command\": \"hostinger-api-mcp\",\n            \"env\": {\n                \"DEBUG\": \"false\",\n                \"HOSTINGER_API_TOKEN\": \"YOUR API TOKEN\"\n            }\n        }\n    }\n}\n```\n\n### Transport Options\n\nThe MCP server supports two transport modes:\n\n#### Standard I/O Transport\n\nThe server can use standard input / output (stdio) transport (default). This provides local streaming:\n\n#### Streamable HTTP Transport\n\nThe server can use HTTP streaming transport. This provides bidirectional streaming over HTTP:\n\n```bash\n# Default HTTP transport on localhost:8100\nhostinger-api-mcp --http\n\n# Specify custom host and port\nhostinger-api-mcp --http --host 0.0.0.0 --port 8150\n```\n\n#### Command Line Options\n\n```\nOptions:\n  --http           Use HTTP streaming transport (requires HOSTINGER_API_TOKEN env var)\n  --stdio          Use Server-Sent Events transport (default)\n  --host {host}    Hostname or IP address to listen on (default: 127.0.0.1)\n  --port {port}    Port to bind to (default: 8100)\n  --login          Run OAuth sign-in flow and exit\n  --logout         Revoke stored OAuth credentials and exit\n  --help           Show help message\n```\n\n### Using as an MCP Tool Provider\n\nThis server implements the Model Context Protocol (MCP) and can be used with any MCP-compatible consumer.\n\nExample of connecting to this server using HTTP streaming transport:\n\n```javascript\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\n\n// Create HTTP transport\nconst transport = new StreamableHTTPClientTransport({\n  url: \"http://localhost:8100/\",\n  headers: {\n    \"Authorization\": `Bearer ${process.env.HOSTINGER_API_TOKEN}`\n  }\n});\n\n// Connect to the MCP server\nconst client = new Client({\n  name: \"my-client\",\n  version: \"1.0.0\"\n}, {\n  capabilities: {}\n});\n\nawait client.connect(transport);\n\n// List available tools\nconst { tools } = await client.listTools();\nconsole.log(\"Available tools:\", tools);\n\n// Call a tool\nconst result = await client.callTool({\n  name: \"billing_getCatalogItemListV1\",\n  arguments: { category: \"DOMAIN\" }\n});\nconsole.log(\"Tool result:\", result);\n```\n\n## Available Tools\n\nThis MCP server provides the following tools:\n\n### `hostinger-agency-hosting-mcp`\n\n#### agency-hosting_deployNodeStaticWebsite\n\nDeploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For plain PHP applications that should be extracted as-is, use agencyHosting_deployPhpApplication instead. The website UID is automatically resolved from the domain.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### agency-hosting_deployPhpApplication\n\nDeploy a PHP (or other non-build) Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites where the archive contents should be extracted and served as-is with no build step (e.g., PHP applications). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the import-archive process which overwrites the website contents with the archive contents. This operation is synchronous: the archive is extracted and deployed before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For node-static websites that require a build step, use agencyHosting_deployNodeStaticWebsite instead. The website UID is automatically resolved from the domain.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### agency-hosting_listAvailableDatacentersV1\n\nLists the datacenters available for provisioning a new website on the given Agency Plan\nhosting order.\n\nEach datacenter includes a `pinger_url` you can ping from the client to measure round-trip\nlatency; comparing the results across datacenters lets you pick the nearest one (lowest\nping) before choosing its `code` as the `datacenter_code` when creating a website setup.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/datacenters`\n\n#### agency-hosting_changeWebsiteDomainV1\n\nChanges the primary domain for an Agency Plan website.\n\nProvide the current domain in the path and the new domain in the request body.\nSet domain to null to revert to the temporary domain.\n\n- **Method**: `PUT`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{from_domain}`\n\n#### agency-hosting_linkDomainToWebsiteV1\n\nLinks a domain to the specified Agency Plan website so it can serve traffic for that domain.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains`\n\n#### agency-hosting_listDomainsV1\n\nReturns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client.\n\nUse the website_uuids filter to narrow results to specific websites.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/domains`\n\n#### agency-hosting_unlinkDomainFromWebsiteV1\n\nUnlinks a domain from the specified Agency Plan website.\n\nThe website stops serving traffic on this domain immediately.\n\nWebsite files and database are preserved, and any other linked domains remain accessible.\n\nIf this is the only domain on the website, unlinking leaves the website without an accessible domain.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}`\n\n#### agency-hosting_generateUploadURLV1\n\nGenerate 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```\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/files/upload-urls`\n\n#### agency-hosting_importWebsiteFromArchiveV1\n\nImports 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.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/files/import-archive`\n\n#### agency-hosting_listAgencyPlanOrderDiskUsageMetricsV1\n\nReturns aggregated disk and inode usage for the Agency Plan order over the\nselected time frame, plus the plan quotas. Figures cover the whole order\naccount. Values may be up to one hour stale. CPU, memory, and process usage\nare on the resource-usage-metrics endpoint.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/disk-usage-metrics`\n\n#### agency-hosting_listOrdersV1\n\nReturns a paginated list of Agency Plan orders accessible to the authenticated client.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders`\n\n#### agency-hosting_listOrderResourceUsageMetricsV1\n\nReturns aggregated CPU, memory, and process usage for the Agency Plan order\nover the selected time frame, plus the plan quotas and a per-website\nbreakdown. Each website is identified by uid. Suspended and deleted websites\nare excluded from both the order totals and the per-website breakdown.\nValues may be up to one hour stale. Disk and inode usage are on the\ndisk-usage-metrics endpoint.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/resource-usage-metrics`\n\n#### agency-hosting_listPHPExtensionsForAWebsiteV1\n\nLists every PHP extension available to an Agency Plan website and whether it is currently enabled.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions`\n\n#### agency-hosting_replaceWebsitePHPExtensionsV1\n\nReplaces the set of PHP extensions enabled on an Agency Plan website with the ones provided. Any toggleable extension not in the request is disabled, so call the extensions endpoint first and send the full desired set. Extensions compiled into PHP, reported with the \"built-in\" state, are always active and are unaffected.\n\n- **Method**: `PUT`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions`\n\n#### agency-hosting_listPHPOptionsForAWebsiteV1\n\nLists the php.ini directives that can be configured for an Agency Plan website, each with its default, the value currently in effect, and the values it accepts.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/options`\n\n#### agency-hosting_replaceWebsitePHPOptionsV1\n\nReplaces the custom php.ini values on an Agency Plan website with the ones provided. Any option not in the request is reset to its default, so call the options endpoint first and send the full desired set. Sending an empty array resets every option to its default.\n\n- **Method**: `PUT`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/options`\n\n#### agency-hosting_listAvailablePHPVersionsForAnOrderV1\n\nLists the PHP versions available to websites created under an Agency Plan order, determined by the server the order is hosted on. Use this before creating a website; for a website that already exists, call the website-scoped versions endpoint instead.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/php-settings/versions`\n\n#### agency-hosting_listAvailablePHPVersionsForAWebsiteV1\n\nLists the PHP versions an Agency Plan website can be switched to. The version the website is currently running is returned as settings.php.version by the website details endpoint.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/versions`\n\n#### agency-hosting_updateWebsitePHPVersionV1\n\nSwitches an Agency Plan website to a different PHP version. Call the available versions endpoint first to see which versions can be selected. The website restarts on the new version, so requests served during the switch may fail and code that is incompatible with the target version will break.\n\n- **Method**: `PATCH`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/version`\n\n#### agency-hosting_createANewWebsiteV1\n\nProvisions a new website on one of your Agency Plan hosting orders.\n\nChoose the datacenter, stack (`flavor`), and PHP version for the site. Optionally attach\nyour own `domain` — omit it, set it to `null`, or leave it unavailable and a free\n`*.hostingersite.com` subdomain is generated instead — and/or install WordPress by\nsupplying the `wordpress` details (admin account, site title, and language).\n\nCommon setups:\n- **Plain PHP site**: `flavor` set to `php-fpm`, with `settings.php.version`; omit\n  `wordpress` and `type`.\n- **WordPress site**: `flavor` set to the desired WordPress version (e.g. `wp-7.0`), plus\n  the `wordpress` block (admin account, title, language).\n- **Static/Node.js frontend app**: `flavor` set to `php-fpm` and `type` set to\n  `node-static`.\n\nProvisioning runs in the background, so the response returns immediately with a setup UUID\nthat identifies the job. The new website becomes reachable once provisioning finishes.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/setups`\n\n#### agency-hosting_getWebsiteSetupStatusV1\n\nReturns the current status of an Agency Plan website setup started via the setups\nendpoint.\n\nPoll this endpoint using the `setup_uuid` returned from the provisioning request until\n`status` becomes `completed`, at which point `website_uid` identifies the new website.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/setups/{setup_uuid}`\n\n#### agency-hosting_buildWebsiteNodeJSAssetsV1\n\nBuilds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.\n\nUpload the archive to file browser first, then provide its relative path from document root in this request.\nWebsite contents are overwritten by the build result, which is deployed to public_html.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/build-assets`\n\n#### agency-hosting_clearWebsiteCacheV1\n\nClears cache for all domains associated with an Agency Plan website, including its preview domain.\n\nThis operation clears all cache types for the website.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cache`\n\n#### agency-hosting_listWebsiteCronJobsV1\n\nReturns a paginated list of cron jobs configured for an Agency Plan website.\n\nEach entry includes the schedule expression and the command executed on that schedule.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs`\n\n#### agency-hosting_createWebsiteCronJobV1\n\nCreates a cron job for an Agency Plan website from a schedule expression and a command.\n\nReturns the created cron job, including its uuid, which is required to delete the cron job.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs`\n\n#### agency-hosting_deleteWebsiteCronJobV1\n\nPermanently deletes the cron job identified by its uuid from an Agency Plan website.\n\nThe operation is idempotent: deleting a cron job that does not exist succeeds without error.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs/{uuid}`\n\n#### agency-hosting_listWebsiteDatabasesV1\n\nReturns a paginated list of MySQL databases created for an Agency Plan website.\n\nEach entry includes the database's non-system users.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases`\n\n#### agency-hosting_createWebsiteDatabaseV1\n\nCreates a MySQL database with a dedicated user for an Agency Plan website.\n\nThe database name, username, and password must all be provided by the caller.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases`\n\n#### agency-hosting_deleteWebsiteDatabaseV1\n\nPermanently deletes a MySQL database and all its data from an Agency Plan website, including its users.\n\nThe operation is idempotent: deleting a database that does not exist succeeds without error.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}`\n\n#### agency-hosting_createWebsiteDatabaseUserV1\n\nCreates a user for an existing database on an Agency Plan website.\n\nEach database supports a single non-system user; creating a user for a database that already has one fails.\n\n- **Method**: `POST`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users`\n\n#### agency-hosting_deleteWebsiteDatabaseUserV1\n\nPermanently deletes a database user from an Agency Plan website database, revoking all access it had.\n\nThe operation is idempotent: deleting a user that does not exist succeeds without error.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users/{database_user_name}`\n\n#### agency-hosting_getWebsiteDetailsV1\n\nRetrieves detailed information about a specific Agency Plan website, including configuration,\nstatus, metadata, hosting plan details, and resource quotas.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}`\n\n#### agency-hosting_deleteWebsiteV1\n\nPermanently deletes an Agency Plan website. Deletion is processed asynchronously: the\nwebsite is immediately transitioned to a deleting state and the underlying server\nresources are removed in the background.\n\n- **Method**: `DELETE`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}`\n\n#### agency-hosting_listAgencyPlanWebsitesV1\n\nRetrieve a paginated list of Agency Plan websites (H5G, Builder, and Horizons) accessible to\nthe authenticated client.\n\nThis endpoint returns websites from your hosting accounts as well as\nwebsites from other client hosting accounts that have shared access\nwith you.\n\nThe response shape differs per platform — see the `platform` field on each item.\n\nUse `website_types` to list only websites of a given detected type, e.g. only\nWordPress websites (`website_types=wordpress`) or only Node.js websites\n(`website_types=nodejs`). Combine with `order_ids`, `states`, or `domain` for more\ntargeted results.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites`\n\n#### agency-hosting_listWebsiteProcessesV1\n\nLists active and recently completed asynchronous processes for an Agency Plan website.\n\nEach process has a unique ID (for tracking), a type, and a status (running, completed, failed).\nPoll this endpoint after initiating async operations (SSL setup, backups, cloning) to track progress.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/processes`\n\n#### agency-hosting_changeWordPressVersionV1\n\nChanges the installed WordPress core version on an Agency Plan website to one of the versions available for installation.\n\n- **Method**: `PATCH`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/version`\n\n#### agency-hosting_getWordPressSettingsV1\n\nReturns the current WordPress settings for an Agency Plan website: installed core version,\nLiteSpeed Cache plugin status, object cache status, and maintenance mode status.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings`\n\n#### agency-hosting_listAvailableWordPressVersionsV1\n\nLists the WordPress core versions available for installation on an Agency Plan website.\n\n- **Method**: `GET`\n- **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/versions`\n\n### `hostinger-billing-mcp`\n\n#### billing_getCatalogItemListV1\n\nRetrieve catalog items available for order.\n\nPrices in catalog items is displayed as cents (without floating point),\ne.g: float `17.99` is displayed as integer `1799`.\n\nUse this endpoint to view available services and pricing before placing orders.\n\n- **Method**: `GET`\n- **Path**: `/api/billing/v1/catalog`\n\n#### billing_createPurchaseOrderV1\n\nCreate a purchase order for any Hostinger product.\n\nThis unified endpoint places an order for one or more catalog items and\nworks across all Hostinger products, leveraging the existing billing\ninfrastructure. Use the [catalog endpoint](#tag/billing-catalog) to look\nup the `item_id` values available for purchase.\n\nIf no payment method is provided, your default payment method will be used automatically.\n\nThis endpoint only places the order. Product-specific provisioning\n(e.g. VPS setup or domain registration) is not performed here — once the\norder completes, use the relevant product endpoints or\n[hPanel](https://hpanel.hostinger.com/) to finalize setup.\n\nUse this endpoint to purchase any product available in the catalog.\n\n- **Method**: `POST`\n- **Path**: `/api/billing/v1/orders`\n\n#### billing_setDefaultPaymentMethodV1\n\nSet the default payment method for your account.\n\nUse this endpoint to configure the primary payment method for future orders.\n\n- **Method**: `POST`\n- **Path**: `/api/billing/v1/payment-methods/{paymentMethodId}`\n\n#### billing_deletePaymentMethodV1\n\nDelete a payment method from your account.\n\nUse this endpoint to remove unused payment methods from user accounts.\n\n- **Method**: `DELETE`\n- **Path**: `/api/billing/v1/payment-methods/{paymentMethodId}`\n\n#### billing_getPaymentMethodListV1\n\nRetrieve available payment methods that can be used for placing new orders.\n\nIf you want to add new payment method,\nplease use [hPanel](https://hpanel.hostinger.com/billing/payment-methods).\n\nUse this endpoint to view available payment options before creating orders.\n\n- **Method**: `GET`\n- **Path**: `/api/billing/v1/payment-methods`\n\n#### billing_getSubscriptionListV1\n\nRetrieve a list of all subscriptions associated with your account.\n\nUse this endpoint to monitor active services and billing status.\n\n- **Method**: `GET`\n- **Path**: `/api/billing/v1/subscriptions`\n\n#### billing_disableAutoRenewalV1\n\nDisable auto-renewal for a subscription.\n\nUse this endpoint when disable auto-renewal for a subscription.\n\n- **Method**: `DELETE`\n- **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/disable`\n\n#### billing_enableAutoRenewalV1\n\nEnable auto-renewal for a subscription.\n\nUse this endpoint when enable auto-renewal for a subscription.\n\n- **Method**: `PATCH`\n- **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/enable`\n\n#### billing_renewSubscriptionV1\n\nCreate a renewal order for an existing Hostinger subscription.\n\nThis endpoint places a renewal order for a single subscription, leveraging\nthe existing billing infrastructure. Use the\n[subscriptions endpoint](#tag/billing-subscriptions) to look up the\n`subscriptionId` values available for renewal.\n\nIf no payment method is provided, your default payment method will be used automatically.\n\nUse this endpoint to renew any subscription available in your account.\n\n- **Method**: `POST`\n- **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/renew`\n\n### `hostinger-dns-mcp`\n\n#### DNS_getDNSSnapshotV1\n\nRetrieve particular DNS snapshot with contents of DNS zone records.\n\nUse this endpoint to view historical DNS configurations for domains.\n\n- **Method**: `GET`\n- **Path**: `/api/dns/v1/snapshots/{domain}/{snapshotId}`\n\n#### DNS_getDNSSnapshotListV1\n\nRetrieve DNS snapshots for a domain.\n\nUse this endpoint to view available DNS backup points for restoration.\n\n- **Method**: `GET`\n- **Path**: `/api/dns/v1/snapshots/{domain}`\n\n#### DNS_restoreDNSSnapshotV1\n\nRestore DNS zone to the selected snapshot.\n\nUse this endpoint to revert domain DNS to a previous configuration.\n\n- **Method**: `POST`\n- **Path**: `/api/dns/v1/snapshots/{domain}/{snapshotId}/restore`\n\n#### DNS_getDNSRecordsV1\n\nRetrieve DNS zone records for a specific domain.\n\nUse this endpoint to view current DNS configuration for domain management.\n\n- **Method**: `GET`\n- **Path**: `/api/dns/v1/zones/{domain}`\n\n#### DNS_updateDNSRecordsV1\n\nUpdate DNS records for the selected domain.\n\nUsing `overwrite = true` will replace existing records with the provided ones. \nOtherwise existing records will be updated and new records will be added.\n\nUse this endpoint to modify domain DNS configuration.\n\n- **Method**: `PUT`\n- **Path**: `/api/dns/v1/zones/{domain}`\n\n#### DNS_deleteDNSRecordsV1\n\nDelete DNS records for the selected domain.\n\nTo filter which records to delete, add the `name` of the record and `type` to the filter. \nMultiple filters can be provided with single request.\n\nIf you have multiple records with the same name and type, and you want to delete only part of them,\nrefer to the `Update zone records` endpoint.\n\nUse this endpoint to remove specific DNS records from domains.\n\n- **Method**: `DELETE`\n- **Path**: `/api/dns/v1/zones/{domain}`\n\n#### DNS_resetDNSRecordsV1\n\nReset DNS zone to the default records.\n\nUse this endpoint to restore domain DNS to original configuration.\n\n- **Method**: `POST`\n- **Path**: `/api/dns/v1/zones/{domain}/reset`\n\n#### DNS_validateDNSRecordsV1\n\nValidate DNS records prior to update for the selected domain.\n\nIf the validation is successful, the response will contain `200 Success` code.\nIf there is validation error, the response will fail with `422 Validation error` code.\n\nUse this endpoint to verify DNS record validity before applying changes.\n\n- **Method**: `POST`\n- **Path**: `/api/dns/v1/zones/{domain}/validate`\n\n### `hostinger-domains-mcp`\n\n#### v2_getDomainVerificationsDIRECT\n\nRetrieve a list of pending and completed domain verifications.\n\n- **Method**: `GET`\n- **Path**: `/api/v2/direct/verifications/active`\n\n#### domains_suggestDomainNamesFromADescriptionV1\n\nSuggest available domain names based on a free-text description of your project.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to find a domain name when you only know what the website is about.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/availability/alternatives-from-description`\n\n#### domains_suggestDomainNamesFromADomainV1\n\nSuggest available domain names based on a domain name you already have in mind.\n\nSuggestions are generated by an AI model, so they differ between calls.\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint when the domain you wanted is taken and you need close alternatives.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/availability/alternatives-from-domain`\n\n#### domains_checkDomainAvailabilityV1\n\nCheck availability of domain names across multiple TLDs.\n\nMultiple TLDs can be checked at once.\nIf you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.\nTLDs should be provided without leading dot (e.g. `com`, `net`, `org`).\n\nEndpoint has rate limit of 90 requests per minute.\n\nUse this endpoint to verify domain availability before purchase.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/availability`\n\n#### domains_getDomainForwardingV1\n\nRetrieve domain forwarding data.\n\nUse this endpoint to view current redirect configuration for domains.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/forwarding/{domain}`\n\n#### domains_updateDomainForwardingV1\n\nUpdate domain forwarding configuration.\n\nUse this endpoint to modify existing redirect configuration for domains.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/forwarding/{domain}`\n\n#### domains_deleteDomainForwardingV1\n\nDelete domain forwarding data.\n\nUse this endpoint to remove redirect configuration from domains.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/forwarding/{domain}`\n\n#### domains_createDomainForwardingV1\n\nCreate domain forwarding configuration.\n\nUse this endpoint to set up domain redirects to other URLs.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/forwarding`\n\n#### domains_getPendingIRTPVerificationV1\n\nRetrieve a pending IRTP verification for a domain.\n\nBoth the old and new registrant must confirm it before the WHOIS change takes effect.\n\nUse this endpoint to check the status of a WHOIS change awaiting registrant confirmation.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/irtp/{domain}`\n\n#### domains_cancelPendingIRTPVerificationV1\n\nCancel a pending IRTP verification.\n\nUse this endpoint to back out of a WHOIS change that is stuck waiting on registrant confirmation,\nfor example when the confirmation email cannot be received, without waiting out the 5-day expiry.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/irtp/{domain}`\n\n#### domains_getIncomingDomainMoveV1\n\nRetrieve the incoming move for a specified domain.\n\nReturns 404 when no account is moving this domain to you.\n\nUse this endpoint to check whether a domain addressed to you is still waiting to be accepted.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/move/incoming/{domain}`\n\n#### domains_acceptIncomingDomainMoveV1\n\nAccept an incoming move for a specified domain.\n\nThe provided WHOIS profiles become the contacts of the domain, so they must belong\nto your account and satisfy the requirements of the TLD. Only the contact types the\ndomain actually uses are applied, but all four profile IDs have to be provided.\n\nThe move has to still be waiting for your decision, already accepted moves\ncannot be accepted again.\n\nAccepting does not complete the move. A confirmation email is sent to the email address of\nthe new owner contact, and the domain changes hands only after the change is confirmed from it.\nUntil then the move stays in the `activating` status, which can be followed with the\n[incoming move endpoint](#tag/domains-move).\n\nUse this endpoint to take ownership of a domain offered to you.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/move/incoming/{domain}`\n\n#### domains_rejectIncomingDomainMoveV1\n\nReject an incoming move for a specified domain.\n\nThe domain stays in the account which initiated the move.\nMoves you have already accepted cannot be rejected anymore.\n\nUse this endpoint to decline a domain you do not want to take over.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/move/incoming/{domain}`\n\n#### domains_getIncomingDomainMoveListV1\n\nRetrieve all domains other Hostinger accounts are moving to your account.\n\nMoves of every status are returned, including the ones which already completed.\n\nUse this endpoint to find domains waiting for you to accept them.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/move/incoming`\n\n#### domains_getOutgoingDomainMoveV1\n\nRetrieve the outgoing move for a specified domain.\n\nReturns 404 when the domain has no move in progress.\n\nUse this endpoint to track the status of a move you have initiated for a single domain.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/move/outgoing/{domain}`\n\n#### domains_startOutgoingDomainMoveV1\n\nInitiate a move of a specified domain to another Hostinger account.\n\nThe receiving account has to already exist and accept the move before the domain changes hands.\n\nThe domain must be active. The subscription it belongs to is resolved automatically,\nand the request is rejected with a 404 status code when the domain has no domain\nsubscription of its own.\n\nDomains protected by premium protection require an additional verification step,\nsuch requests are rejected with a 428 status code.\n\nUse this endpoint to hand a domain over to another Hostinger user.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/move/outgoing/{domain}`\n\n#### domains_cancelOutgoingDomainMoveV1\n\nCancel an outgoing move for a specified domain.\n\nThe move can only be cancelled while the receiving account has not accepted it yet.\nThe domain stays in your account.\n\nUse this endpoint to withdraw a move you no longer want to complete.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/move/outgoing/{domain}`\n\n#### domains_getOutgoingDomainMoveListV1\n\nRetrieve all domains you are moving to other Hostinger accounts.\n\nOnly moves which have not completed yet are returned.\n\nUse this endpoint to track moves you have initiated and the accounts they are addressed to.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/move/outgoing`\n\n#### domains_getDomainAuthorizationCodeV1\n\nRetrieve the authorization (EPP) code for a specified domain so it can be transferred\naway from Hostinger to another registrar.\n\nRequesting a new code invalidates any code retrieved previously.\n\nUse this endpoint to obtain the code required to transfer a domain to another registrar.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/portfolio/{domain}/auth-code`\n\n#### domains_claimFreeDomainV1\n\nClaim a free domain available on your account and register it.\n\nUnlike purchasing a domain, this consumes a free domain you already have,\nso no payment method is required.\n\nA successful response means the domain is registered. If registration fails, login to\n[hPanel](https://hpanel.hostinger.com/) and check domain registration status.\n\nIf no WHOIS information is provided, default contact information for that TLD will be used.\nBefore making request, ensure WHOIS information for desired TLD exists in your account.\n\nSome TLDs require `additional_details` to be provided and these will be validated before claiming.\n\nRequests which cannot be fulfilled are rejected with an error code in the response body,\nfor example `2037` when no free domain is available.\n\nUse this endpoint to register a domain using a free domain from your account.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/portfolio/claim`\n\n#### domains_enableDomainLockV1\n\nEnable domain lock for the domain.\n\nWhen domain lock is enabled,\nthe domain cannot be transferred to another registrar without first disabling the lock.\n\nUse this endpoint to secure domains against unauthorized transfers.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/portfolio/{domain}/domain-lock`\n\n#### domains_disableDomainLockV1\n\nDisable domain lock for the domain.\n\nDomain lock needs to be disabled before transferring the domain to another registrar.\n\nUse this endpoint to prepare domains for transfer to other registrars.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/portfolio/{domain}/domain-lock`\n\n#### domains_getDomainDetailsV1\n\nRetrieve detailed information for specified domain.\n\nUse this endpoint to view comprehensive domain configuration and status.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/portfolio/{domain}`\n\n#### domains_getDomainListV1\n\nRetrieve all domains associated with your account.\n\nUse this endpoint to view user's domain portfolio.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/portfolio`\n\n#### domains_purchaseNewDomainV1\n\nPurchase and register a new domain name.\n\nIf registration fails, login to [hPanel](https://hpanel.hostinger.com/) and check domain registration status.\n\nIf no payment method is provided, your default payment method will be used automatically.\n\nIf no WHOIS information is provided, default contact information for that TLD will be used.\nBefore making request, ensure WHOIS information for desired TLD exists in your account.\n\nSome TLDs require `additional_details` to be provided and these will be validated before completing purchase.\n\nUse this endpoint to register new domains for users.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/portfolio`\n\n#### domains_enablePrivacyProtectionV1\n\nEnable privacy protection for the domain.\n\nWhen privacy protection is enabled, domain owner's personal information is hidden from public WHOIS database.\n\nUse this endpoint to protect domain owner's personal information from public view.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/portfolio/{domain}/privacy-protection`\n\n#### domains_disablePrivacyProtectionV1\n\nDisable privacy protection for the domain.\n\nWhen privacy protection is disabled, domain owner's personal information is visible in public WHOIS database.\n\nUse this endpoint to make domain owner's information publicly visible.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/portfolio/{domain}/privacy-protection`\n\n#### domains_getDomainRenewalInformationV1\n\nRetrieve renewal information for a specified domain, including its status and current\nexpiration date.\n\nUse this endpoint to build renewal automation and expiry monitoring for a single domain.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/portfolio/{domain}/renewal`\n\n#### domains_updateDomainNameserversV1\n\nSet nameservers for a specified domain.\n\nBe aware, that improper nameserver configuration can lead to the domain being unresolvable or unavailable.\n\nUse this endpoint to configure custom DNS hosting for domains.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/portfolio/{domain}/nameservers`\n\n#### domains_claimFreeDomainTransferV1\n\nClaim a free domain transfer available on your account and start the transfer.\n\nUnlike purchasing a transfer, this consumes a free domain transfer you already have,\nso no payment method is required.\n\nBefore making request, unlock the domain at the current registrar and get its authorization\ncode. The transfer is validated first, so domains which cannot be transferred are rejected\nbefore the free domain transfer is consumed.\n\nA successful response means the transfer has been started. Completion depends on the current\nregistrar and can be followed with the [transfer list endpoint](#tag/domains-transfer).\n\nIf no WHOIS information is provided, default contact information for that TLD will be used.\nBefore making request, ensure WHOIS information for desired TLD exists in your account.\n\nRequests which cannot be fulfilled are rejected with an error code in the response body.\n\nUse this endpoint to transfer a domain using a free domain transfer from your account.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/transfers/claim`\n\n#### domains_getTransferV1\n\nRetrieve the transfer for a specified domain.\n\nUse this endpoint to track an incoming or outgoing registrar transfer and its status.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/transfers/{domain}`\n\n#### domains_getTransferListV1\n\nRetrieve all domain transfers in your portfolio.\n\nUse this endpoint to monitor incoming and outgoing registrar transfers across your domains.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/transfers`\n\n#### domains_changeWHOISProfileForDomainV1\n\nChange WHOIS contact profile for a domain.\n\nRepoints the given contact roles to a new WHOIS profile and submits the change to the registry.\nThe profile currently assigned to those roles is resolved automatically;\nthe request fails if the given roles are not all on the same profile today.\n\nChanging transfer sensitive fields on the owner contact starts an IRTP verification.\n\nThe change is processed asynchronously.\n\nUse this endpoint to move a registered domain onto different contact information.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/whois/change`\n\n#### domains_setWHOISProfileAsDefaultV1\n\nSet WHOIS contact profile as default.\n\nThe default profile is pre-selected for the TLD it belongs to when registering new domains.\n\nUse this endpoint to avoid picking contact information for every registration.\n\n- **Method**: `PUT`\n- **Path**: `/api/domains/v1/whois/default/{whoisId}`\n\n#### domains_unsetDefaultWHOISProfileV1\n\nUnset WHOIS contact profile as default.\n\nThe profile itself is kept, it is only no longer pre-selected for its TLD.\n\nUse this endpoint to stop reusing contact information for new registrations.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/whois/default/{whoisId}`\n\n#### domains_getWHOISProfileV1\n\nRetrieve a WHOIS contact profile.\n\nUse this endpoint to view domain registration contact information.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/whois/{whoisId}`\n\n#### domains_deleteWHOISProfileV1\n\nDelete WHOIS contact profile.\n\nUse this endpoint to remove unused contact profiles from account.\n\n- **Method**: `DELETE`\n- **Path**: `/api/domains/v1/whois/{whoisId}`\n\n#### domains_getWHOISProfileListV1\n\nRetrieve WHOIS contact profiles.\n\nUse this endpoint to view available contact profiles for domain registration.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/whois`\n\n#### domains_createWHOISProfileV1\n\nCreate WHOIS contact profile.\n\nUse this endpoint to add new contact information for domain registration.\n\n- **Method**: `POST`\n- **Path**: `/api/domains/v1/whois`\n\n#### domains_getWHOISProfileUsageV1\n\nRetrieve domain list where provided WHOIS contact profile is used.\n\nUse this endpoint to view which domains use specific contact profiles.\n\n- **Method**: `GET`\n- **Path**: `/api/domains/v1/whois/{whoisId}/usage`\n\n### `hostinger-ecommerce-mcp`\n\n#### ecommerce_listDiscountsV1\n\nList a store's discounts. Filter by free text over code and name, or by disabled state.\nAmounts for fixed discounts are integers in the smallest currency unit; percentage\ndiscounts carry a whole-number value between 1 and 100.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/discounts`\n\n#### ecommerce_createADiscountV1\n\nCreate a discount for a store. Fixed discounts take an amount in the smallest currency\nunit (e.g. $10 is 1000); percentage discounts take a whole-number value between 1 and 100.\nFree-shipping discounts ignore value. Returns the created discount.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/discounts`\n\n#### ecommerce_getCustomStorefrontSetupInstructionsV1\n\nRetrieve step-by-step setup instructions, formatted as Markdown, for connecting a custom sales\nchannel to your store and keeping your catalog, orders, shipping and payments in sync through\nthe Ecommerce API.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/miscellaneous/custom-storefront-instructions`\n\n#### ecommerce_cancelAnOrderV1\n\nCancel the order and optionally email the customer. Returns the updated order summary.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}/cancel`\n\n#### ecommerce_fulfilAnOrderV1\n\nCreate a fulfilment for the order and attach tracking in one call. Omit items to fulfil\nevery remaining unfulfilled item. Returns the updated order summary.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}/fulfill`\n\n#### ecommerce_listStoreOrdersV1\n\nList a store's orders newest first as summaries. Filter by status, payment or fulfilment\nstatus, customer email, order number or a free-text query. Amounts are in the smallest\ncurrency unit. Retrieve a single order for its line items, addresses and fulfilments.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/orders`\n\n#### ecommerce_retrieveAnOrderV1\n\nRetrieve one order in full: line items (each with the id the fulfil endpoint needs),\naddresses, the totals breakdown and fulfilments with tracking. Amounts are in the\nsmallest currency unit.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}`\n\n#### ecommerce_enableManualPaymentMethodV1\n\nEnable a manual payment method so the store can accept orders without an online payment provider.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-methods/manual`\n\n#### ecommerce_createAPaymentProviderConnectLinkV1\n\nCreate an onboarding link for connecting a payment gateway to the store. Returns the gateway\nonboarding URL for the merchant to open and a deep-link into the store admin.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-providers/{provider_id}/connect-link`\n\n#### ecommerce_listStorePaymentProvidersV1\n\nList a store's payment providers, split into providers already connected to the store and\ngateways available to install. Never exposes gateway credentials, secrets, or configuration.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-providers`\n\n#### ecommerce_createAProductImageUploadURLV1\n\nReturns a signed URL to upload a product image to (multipart/form-data POST). Then call the\nattach-image endpoint with the returned object_name to scan and attach it to the product.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images/upload-url`\n\n#### ecommerce_deleteAProductV1\n\nDelete a product and its variants from the store. A subscription product with active\nsubscribers is archived instead of deleted so its data stays available.\n\n- **Method**: `DELETE`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}`\n\n#### ecommerce_updateAProductV1\n\nUpdate a product's name, description or status. Set status to published to make it buyable,\ndraft to hide it, or archived to retire it. Variants, prices and inventory are managed\nthrough the variant endpoints, not here. Returns the updated product summary.\n\n- **Method**: `PATCH`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}`\n\n#### ecommerce_createDigitalProductV1\n\nCreate a published digital product with a single variant and an optional external download link.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/digital`\n\n#### ecommerce_listProductsV1\n\nList a store's products newest first as lean summaries (name, status, thumbnail, variant\ncount and price range). Prices are integers in the smallest currency unit and live on\nvariants. Filter by status, free text or a set of product ids. Use include=variants to\nembed each product's variants with prices and inventory, and include=media to embed its media.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products`\n\n#### ecommerce_createPhysicalProductV1\n\nCreate a published physical product with a single variant priced in the store currency.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/physical`\n\n#### ecommerce_uploadAndAttachAProductImageV1\n\nFetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images`\n\n#### ecommerce_listSalesChannelsV1\n\nList a store's active sales channels with their full metadata.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels`\n\n#### ecommerce_createASalesChannelV1\n\nCreate a sales channel for a store. A \"custom\" channel is headless: build your own frontend and keep\nyour catalog, orders, shipping and payments in sync through the Ecommerce API. A \"quick-link\" channel\nis a hosted one-page store whose handle is auto-generated.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels`\n\n#### ecommerce_updateSalesChannelV1\n\nUpdate a custom sales channel. The merchant-facing `name` and the public `url`\n(returned as the channel `domain`) can be changed. Pass `null` to clear a value.\n\n- **Method**: `PATCH`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels/{sales_channel_id}`\n\n#### ecommerce_setStoreShippingV1\n\nSet the flat-rate shipping price for a store, creating the shipping zone if it does not exist yet.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/shipping`\n\n#### ecommerce_deleteStoreV1\n\nSoft-delete a store owned by your account.\n\nThe underlying store data is preserved; only the store is marked as deleted.\n\n- **Method**: `DELETE`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}`\n\n#### ecommerce_getStoresV1\n\nRetrieve the stores associated with your account.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores`\n\n#### ecommerce_createStoreV1\n\nCreate a new store for your account.\n\nA primary sales channel is created alongside the store.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores`\n\n#### ecommerce_getStoreMetadataV1\n\nGet a store's readiness metadata: whether payment methods and shipping are configured,\nplus its default currency. Useful to verify prerequisites before building a storefront.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/metadata`\n\n#### ecommerce_updateProductVariantsInBatchV1\n\nUpdate up to 100 existing variants in place by id — title, inventory, stock tracking and\nprices. Variants omitted from the request are left untouched. Prices replace the variant's\nexisting prices in full. Returns the updated variants.\n\n- **Method**: `PATCH`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch`\n\n#### ecommerce_deleteAProductVariantV1\n\nDelete a single variant from the product.\n\n- **Method**: `DELETE`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/{variant_id}`\n\n#### ecommerce_listProductVariantsV1\n\nList a product's variants, ordered by rank, with their options, prices and inventory.\nPrices are integers in the smallest currency unit and live on variants.\n\n- **Method**: `GET`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants`\n\n#### ecommerce_createAProductVariantV1\n\nAdd a variant to a product along one or more option dimensions (e.g. Size, Color). Options\nmissing from the product are created automatically; provide a value for every option the\nproduct already has. Prices are integers in the smallest currency unit and default to the\nstore currency. Returns the created variant.\n\n- **Method**: `POST`\n- **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants`\n\n### `hostinger-horizons-mcp`\n\n#### horizons_createWebsiteV1\n\nCreate new Hostinger Horizons website from the given message.\\n\nUse this tool when user asks you to create a website, landing page, blog\nor any other type of application.\\n\nThis tool initiates the website creation process and returns a website URL and ID.\nThe generation happens asynchronously.\\n\nAfter invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing\nthat Hostinger Horizons is now creating their website and it will be ready in a few minutes\nand you should provide the website URL to the user immediately\nDo not write code.\\n\\nTo edit afterwards, users must go to Hostinger Horizons interface\nin the provided website URL.\nIf the tool call fails with an error, you should provide a clear explanation of the error\nand do not generate code yourself in the chat.\n\\n\nTECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\\n\nThe environment is limited to the following technologies.\nYou MUST NOT use, suggest, or implement any technology outside this list:\\n\n\\n\n- Language: JavaScript ONLY.\n- Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\\n\n- Framework: React.\\n\n- Navigation: React Router.\\n\n- Styling: TailwindCSS.\\n\n- Components: shadcn/ui (built with @radix-ui primitives).\\n\n- Icons: Lucide React.\\n\n- Animations: Framer Motion.\\n\n\\n\nBACKEND & DATA STORAGE:\\n\n- Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,\nauthentication, and database needs.\\n\n- Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\\n\n- Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\\n\n\\n\nMAPS:\\n\n- OpenStreetMap is the default provider.\\n\n- Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\\n\n\n- **Method**: `POST`\n- **Path**: `/api/horizons/v1/websites`\n\n#### horizons_getWebsiteV1\n\nGet a link for the user to edit their website in Hostinger Horizons interface.\\n\nUse this tool when user wants to modify, edit or add new features to an existing website.\\n\nWebsites can only be edited in Hostinger Horizons interface in the provided website URL.\n\n- **Method**: `GET`\n- **Path**: `/api/horizons/v1/websites/{websiteId}`\n\n### `hostinger-hosting-mcp`\n\n#### hosting_importWordpressWebsite\n\nImport a WordPress website from an archive file to a hosting server. This tool uploads a website archive (zip, tar, tar.gz, etc.) and a database dump (.sql file) to deploy a complete WordPress website. The archive will be extracted on the server automatically. Note: This process may take a while for larger sites. After upload completion, files are being extracted and the site will be available in a few minutes. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_deployWordpressPlugin\n\nDeploy a WordPress plugin from a directory to a hosting server. This tool uploads all plugin files and triggers plugin deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_deployWordpressTheme\n\nDeploy a WordPress theme from a directory to a hosting server. This tool uploads all theme files and triggers theme deployment. The uploaded theme can optionally be activated after deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_deployJsApplication\n\nDeploy a JavaScript application from an archive file to a hosting server. IMPORTANT: the archive must ONLY contain application source files, not the build output, skip node_modules directory; also exclude all files matched by .gitignore if the ignore file exists. The build process will be triggered automatically on the server after the archive is uploaded. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. After deployment, use the hosting_listJsDeployments tool to check deployment status and track build progress.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_deployStaticWebsite\n\nDeploy a static website from an archive file to a hosting server. IMPORTANT: This tool only works for static websites with no build process. The archive must contain pre-built static files (HTML, CSS, JavaScript, images, etc.) ready to be served. If the website has a package.json file or requires a build command, use hosting_deployJsApplication instead. The tool uploads the archive to the website's file browser over TUS and triggers deployment; the archive is extracted and deployed directly without any build steps. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_listJsDeployments\n\nList javascript application deployments for checking their status. Use this tool when customer asks for the status of the deployment. This tool retrieves a paginated list of Node.js application deployments for a domain with optional filtering by deployment states.\n\n- **Method**: `custom`\n- **Path**: `custom`\n\n#### hosting_showJsDeploymentLogs\n\nRetrieve logs for a specified JavaScript application deployment for debugging purposes in case of failure.\n\n- **Method*",
  "bytes": 60000,
  "sha": "a8d18dffa607fd2c85f61fea9ba1577bf2bc383aa869bb3742021fc556d7b9ef",
  "repo_slug": "hostinger/api-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_hostinger_api_mcp_server_bb3b6cb1/readme"
}