hostinger
Manage Hostinger domains, DNS, hosting, subscriptions and VPS via REST API
Works with
---
name: hostinger
description: Manage Hostinger domains, DNS, hosting, subscriptions and VPS via REST API
license: MIT
---
# /hostinger
Connect to Hostinger to manage domains, DNS records, hosting websites, subscriptions and VPS data centers. Pure Ruby, zero gems — stdlib only.
## Structure
```
scripts/
├── auth.rb # Bearer token auth + hostinger_request helper (required by all scripts)
├── check_setup.rb # Check if token exists (outputs OK or SETUP_NEEDED)
├── save_token.rb # Save and validate an API token
├── domains.rb # List all domains in portfolio
├── domain.rb # Get domain details
├── domain_availability.rb # Check domain availability across TLDs
├── nameservers.rb # Update domain nameservers
├── domain_lock.rb # Enable/disable domain lock
├── privacy.rb # Enable/disable WHOIS privacy protection
├── dns_records.rb # List DNS records for a domain
├── dns_update.rb # Update DNS records
├── dns_delete.rb # Delete DNS records
├── dns_snapshots.rb # List DNS snapshots
├── dns_restore.rb # Restore a DNS snapshot
├── websites.rb # List hosting websites
├── subscriptions.rb # List subscriptions
├── catalog.rb # List catalog items available for order
└── vps_datacenters.rb # List available VPS data centers
```
## Setup (check before using)
```bash
ruby ~/.claude/skills/hostinger/scripts/check_setup.rb
```
If the output is `OK`, proceed to the Flow section.
If the output is `SETUP_NEEDED`, guide the user step by step. Present ONE step at a time, wait for the user to confirm before moving to the next.
**Step 1** — Ask the user to create an API token:
> You need a Hostinger API token. Go to your Hostinger panel:
>
> **hPanel > Account > API Tokens**
>
> Create a new token with the permissions you need (domains, DNS, hosting, billing).
> Copy the token and paste it here.
**Step 2** — When the user pastes the token, save it:
```bash
ruby ~/.claude/skills/hostinger/scripts/save_token.rb 'PASTED_TOKEN'
```
If the script outputs an error, the token is invalid. Ask the user to double-check and try again.
**If setup is not complete, DO NOT proceed to the Flow. Complete all steps first.**
## Flow
The argument `$ARGUMENTS` may contain a domain name.
### Step 1: Overview
```bash
ruby ~/.claude/skills/hostinger/scripts/domains.rb
```
Present the domains. If `$ARGUMENTS` matches a domain, use it. Otherwise ask what the user wants to do.
### Step 2: Actions
**Get domain details:**
```bash
ruby ~/.claude/skills/hostinger/scripts/domain.rb example.com
```
**Check domain availability:**
```bash
ruby ~/.claude/skills/hostinger/scripts/domain_availability.rb mysite com net io
```
**Update nameservers (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/nameservers.rb example.com ns1.example.com ns2.example.com
```
**Enable/disable domain lock (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/domain_lock.rb example.com --enable
ruby ~/.claude/skills/hostinger/scripts/domain_lock.rb example.com --disable
```
**Enable/disable WHOIS privacy (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/privacy.rb example.com --enable
ruby ~/.claude/skills/hostinger/scripts/privacy.rb example.com --disable
```
**List DNS records:**
```bash
ruby ~/.claude/skills/hostinger/scripts/dns_records.rb example.com
```
**Update DNS records (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/dns_update.rb example.com '[{"type":"A","name":"@","content":"1.2.3.4","ttl":3600}]'
```
**Delete DNS records (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/dns_delete.rb example.com '[{"type":"A","name":"@","content":"1.2.3.4"}]'
```
**List DNS snapshots:**
```bash
ruby ~/.claude/skills/hostinger/scripts/dns_snapshots.rb example.com
```
**Restore a DNS snapshot (requires user confirmation):**
```bash
ruby ~/.claude/skills/hostinger/scripts/dns_restore.rb example.com SNAPSHOT_ID
```
**List hosting websites:**
```bash
ruby ~/.claude/skills/hostinger/scripts/websites.rb
```
**List subscriptions:**
```bash
ruby ~/.claude/skills/hostinger/scripts/subscriptions.rb
```
**List catalog items:**
```bash
ruby ~/.claude/skills/hostinger/scripts/catalog.rb
ruby ~/.claude/skills/hostinger/scripts/catalog.rb --category hosting
```
**List VPS data centers:**
```bash
ruby ~/.claude/skills/hostinger/scripts/vps_datacenters.rb
```
## Notes
- **Pure Ruby, zero gems** — stdlib only (json, net/http, uri, fileutils)
- Auth via Bearer token
- Token file: `~/.config/hostinger/token` (outside the repo, never commit)
- Updating nameservers, DNS records, domain lock, privacy, and restoring snapshots require explicit user confirmation
- Rate limit enforced by Hostinger (HTTP 429 when exceeded)
- Base URL: `https://developers.hostinger.com`More API Design skills
lark-event
larksuite/cli
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.
lark-contact
larksuite/cli
飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。
lark-openapi-explorer
larksuite/cli
飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。

