Troubleshoot a website
One website and one symptom in; a named cause, the evidence for it, and a fix out. Stay read-only until the cause is stated and the user agrees to the fix.
Calling the operations
- Read the that returns before the first call of each operation. If a name below is rejected as unknown, for what the step does (e.g. "ssl status").
- Batch reads with and pass values between steps with , e.g.
"$steps.0.data.0.username"
. A batch stops at its first failure.
- The Hostinger Connector runs each product as its own MCP server (, , , , ), so a batch can only chain operations from one server. When cannot find an operation, that product group is switched off in the Connector — ask the user to enable it.
1. Find the website
Run both lookups, and keep the result for every later call:
- with — Shared and Cloud plans. The filter is a substring match, so take the entry whose is exactly the one asked about. Keep , and ; every and call is keyed on + .
agency-hosting_websites_list-plan
with — Agency Plan. Keep (the of every call), , and .
Neither finds it: the domain is not a website on this account — say so and show where it points (step 2).
2. Look at it from outside
Run these alongside step 1:
bash
curl -sS -o /dev/null -w "%{http_code} ttfb=%{time_starttransfer}s %{redirect_url}\n" https://DOMAIN/
curl -sSI https://DOMAIN/
dig +short NS DOMAIN; dig +short A DOMAIN; dig +short CAA DOMAIN
- Hostinger responses carry and . Without them, or with DNS pointing elsewhere, traffic is not reaching this hosting — hand over to the skill.
- Certificate or TLS errors → SSL.
- , a blank page or an error page → By website type.
- with old content → cache: (also purges the Hostinger CDN; pass for WordPress in a subfolder), plus
wordpress_litespeed-cache_purge-lite-speed
for WordPress; Agency: agency-hosting_cache_clear-website
.
- Slow first byte → Slow site. Behind the Hostinger CDN, is the origin's own response time in seconds; a small value there means the server is not the bottleneck.
3. By website type
(Shared/Cloud) or
(Agency) picks the branch.
and
sites are not managed by these operations — send the user to hPanel.
Node.js ()
Batch
(the latest build with its log, failure analysis and stored settings),
hosting_nodejs_runtime-logs
(
,
levels: ["ERROR", "WARN"]
) and
hosting_nodejs_list-environment-variables
(keys only; values always come back masked).
- Latest build : already holds the (fetched once per build — the API re-runs it on every call and allows 5 a minute). A wrongly detected framework, output directory or missing is the usual cause: compare the returned with the project and deploy again with corrected , , or ; a Git deploy stores them, so pushes build correctly too. A site deployed on the hosted server from uploaded files has no to repeat: rebuild through
hosting_nodejs_start-build
with the corrected values and store them with hosting_nodejs_update-build-settings
.
- Build but the app errors: read the runtime logs; entries older than belong to the previous deploy. A variable the code reads but the key list lacks is fixed with the skill's environment step.
Access denied for user '…'@'::1'
means the app connects to — must be .
- Hung process:
hosting_nodejs_restart-application
(restarts without rebuilding).
WordPress ()
wordpress_installations_list
with
and
gives the install
— the
parameter of every
call. Batch
wordpress_installations_check-if-are-valid
(
,
),
wordpress_plugins_list-installed
and
wordpress_maintenance_show-status
.
- Invalid install: names the problem.
- Broken after a plugin or theme change: deactivate suspects one at a time with
wordpress_plugins_deactivate
(queued — allow a few seconds), re-run the step 2 check after each, and reactivate with wordpress_plugins_activate
any that were not the cause.
- Maintenance page stuck:
wordpress_maintenance_toggle
with .
- "Error establishing a database connection": with ; corrupted tables are fixed by (runs in the background). cannot be read through the API because files with secrets are refused — for credential checks hand the user
hosting_databases_phpmyadmin-link
.
- Memory or upload-size errors → PHP.
Static or PHP ()
- or at :
hosting_files_list-website-and-directories
with . or must sit at the document root; finding it one folder down means the archive was packed a level too deep — redeploy it flat with the skill.
- Read or other config with
hosting_files_website-content
.
- PHP errors → PHP.
PHP
returns every extension and option (around 25 KB), so call it only for PHP problems.
hosting_php_update-version
switches versions.
hosting_php_update-options
silently caps values at the plan maximum (
in
), so read the applied value back. Agency:
agency-hosting_php_list-options-for-website
, then
agency-hosting_php_replace-website-options
— a full replace, so send every custom option that should stay.
Agency Plan sites
agency-hosting_websites_get
shows state and quotas,
agency-hosting_websites_list-processes
shows failed jobs (SSL setup, backups), and
agency-hosting_wordpress_settings
shows core version, LiteSpeed, object cache and maintenance mode. When
wordpress_installations_list
does not return the site, plugins are managed from wp-admin.
SSL
Shared and Cloud,
in
hosting_websites_get-settings
:
- or ( says why): the domain must resolve to Hostinger, and any CAA record must allow , before can succeed. Poll
hosting_websites_get-settings
until is or .
- or : wait — another install request returns 422.
- Free subdomains use a platform certificate; installing returns 422 by design.
- Browser still warns while the certificate is : turn on the redirect with
hosting_websites_update-settings
() when is_https_redirect_enabled
is false, otherwise the page loads assets (mixed content) that the app has to change.
Agency,
agency-hosting_ssl_website-status
for each domain: every domain allows three certificate setups per seven days and one request a minute. Check
agency-hosting_websites_list-processes
before
agency-hosting_ssl_install-website
or
agency-hosting_ssl_reinstall-website
, and never retry in a loop.
Slow site
- WordPress:
wordpress_litespeed-cache_show-lite-speed-status
and wordpress_object-cache_show-memcached-status
. Turning on Memcached with wordpress_object-cache_toggle-memcached
is the usual quick win.
- Other sites: server caching may be off or development mode left on.
hosting_websites_get-settings
shows both in (, is_cacheless_mode_enabled
); fix them with hosting_websites_update-settings
(, ). Development mode takes a few minutes to turn off.
- PHP 7.x runs markedly slower than 8.x; propose a supported 8.x version from when the app allows it.
- Agency:
agency-hosting_metrics_list-order-resource-usage
with shows CPU, memory and processes per website against the plan quota.
- Shared and Cloud have no CPU or memory metrics in the API. When the evidence points at resource limits, send the user to hPanel's resource usage page.
Apply the fix
State the cause, the evidence and the single change proposed, and make it only after the user agrees. Then re-run the step 2 check, polling any queued job first, to show the symptom is gone. When the fix needs something the API cannot do, say so and name the hPanel page.
Not available through the API
- Website backups and restores — hPanel's Backups page.
- CPU, memory and process usage for Shared and Cloud plans.
- PHP error and access logs.