Hostinger API logo

Hostinger API

Organization
hostinger

Model Context Protocol (MCP) server for Hostinger API.

Publisherhostinger
Repositoryapi-mcp-server
LanguageTypeScript
Forks
57
Stars
155
Available tools
0
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    Hostinger API exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 0 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    155 stars and 57 forks from the linked repository.

hostinger-api-mcp

Model Context Protocol (MCP) server for Hostinger API.

Quick start: Hosted remote server

If you don't want to install or run anything locally, connect directly to Hostinger's hosted MCP server:

https://mcp.hostinger.com

Claude Code

bash
claude mcp add --transport http hostinger https://mcp.hostinger.com

This opens a browser window to authorize via OAuth. Once approved, all tools below are available in your session.

Other MCP-compatible clients

Add 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.

Prerequisites

  • Node.js version 24 or higher

If you don't have Node.js installed, you can download it from the official website. Alternatively, you can use a package manager like Homebrew (for macOS) or Chocolatey (for Windows) to install Node.js.

We recommend using NVM (Node Version Manager) to install and manage installed Node.js versions. After installing NVM, you can install Node.js with the following command:

bash
nvm install v24
nvm use v24

Installation

To install the MCP server, run one of the following command, depending on your package manager:

bash
# Install globally from npm
npm install -g @hostinger/mcp

# Or with yarn
yarn global add @hostinger/mcp

# Or with pnpm
pnpm add -g @hostinger/mcp

Update

To update the MCP server to the latest version, use one of the following commands, depending on your package manager:

bash
# Update globally from npm
npm update -g @hostinger/mcp

# Or with yarn
yarn global upgrade @hostinger/mcp

# Or with pnpm
pnpm update -g @hostinger/mcp

Binaries

This package installs the following MCP server commands:

  • hostinger-api-mcp — unified server with every tool (401 total)
  • hostinger-agency-hosting-mcp — 42 tools for agency-hosting
  • hostinger-billing-mcp — 9 tools for billing
  • hostinger-dns-mcp — 8 tools for dns
  • hostinger-domains-mcp — 41 tools for domains
  • hostinger-ecommerce-mcp — 29 tools for ecommerce
  • hostinger-horizons-mcp — 6 tools for horizons
  • hostinger-hosting-mcp — 74 tools for hosting
  • hostinger-mail-mcp — 38 tools for mail
  • hostinger-reach-mcp — 52 tools for reach
  • hostinger-vps-mcp — 64 tools for vps
  • hostinger-wordpress-mcp — 38 tools for wordpress

Pick the binary that matches your agent's scope. hostinger-api-mcp remains the backwards-compatible default.

Configuration

The following environment variables can be configured when running the server:

  • DEBUG: Enable debug logging (true/false) (default: false)
  • HOSTINGER_API_TOKEN: Your API token, which will be sent in the Authorization header. When set, OAuth is bypassed entirely.
  • API_TOKEN: Deprecated alias for HOSTINGER_API_TOKEN. Will be removed in a future version — prefer HOSTINGER_API_TOKEN.
  • OAUTH_ISSUER: OAuth server base URL (default: https://auth.hostinger.com). Only used when HOSTINGER_API_TOKEN is not set.

Authentication

The server supports two authentication methods:

API Token (recommended for CI/scripts)

Set HOSTINGER_API_TOKEN in the environment or .env file. When present it always takes precedence — no OAuth code runs.

OAuth 2.0 with PKCE (interactive sign-in)

When 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:

  1. A dynamic OAuth client is registered with the issuer (RFC 7591) — once per machine.
  2. A browser window opens to the authorization page.
  3. After sign-in, the server captures the redirect on a local ephemeral port, exchanges the code for tokens, and stores them.
  4. Subsequent calls reuse the stored access token; expired tokens are refreshed automatically. If a refresh token is revoked, the browser flow is re-launched.

Credentials are stored at:

  • macOS / Linux: ~/.config/hostinger-mcp/credentials.json (mode 0600)
  • Windows: %APPDATA%\hostinger-mcp\credentials.json

Credentials are shared across all Hostinger MCP binaries (hostinger-api-mcp, hostinger-vps-mcp, etc.).

Manual commands:

bash
# Run the OAuth sign-in flow immediately (don't wait for the first tool call)
hostinger-api-mcp --login

# Revoke stored credentials
hostinger-api-mcp --logout

HTTP transport note: OAuth sign-in is not supported in --http mode. Set HOSTINGER_API_TOKEN before using --http.

Usage

JSON configuration for Claude, Cursor, etc.

json
{
    "mcpServers": {
        "hostinger-api": {
            "command": "hostinger-api-mcp",
            "env": {
                "DEBUG": "false",
                "HOSTINGER_API_TOKEN": "YOUR API TOKEN"
            }
        }
    }
}

Transport Options

The MCP server supports two transport modes:

Standard I/O Transport

The server can use standard input / output (stdio) transport (default). This provides local streaming:

Streamable HTTP Transport

The server can use HTTP streaming transport. This provides bidirectional streaming over HTTP:

bash
# Default HTTP transport on localhost:8100
hostinger-api-mcp --http

# Specify custom host and port
hostinger-api-mcp --http --host 0.0.0.0 --port 8150

Command Line Options

Options:
  --http           Use HTTP streaming transport (requires HOSTINGER_API_TOKEN env var)
  --stdio          Use Server-Sent Events transport (default)
  --host {host}    Hostname or IP address to listen on (default: 127.0.0.1)
  --port {port}    Port to bind to (default: 8100)
  --login          Run OAuth sign-in flow and exit
  --logout         Revoke stored OAuth credentials and exit
  --help           Show help message

Using as an MCP Tool Provider

This server implements the Model Context Protocol (MCP) and can be used with any MCP-compatible consumer.

Example of connecting to this server using HTTP streaming transport:

javascript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

// Create HTTP transport
const transport = new StreamableHTTPClientTransport({
  url: "http://localhost:8100/",
  headers: {
    "Authorization": `Bearer ${process.env.HOSTINGER_API_TOKEN}`
  }
});

// Connect to the MCP server
const client = new Client({
  name: "my-client",
  version: "1.0.0"
}, {
  capabilities: {}
});

await client.connect(transport);

// List available tools
const { tools } = await client.listTools();
console.log("Available tools:", tools);

// Call a tool
const result = await client.callTool({
  name: "billing_getCatalogItemListV1",
  arguments: { category: "DOMAIN" }
});
console.log("Tool result:", result);

Available Tools

This MCP server provides the following tools:

hostinger-agency-hosting-mcp

agency-hosting_deployNodeStaticWebsite

Deploy 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.

  • Method: custom
  • Path: custom

agency-hosting_deployPhpApplication

Deploy 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.

  • Method: custom
  • Path: custom

agency-hosting_listAvailableDatacentersV1

Lists the datacenters available for provisioning a new website on the given Agency Plan hosting order.

Each datacenter includes a pinger_url you can ping from the client to measure round-trip latency; comparing the results across datacenters lets you pick the nearest one (lowest ping) before choosing its code as the datacenter_code when creating a website setup.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders/{order_id}/datacenters

agency-hosting_changeWebsiteDomainV1

Changes the primary domain for an Agency Plan website.

Provide the current domain in the path and the new domain in the request body. Set domain to null to revert to the temporary domain.

  • Method: PUT
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{from_domain}

agency-hosting_linkDomainToWebsiteV1

Links a domain to the specified Agency Plan website so it can serve traffic for that domain.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains

agency-hosting_listDomainsV1

Returns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client.

Use the website_uuids filter to narrow results to specific websites.

  • Method: GET
  • Path: /api/agency-hosting/v1/domains

agency-hosting_unlinkDomainFromWebsiteV1

Unlinks a domain from the specified Agency Plan website.

The website stops serving traffic on this domain immediately.

Website files and database are preserved, and any other linked domains remain accessible.

If this is the only domain on the website, unlinking leaves the website without an accessible domain.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{domain}

agency-hosting_generateUploadURLV1

Generate a file browser upload URL with authentication credentials for uploading files to an Agency Plan website's file storage.

Returns url, auth_key and rest_auth_key. Use these to upload a file to the website's file storage via the TUS resumable upload protocol (TUS 1.0.0). Send X-Auth: {auth_key} and X-Auth-Rest: {rest_auth_key} headers on every request below.

  1. Create the upload: POST to {url}/{relative_file_path}?override=true with headers upload-length: {file size in bytes} and upload-offset: 0. Expect 201 Created.
  2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or PATCH requests with an upload-offset header tracking progress) until complete.

relative_file_path is the destination path inside the website's file storage, e.g. app.zip.

Instead of a TUS client, plain curl also works:

FILE=app.zip
SIZE=$(stat -f%z "$FILE")   # stat -c%s on Linux

curl -i -X POST "{url}/${FILE}?override=true" \
  -H "X-Auth: {auth_key}" \
  -H "X-Auth-Rest: {rest_auth_key}" \
  -H "Tus-Resumable: 1.0.0" \
  -H "Upload-Length: ${SIZE}" \
  -H "Upload-Offset: 0"
# -> 201 Created

curl -i -X PATCH "{url}/${FILE}?override=true" \
  -H "X-Auth: {auth_key}" \
  -H "X-Auth-Rest: {rest_auth_key}" \
  -H "Tus-Resumable: 1.0.0" \
  -H "Content-Type: application/offset+octet-stream" \
  -H "Upload-Offset: 0" \
  --data-binary "@${FILE}"
# -> 204 No Content, Upload-Offset response header equals SIZE when done
  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/files/upload-urls

agency-hosting_importWebsiteFromArchiveV1

Imports an Agency Plan website from an already-uploaded archive.

Upload the archive to the website's root directory via file browser first, then provide its filename in this request. Website contents are overwritten by the archive contents. Supported archive types: .zip, .tar, .tar.gz, .tgz.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/files/import-archive

agency-hosting_listAgencyPlanOrderDiskUsageMetricsV1

Returns aggregated disk and inode usage for the Agency Plan order over the selected time frame, plus the plan quotas. Figures cover the whole order account. Values may be up to one hour stale. CPU, memory, and process usage are on the resource-usage-metrics endpoint.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders/{order_id}/disk-usage-metrics

agency-hosting_listOrdersV1

Returns a paginated list of Agency Plan orders accessible to the authenticated client.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders

agency-hosting_listOrderResourceUsageMetricsV1

Returns aggregated CPU, memory, and process usage for the Agency Plan order over the selected time frame, plus the plan quotas and a per-website breakdown. Each website is identified by uid. Suspended and deleted websites are excluded from both the order totals and the per-website breakdown. Values may be up to one hour stale. Disk and inode usage are on the disk-usage-metrics endpoint.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders/{order_id}/resource-usage-metrics

agency-hosting_listPHPExtensionsForAWebsiteV1

Lists every PHP extension available to an Agency Plan website and whether it is currently enabled.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions

agency-hosting_replaceWebsitePHPExtensionsV1

Replaces 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.

  • Method: PUT
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions

agency-hosting_listPHPOptionsForAWebsiteV1

Lists 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.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/options

agency-hosting_replaceWebsitePHPOptionsV1

Replaces 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.

  • Method: PUT
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/options

agency-hosting_listAvailablePHPVersionsForAnOrderV1

Lists 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.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders/{order_id}/websites/php-settings/versions

agency-hosting_listAvailablePHPVersionsForAWebsiteV1

Lists 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.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/versions

agency-hosting_updateWebsitePHPVersionV1

Switches 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.

  • Method: PATCH
  • Path: /api/agency-hosting/v1/websites/{website_uid}/php-settings/version

agency-hosting_createANewWebsiteV1

Provisions a new website on one of your Agency Plan hosting orders.

Choose the datacenter, stack (flavor), and PHP version for the site. Optionally attach your own domain — omit it, set it to null, or leave it unavailable and a free *.hostingersite.com subdomain is generated instead — and/or install WordPress by supplying the wordpress details (admin account, site title, and language).

Common setups:

  • Plain PHP site: flavor set to php-fpm, with settings.php.version; omit wordpress and type.
  • WordPress site: flavor set to the desired WordPress version (e.g. wp-7.0), plus the wordpress block (admin account, title, language).
  • Static/Node.js frontend app: flavor set to php-fpm and type set to node-static.

Provisioning runs in the background, so the response returns immediately with a setup UUID that identifies the job. The new website becomes reachable once provisioning finishes.

  • Method: POST
  • Path: /api/agency-hosting/v1/orders/{order_id}/websites/setups

agency-hosting_getWebsiteSetupStatusV1

Returns the current status of an Agency Plan website setup started via the setups endpoint.

Poll this endpoint using the setup_uuid returned from the provisioning request until status becomes completed, at which point website_uid identifies the new website.

  • Method: GET
  • Path: /api/agency-hosting/v1/orders/{order_id}/websites/setups/{setup_uuid}

agency-hosting_reinstallWebsiteSSLV1

Replaces the Let's Encrypt certificate of the domain: the current platform certificate, when one is recorded, is revoked and removed, then a new setup starts in the background. Returns at once; Get website SSL status reports installing while it runs, then active or failed.

Returns 422 for free subdomains, when a certificate process is recorded for the domain (a failed setup counts until it is cleaned up), or when the domain hit its limit of three setups per seven days. Returns 429 when the same domain was requested less than a minute ago, and 403 when the website is suspended or locked, and 404 when the website or the domain does not exist.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/reinstall

agency-hosting_installWebsiteSSLV1

Starts a Let's Encrypt certificate setup for the domain and returns at once; the setup runs in the background. Get website SSL status reports installing while it runs, then active or failed; the ssl_setup entry of List website processes shows the same progress.

Returns 422 when the domain already has a platform certificate that is not expired, when a certificate process is recorded for the domain (a failed setup counts until it is cleaned up), or when the domain hit its limit of three setups per seven days. Returns 429 when the same domain was requested less than a minute ago, 403 when the website is suspended or locked, and 404 when the website or the domain does not exist.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/setup

agency-hosting_getWebsiteSSLStatusV1

Returns the SSL state of one domain of an Agency Plan website: the certificate status, whether the certificate was uploaded by the customer, and when it stops being valid.

installing means a certificate setup is running or retrying; the ssl_setup entry of List website processes shows the same progress. active means a valid certificate is in place: uploaded by the customer, issued by the platform, or a lifetime certificate bought for the domain. failed means the last setup gave up and no valid certificate is in place. expired means the certificate has run out. not_installed means the domain has no certificate and no setup process. Returns 404 when the website or the domain does not exist.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl/status

agency-hosting_uninstallWebsiteSSLV1

Removes the platform-issued Let's Encrypt certificate of the domain: the certificate is revoked and deleted before the response, so the domain is no longer served with a platform certificate until a new setup completes. Also succeeds when the domain has no platform certificate to remove. Uploaded (custom) certificates are not affected.

Returns 422 when a certificate process is recorded for the domain (a failed setup counts until it is cleaned up), 429 when the same domain was requested less than a minute ago, and 403 when the website is suspended or locked, and 404 when the website or the domain does not exist.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/domains/{domain}/ssl

agency-hosting_buildWebsiteNodeJSAssetsV1

Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.

Upload the archive to file browser first, then provide its relative path from document root in this request. Website contents are overwritten by the build result, which is deployed to public_html.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/build-assets

agency-hosting_clearWebsiteCacheV1

Clears cache for all domains associated with an Agency Plan website, including its preview domain.

This operation clears all cache types for the website.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/cache

agency-hosting_listWebsiteCronJobsV1

Returns a paginated list of cron jobs configured for an Agency Plan website.

Each entry includes the schedule expression and the command executed on that schedule.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/cron-jobs

agency-hosting_createWebsiteCronJobV1

Creates a cron job for an Agency Plan website from a schedule expression and a command.

Returns the created cron job, including its uuid, which is required to delete the cron job.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/cron-jobs

agency-hosting_deleteWebsiteCronJobV1

Permanently deletes the cron job identified by its uuid from an Agency Plan website.

The operation is idempotent: deleting a cron job that does not exist succeeds without error.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/cron-jobs/{uuid}

agency-hosting_listWebsiteDatabasesV1

Returns a paginated list of MySQL databases created for an Agency Plan website.

Each entry includes the database's non-system users.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/databases

agency-hosting_createWebsiteDatabaseV1

Creates a MySQL database with a dedicated user for an Agency Plan website.

The database name, username, and password must all be provided by the caller.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/databases

agency-hosting_deleteWebsiteDatabaseV1

Permanently deletes a MySQL database and all its data from an Agency Plan website, including its users.

The operation is idempotent: deleting a database that does not exist succeeds without error.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}

agency-hosting_createWebsiteDatabaseUserV1

Creates a user for an existing database on an Agency Plan website.

Each database supports a single non-system user; creating a user for a database that already has one fails.

  • Method: POST
  • Path: /api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users

agency-hosting_deleteWebsiteDatabaseUserV1

Permanently deletes a database user from an Agency Plan website database, revoking all access it had.

The operation is idempotent: deleting a user that does not exist succeeds without error.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users/{database_user_name}

agency-hosting_getWebsiteDetailsV1

Retrieves detailed information about a specific Agency Plan website, including configuration, status, metadata, hosting plan details, and resource quotas.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}

agency-hosting_deleteWebsiteV1

Permanently deletes an Agency Plan website. Deletion is processed asynchronously: the website is immediately transitioned to a deleting state and the underlying server resources are removed in the background.

  • Method: DELETE
  • Path: /api/agency-hosting/v1/websites/{website_uid}

agency-hosting_listAgencyPlanWebsitesV1

Retrieve a paginated list of Agency Plan websites (H5G, Builder, and Horizons) accessible to the authenticated client.

This endpoint returns websites from your hosting accounts as well as websites from other client hosting accounts that have shared access with you.

The response shape differs per platform — see the platform field on each item.

Use website_types to list only websites of a given detected type, e.g. only WordPress websites (website_types=wordpress) or only Node.js websites (website_types=nodejs). Combine with order_ids, states, or domain for more targeted results.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites

agency-hosting_listWebsiteProcessesV1

Lists active and recently completed asynchronous processes for an Agency Plan website.

Each process has a unique ID (for tracking), a type, and a status (running, completed, failed). Poll this endpoint after initiating async operations (SSL setup, backups, cloning) to track progress.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/processes

agency-hosting_changeWordPressVersionV1

Changes the installed WordPress core version on an Agency Plan website to one of the versions available for installation.

  • Method: PATCH
  • Path: /api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/version

agency-hosting_getWordPressSettingsV1

Returns the current WordPress settings for an Agency Plan website: installed core version, LiteSpeed Cache plugin status, object cache status, and maintenance mode status.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/wordpress/settings

agency-hosting_listAvailableWordPressVersionsV1

Lists the WordPress core versions available for installation on an Agency Plan website.

  • Method: GET
  • Path: /api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/versions

hostinger-billing-mcp

billing_getCatalogItemListV1

Retrieve catalog items available for order.

Prices in catalog items is displayed as cents (without floating point), e.g: float 17.99 is displayed as integer 1799.

Use this endpoint to view available services and pricing before placing orders.

  • Method: GET
  • Path: /api/billing/v1/catalog

billing_createPurchaseOrderV1

Create a purchase order for any Hostinger product.

This unified endpoint places an order for one or more catalog items and works across all Hostinger products, leveraging the existing billing infrastructure. Use the catalog endpoint to look up the item_id values available for purchase.

If no payment method is provided, your default payment method will be used automatically.

If the response is 202 Accepted, the payment is still being processed and the order will complete asynchronously once the payment is confirmed.

This endpoint only places the order. Product-specific provisioning (e.g. VPS setup or domain registration) is not performed here — once the order completes, use the relevant product endpoints or hPanel to finalize setup.

Use this endpoint to purchase any product available in the catalog.

  • Method: POST
  • Path: /api/billing/v1/orders

billing_setDefaultPaymentMethodV1

Set the default payment method for your account.

Use this endpoint to configure the primary payment method for future orders.

  • Method: POST
  • Path: /api/billing/v1/payment-methods/{paymentMethodId}

billing_deletePaymentMethodV1

Delete a payment method from your account.

Use this endpoint to remove unused payment methods from user accounts.

  • Method: DELETE
  • Path: /api/billing/v1/payment-methods/{paymentMethodId}

billing_getPaymentMethodListV1

Retrieve available payment methods that can be used for placing new orders.

If you want to add new payment method, please use hPanel.

Use this endpoint to view available payment options before creating orders.

  • Method: GET
  • Path: /api/billing/v1/payment-methods

billing_getSubscriptionListV1

Retrieve a list of all subscriptions associated with your account.

Use this endpoint to monitor active services and billing status.

  • Method: GET
  • Path: /api/billing/v1/subscriptions

billing_disableAutoRenewalV1

Disable auto-renewal for a subscription.

Use this endpoint when disable auto-renewal for a subscription.

  • Method: DELETE
  • Path: /api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/disable

billing_enableAutoRenewalV1

Enable auto-renewal for a subscription.

Use this endpoint when enable auto-renewal for a subscription.

  • Method: PATCH
  • Path: /api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/enable

billing_renewSubscriptionV1

Create a renewal order for an existing Hostinger subscription.

This endpoint places a renewal order for a single subscription, leveraging the existing billing infrastructure. Use the subscriptions endpoint to look up the subscriptionId values available for renewal.

If no payment method is provided, your default payment method will be used automatically.

If the response is 202 Accepted, the payment is still being processed and the renewal will complete asynchronously once the payment is confirmed.

Use this endpoint to renew any subscription available in your account.

  • Method: POST
  • Path: /api/billing/v1/subscriptions/{subscriptionId}/renew

hostinger-dns-mcp

DNS_getDNSSnapshotV1

Retrieve particular DNS snapshot with contents of DNS zone records.

Use this endpoint to view historical DNS configurations for domains.

  • Method: GET
  • Path: /api/dns/v1/snapshots/{domain}/{snapshotId}

DNS_getDNSSnapshotListV1

Retrieve DNS snapshots for a domain.

Use this endpoint to view available DNS backup points for restoration.

  • Method: GET
  • Path: /api/dns/v1/snapshots/{domain}

DNS_restoreDNSSnapshotV1

Restore DNS zone to the selected snapshot.

Use this endpoint to revert domain DNS to a previous configuration.

  • Method: POST
  • Path: /api/dns/v1/snapshots/{domain}/{snapshotId}/restore

DNS_getDNSRecordsV1

Retrieve DNS zone records for a specific domain.

Use this endpoint to view current DNS configuration for domain management.

  • Method: GET
  • Path: /api/dns/v1/zones/{domain}

DNS_updateDNSRecordsV1

Update DNS records for the selected domain.

Using overwrite = true will replace existing records with the provided ones. Otherwise existing records will be updated and new records will be added.

Use this endpoint to modify domain DNS configuration.

  • Method: PUT
  • Path: /api/dns/v1/zones/{domain}

DNS_deleteDNSRecordsV1

Delete DNS records for the selected domain.

To filter which records to delete, add the name of the record and type to the filter. Multiple filters can be provided with single request.

If you have multiple records with the same name and type, and you want to delete only part of them, refer to the Update zone records endpoint.

Use this endpoint to remove specific DNS records from domains.

  • Method: DELETE
  • Path: /api/dns/v1/zones/{domain}

DNS_resetDNSRecordsV1

Reset DNS zone to the default records.

Use this endpoint to restore domain DNS to original configuration.

  • Method: POST
  • Path: /api/dns/v1/zones/{domain}/reset

DNS_validateDNSRecordsV1

Validate DNS records prior to update for the selected domain.

If the validation is successful, the response will contain 200 Success code. If there is validation error, the response will fail with 422 Validation error code.

Use this endpoint to verify DNS record validity before applying changes.

  • Method: POST
  • Path: /api/dns/v1/zones/{domain}/validate

hostinger-domains-mcp

v2_getDomainVerificationsDIRECT

Retrieve a list of pending and completed domain verifications.

  • Method: GET
  • Path: /api/v2/direct/verifications/active

domains_suggestDomainNamesFromADescriptionV1

Suggest available domain names based on a free-text description of your project.

Suggestions are generated by an AI model, so they differ between calls.

Endpoint has rate limit of 90 requests per minute.

Use this endpoint to find a domain name when you only know what the website is about.

  • Method: POST
  • Path: /api/domains/v1/availability/alternatives-from-description

domains_suggestDomainNamesFromADomainV1

Suggest available domain names based on a domain name you already have in mind.

Suggestions are generated by an AI model, so they differ between calls.

Endpoint has rate limit of 90 requests per minute.

Use this endpoint when the domain you wanted is taken and you need close alternatives.

  • Method: POST
  • Path: /api/domains/v1/availability/alternatives-from-domain

domains_checkDomainAvailabilityV1

Check availability of domain names across multiple TLDs.

Multiple TLDs can be checked at once. If you want alternative domains with response, provide only one TLD and set with_alternatives to true. TLDs should be provided without leading dot (e.g. com, net, org).

Endpoint has rate limit of 90 requests per minute.

Use this endpoint to verify domain availability before purchase.

  • Method: POST
  • Path: /api/domains/v1/availability

domains_getDomainForwardingV1

Retrieve domain forwarding data.

Use this endpoint to view current redirect configuration for domains.

  • Method: GET
  • Path: /api/domains/v1/forwarding/{domain}

domains_updateDomainForwardingV1

Update domain forwarding configuration.

Use this endpoint to modify existing redirect configuration for domains.

  • Method: PUT
  • Path: /api/domains/v1/forwarding/{domain}

domains_deleteDomainForwardingV1

Delete domain forwarding data.

Use this endpoint to remove redirect configuration from domains.

  • Method: DELETE
  • Path: /api/domains/v1/forwarding/{domain}

domains_createDomainForwardingV1

Create domain forwarding configuration.

Use this endpoint to set up domain redirects to other URLs.

  • Method: POST
  • Path: /api/domains/v1/forwarding

domains_getPendingIRTPVerificationV1

Retrieve a pending IRTP verification for a domain.

Both the old and new registrant must confirm it before the WHOIS change takes effect.

Use this endpoint to check the status of a WHOIS change awaiting registrant confirmation.

  • Method: GET
  • Path: /api/domains/v1/irtp/{domain}

domains_cancelPendingIRTPVerificationV1

Cancel a pending IRTP verification.

Use this endpoint to back out of a WHOIS change that is stuck waiting on registrant confirmation, for example when the confirmation email cannot be received, without waiting out the 5-day expiry.

  • Method: DELETE
  • Path: /api/domains/v1/irtp/{domain}

domains_getIncomingDomainMoveV1

Retrieve the incoming move for a specified domain.

Returns 404 when no account is moving this domain to you.

Use this endpoint to check whether a domain addressed to you is still waiting to be accepted.

  • Method: GET
  • Path: /api/domains/v1/move/incoming/{domain}

domains_acceptIncomingDomainMoveV1

Accept an incoming move for a specified domain.

The provided WHOIS profiles become the contacts of the domain, so they must belong to your account and satisfy the requirements of the TLD. Only the contact types the domain actually uses are applied, but all four profile IDs have to be provided.

The move has to still be waiting for your decision, already accepted moves cannot be accepted again.

Accepting does not complete the move. A confirmation email is sent to the email address of the new owner contact, and the domain changes hands only after the change is confirmed from it. Until then the move stays in the activating status, which can be followed with the incoming move endpoint.

Use this endpoint to take ownership of a domain offered to you.

  • Method: PUT
  • Path: /api/domains/v1/move/incoming/{domain}

domains_rejectIncomingDomainMoveV1

Reject an incoming move for a specified domain.

The domain stays in the account which initiated the move. Moves you have already accepted cannot be rejected anymore.

Use this endpoint to decline a domain you do not want to take over.

  • Method: DELETE
  • Path: /api/domains/v1/move/incoming/{domain}

domains_getIncomingDomainMoveListV1

Retrieve all domains other Hostinger accounts are moving to your account.

Moves of every status are returned, including the ones which already completed.

Use this endpoint to find domains waiting for you to accept them.

  • Method: GET
  • Path: /api/domains/v1/move/incoming

domains_getOutgoingDomainMoveV1

Retrieve the outgoing move for a specified domain.

Returns 404 when the domain has no move in progress.

Use this endpoint to track the status of a move you have initiated for a single domain.

  • Method: GET
  • Path: /api/domains/v1/move/outgoing/{domain}

domains_startOutgoingDomainMoveV1

Initiate a move of a specified domain to another Hostinger account.

The receiving account has to already exist and accept the move before the domain changes hands.

The domain must be active. The subscription it belongs to is resolved automatically, and the request is rejected with a 404 status code when the domain has no domain subscription of its own.

Domains protected by premium protection require an additional verification step, such requests are rejected with a 428 status code.

Use this endpoint to hand a domain over to another Hostinger user.

  • Method: POST
  • Path: /api/domains/v1/move/outgoing/{domain}

domains_cancelOutgoingDomainMoveV1

Cancel an outgoing move for a specified domain.

The move can only be cancelled while the receiving account has not accepted it yet. The domain stays in your account.

Use this endpoint to withdraw a move you no longer want to complete.

  • Method: DELETE
  • Path: /api/domains/v1/move/outgoing/{domain}

domains_getOutgoingDomainMoveListV1

Retrieve all domains you are moving to other Hostinger accounts.

Only moves which have not completed yet are returned.

Use this endpoint to track moves you have initiated and the accounts they are addressed to.

  • Method: GET
  • Path: /api/domains/v1/move/outgoing

domains_getDomainAuthorizationCodeV1

Retrieve the authorization (EPP) code for a specified domain so it can be transferred away from Hostinger to another registrar.

Requesting a new code invalidates any code retrieved previously.

Use this endpoint to obtain the code required to transfer a domain to another registrar.

  • Method: GET
  • Path: /api/domains/v1/portfolio/{domain}/auth-code

domains_claimFreeDomainV1

Claim a free domain available on your account and register it.

Unlike purchasing a domain, this consumes a free domain you already have, so no payment method is required.

A successful response means the domain is registered. If registration fails, login to hPanel and check domain registration status.

If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account.

Some TLDs require additional_details to be provided and these will be validated before claiming.

Requests which cannot be fulfilled are rejected with an error code in the response body, for example 2037 when no free domain is available.

Use this endpoint to register a domain using a free domain from your account.

  • Method: POST
  • Path: /api/domains/v1/portfolio/claim

domains_enableDomainLockV1

Enable domain lock for the domain.

When domain lock is enabled, the domain cannot be transferred to another registrar without first disabling the lock.

Use this endpoint to secure domains against unauthorized transfers.

  • Method: PUT
  • Path: /api/domains/v1/portfolio/{domain}/domain-lock

domains_disableDomainLockV1

Disable domain lock for the domain.

Domain lock needs to be disabled before transferring the domain to another registrar.

Use this endpoint to prepare domains for transfer to other registrars.

  • Method: DELETE
  • Path: /api/domains/v1/portfolio/{domain}/domain-lock

domains_getDomainDetailsV1

Retrieve detailed information for specified domain.

Use this endpoint to view comprehensive domain configuration and status.

  • Method: GET
  • Path: /api/domains/v1/portfolio/{domain}

domains_getDomainListV1

Retrieve all domains associated with your account.

Use this endpoint to view user's domain portfolio.

  • Method: GET
  • Path: /api/domains/v1/portfolio

domains_purchaseNewDomainV1

Purchase and register a new domain name.

If registration fails, login to hPanel and check domain registration status.

If no payment method is provided, your default payment method will be used automatically.

If the response is 202 Accepted, the payment is still being processed and the domain was not registered. Once the order completes, register the domain from hPanel.

If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account.

Some TLDs require additional_details to be provided and these will be validated before completing purchase.

Use this endpoint to register new domains for users.

  • Method: POST
  • Path: /api/domains/v1/portfolio

domains_enablePrivacyProtectionV1

Enable privacy protection for the domain.

When privacy protection is enabled, domain owner's personal information is hidden from public WHOIS database.

Use this endpoint to protect domain owner's personal information from public view.

  • Method: PUT
  • Path: /api/domains/v1/portfolio/{domain}/privacy-protection

domains_disablePrivacyProtectionV1

Disable privacy protection for the domain.

When privacy protection is disabled, domain owner's personal information is visible in public WHOIS database.

Use this endpoint to make domain owner's information publicly visible.

  • Method: DELETE
  • Path: /api/domains/v1/portfolio/{domain}/privacy-protection

domains_getDomainRenewalInformationV1

Retrieve renewal information for a specified domain, including its status and current expiration date.

Use this endpoint to build renewal automation and expiry monitoring for a single domain.

  • Method: GET
  • Path: /api/domains/v1/portfolio/{domain}/renewal

domains_completeDomainSetupV1

Register a domain you have already paid for but which has not been set up yet.

Use this endpoint when an order completed without registering the domain, for example when Purchase new domain returned 202 Accepted and the domain was added to your account without being registered, or when an earlier setup attempt failed. No new order is placed and no payment is taken: the subscription you already own is used, for the period you already paid for.

A domain is left awaiting setup when the details needed to register it were missing or invalid as the order completed. Domains ordered elsewhere can be awaiting setup for the same reason. Complete the missing information, then call this endpoint. If the order itself has not completed yet, the domain is not on your account, wait until it appears in Get domain list.

If domain_contacts is omitted, the default WHOIS profile of that TLD is used for all four roles. The profile must exist and be complete for the TLD, an incomplete profile is the most common reason a domain is left awaiting setup. Create one with Create WHOIS profile.

Some TLDs require additional_details. These are validated before setup, so a missing or invalid value is rejected without any registration being attempted.

The domain is set up with the default nameservers and without privacy protection. Use Update domain nameservers and Enable privacy protection afterwards to change either.

A successful response means the setup request was accepted, not that the domain is already registered. Poll Get domain list for the outcome, the domain appears in Get domain details only once it is registered.

Use this endpoint to finish registering a domain that is awaiting setup on your account.

  • Method: POST
  • Path: /api/domains/v1/portfolio/{domain}/setup

domains_updateDomainNameserversV1

Set nameservers for a specified domain.

Be aware, that improper nameserver configuration can lead to the domain being unresolvable or unavailable.

Use this endpoint to configure custom DNS hosting for domains.

  • Method: PUT
  • Path: /api/domains/v1/portfolio/{domain}/nameservers

domains_claimFreeDomainTransferV1

Claim a free domain transfer available on your account and start the transfer.

Unlike purchasing a transfer, this consumes a free domain transfer you already have, so no payment method is required.

Before making request, unlock the domain at the current registrar and get its authorization code. The transfer is validated first, so domains which cannot be transferred are rejected before the free domain transfer is consumed.

A successful response means the transfer has been started. Completion depends on the current registrar and can be followed with the transfer list endpoint.

If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account.

Requests which cannot be fulfilled are rejected with an error code in the response body.

Use this endpoint to transfer a domain using a free domain transfer from your account.

  • Method: POST
  • Path: /api/domains/v1/transfers/claim

domains_getTransferV1

Retrieve the transfer for a specified domain.

Use this endpoint to track an incoming or outgoing registrar transfer and its status.

  • Method: GET
  • Path: /api/domains/v1/transfers/{domain}

domains_getTransferListV1

Retrieve all domain transfers in your portfolio.

Use this endpoint to monitor incoming and outgoing registrar transfers across your domains.

  • Method: GET
  • Path: /api/domains/v1/transfers

domains_changeWHOISProfileForDomainV1

Change WHOIS contact profile for a domain.

Repoints the given contact roles to a new WHOIS profile and submits the change to the registry. The profile currently assigned to those roles is resolved automatically; the request fails if the given roles are not all on the same profile today.

Changing transfer sensitive fields on the owner contact starts an IRTP verification.

The change is processed asynchronously.

Use this endpoint to move a registered domain onto different contact information.

  • Method: PUT
  • Path: /api/domains/v1/whois/change

domains_setWHOISProfileAsDefaultV1

Set WHOIS contact profile as default.

The default profile is pre-selected for the TLD it belongs to when registering new domains.

Use this endpoint to avoid picking contact information for every registration.

  • Method: PUT
  • Path: /api/domains/v1/whois/default/{whoisId}

domains_unsetDefaultWHOISProfileV1

Unset WHOIS contact profile as default.

The profile itself is kept, it is only no longer pre-selected for its TLD.

Use this endpoint to stop reusing contact information for new registrations.

  • Method: DELETE
  • Path: /api/domains/v1/whois/default/{whoisId}

domains_getWHOISProfileV1

Retrieve a WHO

Installation

TypingMind
Prerequisites:

Node.js 18+

{
  "mcpServers": {
    "hostinger-api": {
      "command": "npx",
      "args": [
        "-y",
        "hostinger-api-mcp"
      ],
      "env": {
        "DEBUG": "false",
        "APITOKEN": "YOUR API TOKEN"
      }
    }
  }
}

Use Hostinger API MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once Hostinger API is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add Hostinger API as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the Hostinger API MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "hostinger-api": {
      "command": "npx",
      "args": [
        "-y",
        "hostinger-api-mcp"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the Hostinger API MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the Hostinger API MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use Hostinger API to help me with this task?
Hostinger API
Sure. I read it.
Here is what I found using Hostinger API.

Frequently asked questions

What is the Hostinger API MCP server used for?

Hostinger API is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use Hostinger API MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use Hostinger API with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use Hostinger API MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With Hostinger API connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect Hostinger API MCP to TypingMind?

Hostinger API runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does Hostinger API MCP provide in TypingMind?

Hostinger API exposes MCP capabilities that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use Hostinger API MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If Hostinger API requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇