Every Hotelist feature, plus a local SQLite mirror that ranks rating-per-dollar across whole countries, compares chains head-to-head, and tracks how a city's hotels change over time.
Hotelist.com (by @levelsio) rates hotels with AI: it reads real traveler reviews, scores actual room photos, and photo-verifies claimed amenities so you can filter on a gym with real weights or a bathtub that actually exists. This CLI puts that data in your terminal and in agent context with --json/--select output, an offline cache, and cross-location commands the single-map website can't express: rank-country, chain-compare, corridor, and a watch/diff drift tracker. Data is scraped from Hotelist (community/AI-rated, not an official API).
The recommended path installs both the hotelist-pp-cli binary and the pp-hotelist agent skill (Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, and other agents supported by the upstream skills CLI) in one shot:
npx -y @mvanhorn/printing-press-library install hotelistFor CLI only (no skill):
npx -y @mvanhorn/printing-press-library install hotelist --cli-onlyFor skill only — installs the skill into the same agents as the default command above, but skips the CLI binary (use this to update or reinstall just the skill):
npx -y @mvanhorn/printing-press-library install hotelist --skill-onlyTo constrain the skill install to one or more specific agents (repeatable — agent names match the skills CLI):
npx -y @mvanhorn/printing-press-library install hotelist --agent claude-code
npx -y @mvanhorn/printing-press-library install hotelist --agent claude-code --agent codexIf npx isn't available (no Node, offline), install the CLI directly via Go (requires Go 1.26.4 or newer):
go install github.com/mvanhorn/printing-press-library/library/travel/hotelist/cmd/hotelist-pp-cli@latestThis installs the CLI only — no skill.
Download a pre-built binary for your platform from the latest release. On macOS, clear the Gatekeeper quarantine: xattr -d com.apple.quarantine <binary>. On Unix, mark it executable: chmod +x <binary>.
Install the CLI binary first. The installer writes binaries to a per-user managed bin directory by default: $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows.
npx -y @mvanhorn/printing-press-library install hotelist --cli-onlyThen install the focused Hermes skill.
From the Hermes CLI:
hermes skills install mvanhorn/printing-press-library/cli-skills/pp-hotelist --forceInside a Hermes chat session:
/skills install mvanhorn/printing-press-library/cli-skills/pp-hotelist --forceRestart the Hermes session or gateway if the newly installed skill is not visible immediately.
Install both the CLI binary and the focused OpenClaw skill. The installer defaults binaries to a per-user bin directory ($HOME/.local/bin on macOS/Linux, %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows):
npx -y @mvanhorn/printing-press-library install hotelist --agent openclawRestart the OpenClaw session or gateway if the newly installed skill is not visible immediately.
This CLI ships an MCPB bundle — Claude Desktop's standard format for one-click MCP extension installs (no JSON config required).
To install:
- Download the
.mcpbfor your platform from the latest release. - Double-click the
.mcpbfile. Claude Desktop opens and walks you through the install.
Requires Claude Desktop 1.0.0 or later. Pre-built bundles ship for macOS Apple Silicon (darwin-arm64) and Windows (amd64, arm64); for other platforms, use the manual config below.
Manual JSON config (advanced)
If you can't use the MCPB bundle (older Claude Desktop, unsupported platform), install the MCP binary and configure it manually.
go install github.com/mvanhorn/printing-press-library/library/travel/hotelist/cmd/hotelist-pp-mcp@latestAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"hotelist": {
"command": "hotelist-pp-mcp"
}
}
}# Health check: confirms Hotelist.com is reachable before you search.
hotelist-pp-cli doctor --dry-run
# AI-rated hotels in a city, sorted by Hotelist Score.
hotelist-pp-cli search bangkok --json
# Photo-verified amenities: a real weightlifting gym and a pool.
hotelist-pp-cli filter lisbon --gym-weights --pool --json
# Best rating-per-dollar in a location.
hotelist-pp-cli value tulum --json
# National value leaderboard the website's map UI can't produce.
hotelist-pp-cli rank-country portugal --min-rating 8 --max-price 150 --json
These capabilities aren't available in any other tool for this API.
-
rank-country— Rank the best hotels across an entire country by Hotelist rating-per-dollar, with compound amenity and price filters.When an agent needs the single best-value hotel in a whole country under hard constraints, reach for this instead of paging city-by-city search.
hotelist-pp-cli rank-country thailand --min-rating 8 --max-price 150 --amenities pool,coworking --json
-
chain-compare— Compare hotel chains head-to-head on mean rating, median price, and rating-per-dollar in a country.Answers 'which chain is actually worth it here?' in one call instead of a dozen manual map filters.
hotelist-pp-cli chain-compare --chains marriott,hilton,hyatt --country japan --metric best-value --json
-
corridor— Find the best hotel in each stop of a multi-city route in one pass, with shared filters.Plans a nomad's annual route in one command; pick this over N separate searches when the user names several cities.
hotelist-pp-cli corridor --cities "Chiang Mai,Lisbon,Medellin" --min-rating 7.5 --max-price 120 --amenities coworking --json
-
watch— Snapshot a saved location over time and diff which hotels improved, declined, or changed price since you last checked.The only way to answer 'did this city's hotels get better or more expensive since last time?' — pick it for any change-over-time question.
hotelist-pp-cli watch diff lisbon --since 2026-01-01 --metric both --json
-
chain-consistency— Compute mean, median, and spread of a single chain's ratings across a country to see if the brand is reliably good or full of outliers.Use before trusting a loyalty brand in an unfamiliar region; surfaces hidden outlier risk a single listing can't show.
hotelist-pp-cli chain-consistency --chain marriott --country thailand --json
-
price-cliff— Find the price point in a city where rating-per-extra-dollar collapses — the cheapest hotel that's still legitimately good.Turns 'spend the least without sacrificing quality' into one number plus the hotels just below the cliff.
hotelist-pp-cli price-cliff bangkok --min-rating 7 --json
hotelist-pp-cli filter lisbon --gym-weights --json --select hotels.name,hotels.hotellist_rating,hotels.pricePhoto-verified weightlifting gym, narrowed to just name/rating/price so an agent doesn't parse the full payload.
hotelist-pp-cli rank-country thailand --min-rating 8 --max-price 150 --top 10 --jsonTop 10 hotels by rating-per-dollar across the whole country in one call.
hotelist-pp-cli chain-compare --chains marriott,hyatt --country japan --metric best-value --jsonHead-to-head mean rating, median price, and value per chain.
hotelist-pp-cli corridor --cities "Chiang Mai,Lisbon,Tbilisi" --min-rating 7.5 --max-price 120 --jsonBest hotel per stop that clears all filters, in one pass.
hotelist-pp-cli show KYLCGAVE --jsonFull Hotelist Score, AI photo and review ratings, consensus, verified amenities, pros and cons.
Run hotelist-pp-cli --help for the full command reference and flag list.
A single AI-rated hotel from Hotelist.
hotelist-pp-cli hotel <hotel_id>- Fetch the raw detail-modal HTML for one hotel (Hotelist Score, verified amenities, AI rating breakdown). The 'show' command parses this into structured fields.
# Human-readable table (default in terminal, JSON when piped)
hotelist-pp-cli hotel mock-value
# JSON for scripting and agents
hotelist-pp-cli hotel mock-value --json
# Filter to specific fields
hotelist-pp-cli hotel mock-value --json --select id,name,status
# Dry run — show the request without sending
hotelist-pp-cli hotel mock-value --dry-run
# Agent mode — JSON + compact + no prompts in one flag
hotelist-pp-cli hotel mock-value --agentThis CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--jsonoutput to stdout, errors to stderr - Filterable -
--select id,namereturns only fields you need - Previewable -
--dry-runshows the request without sending - Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
- Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendlyis set
Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.
hotelist-pp-cli doctorVerifies configuration and connectivity to the API.
Config file: ~/.config/hotelist/config.toml
Static request headers can be configured under headers; per-command header overrides take precedence.
Not found errors (exit code 3)
- Check the resource ID is correct
- Run the
listcommand to see available items
- search returns an empty list for a city — Run 'hotelist-pp-cli sync cities' to refresh the city-to-geohash table, then retry; the city name must match a Hotelist city.
- prices look off or undated — Hotelist prices are AI-estimated nightly figures, not live date-specific quotes; --checkin/--checkout are display context only, not a backend filter.
- stale results — Add --fresh to bypass the local cache and re-fetch from Hotelist; default cache is fresh-on-read with a domain-appropriate stale window.
- HTTP 429 or slow responses — The CLI rate-limits politely by design; lower concurrency with --max-scan-pages on multi-location commands or wait and retry.