| name | server-catalog |
| description | 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. |
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
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
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
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:
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.