Troubleshooting
A grab-bag of the failure modes we see most often. If your symptom isn't here, the dashboard's Test connection flow + Magento var/log/system.log usually narrow it down quickly. If you're still stuck, email helo@byte8.io.
"Test connection" fails
401 Unauthorized
The API key in Magento admin doesn't match the one in the Horizon dashboard.
- Re-check the admin field at Stores → Configuration → Byte8 → Horizon → API key.
- Did you flush config cache after saving?
bin/magento cache:flush config. - If you rotated the key recently, are you using the new one in both places? The dashboard generated it; you have to paste it into Magento admin too.
404 Not Found
The /horizon/* route isn't mounted in Magento.
- Did
setup:upgradecomplete cleanly aftercomposer require byte8/module-horizon? - Check the module is enabled:
bin/magento module:status Byte8_Horizonshould printModule is enabled. - If it shows disabled, run
bin/magento module:enable Byte8_Horizonthensetup:upgrade.
DNS / TLS error
The gateway can't reach the store's base URL from the public internet.
- Is the store behind a VPN, IP allowlist, or basic-auth wall? The gateway needs unauthenticated TLS access to
https://<your-store>/horizon/*. - Is the TLS cert valid? Self-signed and expired certs are rejected.
- Common gotcha: redirect from
http://tohttps://. Set the dashboard'sbaseUrlto the canonicalhttps://URL directly.
Timeout
Magento is slow to respond, or the host is overloaded.
- Hit
/horizon/api/healthyourself from outside the network withcurl -i -H "X-Horizon-Key: <key>" https://your-store.example/horizon/api/health. If that's slow too, it's a Magento issue not a Horizon one. - Check
php-fpmslow log, OPcache config, and Magento cron load.
Tool calls return errors
Magento unreachable
Same root causes as a failed connection test. Re-run Test connection in the dashboard to confirm.
Tool returned 422 / unprocessable entity
The Magento extension returned an error specific to that tool's logic.
get_productwith an unknown SKU → 422 with{ "error": "product_not_found" }. The agent should retry withsearch_productsfirst.get_inventorywith > 50 SKUs → 422 with{ "error": "too_many_skus" }. Batch the calls.- Look at the Magento
var/log/exception.logfor the corresponding entry — it usually has the full picture.
Rate limit exceeded (only on Trial)
Trial tier is hard-capped at 10,000 calls / month. Upgrade to Starter or higher to enable soft caps + overage.
AI sees stale data
The catalog changed but the agent reports the old state.
- Check the indexer status:
bin/magento indexer:status byte8_horizon_product. If pending, runbin/magento indexer:reindex byte8_horizon_product. - If your install is on
Update by Schedule, the cron interval (default 1 min) is the floor on freshness. See Indexer behaviour. - If you need sub-second freshness on specific products, the invalidation webhook handles gateway-side caching, but the underlying flat index still needs to rebuild —
Update on Savemode is the only way to get true real-time.
Agent can't see Horizon tools at all
Claude Desktop
- Config file syntax — run it through
jqto confirm valid JSON. - After editing, restart Claude Desktop, not just refresh.
- The
mcpServerskey must be at the top level, not nested.
Anthropic SDK
- Confirm you're on a current SDK version with MCP support.
- Use
authorization_tokenfield (not a custom header) — the SDK injects the rightAuthorization: Bearershape. - Some agent frameworks have stale MCP support — try a direct SDK call first to isolate.
Dashboard issues
Can't add a store
- Did you hit your plan's
max_storeslimit? The dashboard surfaces this. - Are you signed in to the right Byte8 account? Stores are per-user.
Don't see usage data yet
- New stores show empty charts until the first call lands.
- Failed calls (4xx, 5xx) are logged — they show up in the daily chart's
errorCountstack. - The dashboard auto-refreshes via SWR every few seconds; if you don't see updates, hit the manual reload button.
Lost the API key
There's no way to recover an API key once you've closed the creation dialog. The only path is rotation — generates a fresh key and invalidates the old one in one step.
Still stuck?
- Drop the support email a short message with: your store name, the failing tool name (if applicable), the timestamp of the failure (UTC), and any error output: helo@byte8.io.
- Include the Test connection result from the dashboard — that one signal narrows the debug surface enormously.