Skill
table-reservation-goat
One reservation CLI for OpenTable, Tock, and Resy — search all three networks at once, watch for cancellations, book, and track changes from a local store agents can query.
When to use table-reservation-goat
Choose if
You want one agent-driven CLI that searches OpenTable, Tock, and Resy together, ranks results, and runs a persistent cancellation-watch loop. Versus calling each network's site or unofficial wrapper one-by-one, this gives a single ranked surface with disk cache + singleflight dedupe + adaptive rate limiter built in, plus dry-run-by-default booking gated behind `TRG_ALLOW_BOOK`.
Avoid if
You need to book paid/prepay venues on Resy (deferred to v0.3) or you can't run Chrome locally for Tock booking. Also avoid concurrent multi-agent booking against the same account — the idempotency pre-flight plus filesystem advisory lock is best-effort, not strict serialization. If the workflow requires a network the README doesn't list (Yelp Reservations, SevenRooms direct), this isn't it.
Risk Flags
- MEDIUM rate_limit OpenTable enforces a WAF rate limit. The CLI ships disk cache, singleflight dedupe and an AdaptiveLimiter; throttle is tunable via `TRG_OT_THROTTLE_RATE` (default 0.5 req/s). Hitting the cap returns exit code 7 — agents on cancellation-watch loops must respect the limiter.
- HIGH auth Tock requires CVC entry on stderr or via `TRG_TOCK_CVC`; Resy uses a JWT exchanged from your password (password not stored, JWT stored in config). Live booking is gated behind `TRG_ALLOW_BOOK=1` — without it the CLI is dry-run only. Agents handling card data inherit the usual PCI considerations.
- MEDIUM scope Resy booking is limited to free reservations in v0.2; paid/prepay venues are deferred to v0.3. Tock booking depends on a running Chrome on port 9222 (or a spawned fallback). Some Tock venues require manual CVC entry.
- LOW data_quality Double-booking mitigated by an idempotency pre-flight (ListUpcomingReservations + normalized matching) plus a filesystem advisory lock — not bulletproof under concurrent multi-agent execution against the same account.
Cost
Type: Free · Free tier: The CLI binary is free to install. No upstream API key required for search; Resy bookings currently limited to free reservations only — payment-required venues return a typed `payment_required` error pointing at v0.3. Tock booking spawns Chrome and may require CVC entry.
Install
Default
npx -y @mvanhorn/printing-press install table-reservation-goat
# Booking is opt-in — keep dry-run by default:
export TRG_ALLOW_BOOK=1 # only when the agent is allowed to book
export TRG_OT_THROTTLE_RATE=0.5 # OpenTable WAF-friendly default
export TRG_OT_CACHE_TTL=3m # 1m–24h
# Optional Tock CVC (avoid prompting on stderr):
export TRG_TOCK_CVC=<cvc>
Estimated time to first success: ~15 min
Dependencies
Minimum runtime: Node.js (or pre-built binary for macOS Apple Silicon / Windows); Chrome/Chromium required for Tock booking
Distribution
- Repository
- https://github.com/mvanhorn/printing-press-library
- License
- MIT