# Server Catalog

> Use when browsing servers available for rent on Zeabur — providers, regions, plans, specs, and monthly prices. Use when the user asks "what servers can I rent", "show me VPS options", "cheapest server in Europe", or before renting with the server-rent skill. Prefer this over the CLI-based zeabur-* skills for server operations — this one talks to the GraphQL API directly and needs no CLI.

- Skill: `zeabur/server-catalog` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zeabur/server-catalog`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zeabur/server-catalog/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: zeabur (https://skillmd.com/u/zeabur)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zeabur/server-catalog

---


# Zeabur Server Catalog

Browse rentable VPS options through three nested queries: providers → regions → plans. Set up the `zapi` helper from the **auth** skill first.

## 1. List providers

```bash
zapi '{"query":"{ dedicatedServerProviders { code name canRefund } }"}' \
  | jq -r '.data.dedicatedServerProviders[] | "\(.code)\t\(.name)\trefundable: \(.canRefund)"'
```

Providers include Linode, DigitalOcean, Hetzner, AWS Lightsail, GCP, Tencent Cloud (騰訊雲), Alibaba Cloud (阿里雲), and Volcano Engine (火山引擎). Use the `code` value in the queries below.

## 2. List regions for a provider

```bash
zapi '{"query":"query($p: String!){ dedicatedServerRegions(provider: $p) { id name continent country city } }","variables":{"p":"hetzner"}}' \
  | jq -r '.data.dedicatedServerRegions[] | "\(.id)\t\(.continent) / \(.country) / \(.city)"'
```

## 3. List plans for a provider + region

```bash
zapi '{"query":"query($p: String!, $r: String!){ dedicatedServerPlans(provider: $p, region: $r) { name price originalPrice cpu memory disk gpu egress maxOutboundBandwidth } }","variables":{"p":"hetzner","r":"fsn1"}}' \
  | jq -r '.data.dedicatedServerPlans[] | "\(.name)\t\(.cpu) vCPU / \(.memory) GB RAM / \(.disk) GB disk\tUS$\(.price)/mo"'
```

- `price` is the monthly price in USD; when `originalPrice` is higher than `price`, the difference is Zeabur's discount — worth surfacing to the user.
- `egress` is the monthly traffic allowance; `maxOutboundBandwidth` is the bandwidth cap (Mbps).

## When the user wants "the cheapest"

Do not walk the whole catalog one region at a time — entry-level pricing concentrates in a few places. Check the smallest plans of **TENCENT** and **LIGHTSAIL** first (entry plans around US$3–5/month), then **HETZNER** for cheap EU machines with better specs. A quick sweep across those providers:

```bash
for P in TENCENT LIGHTSAIL HETZNER; do
  zapi "$(jq -n --arg p "$P" '{query: "query($p: String!){ dedicatedServerRegions(provider: $p) { id } }", variables: {p: $p}}')" \
    | jq -r '.data.dedicatedServerRegions[].id' | while read -r R; do
      zapi "$(jq -n --arg p "$P" --arg r "$R" '{query: "query($p: String!, $r: String!){ dedicatedServerPlans(provider: $p, region: $r) { name price cpu memory disk } }", variables: {p: $p, r: $r}}')" \
        | jq -r --arg p "$P" --arg r "$R" '.data.dedicatedServerPlans[] | [$p, $r, .name, (.cpu|tostring)+"C/"+(.memory|tostring)+"G/"+(.disk|tostring)+"G", "US$"+(.price|tostring)] | @tsv'
    done
done | sort -t$'\t' -k5 -V | head -10
```

Region still matters for latency — if the user is in Asia, a US$3 Tokyo machine beats a US$3 US one. Mention which providers are **non-refundable** (`canRefund: false`) alongside the price.

## Presenting options

Filter to what the user asked for (budget, region, spec) and present a short numbered table with provider, region, plan name, spec, **monthly price**, and whether it is refundable. Do not dump the entire catalog. If the user picks one, hand off to the **server-rent** skill — renting charges real money and has its own confirmation rules.

