openclaw/skills/opentable/SKILL.md
Search restaurants, check availability, and book reservations on OpenTable. Use when asked about OpenTable reservations, restaurant availability on OpenTable, booking a table via OpenTable, or searching for restaurants by cuisine/location.
npx skillsauth add Dbochman/dotfiles opentableInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Two methods are available for OpenTable bookings. Prefer Pinchtab (browser automation) for search-based bookings. Fall back to the opentable CLI when you have a specific restaurant ID.
The opentable-book.sh script uses Pinchtab (headless browser automation) to search OpenTable, select a timeslot, and complete the reservation using the card on file.
bash ~/.openclaw/workspace/scripts/opentable-book.sh "<search_term>" <date> [time] [party_size]
# Search by cuisine + area
bash ~/.openclaw/workspace/scripts/opentable-book.sh "Italian brookline newton" 2026-04-11 19:00 2
# Broader search
bash ~/.openclaw/workspace/scripts/opentable-book.sh "sushi south end boston" 2026-05-15 20:00 2
{"success": true, "restaurant": "Carbone", "date": "Fri, Apr 11", "time": "7:00 PM", "url": "..."}
{"success": false, "error": "No available timeslots found for search: ..."}
Use the opentable CLI when you already have a specific restaurant ID (from an OpenTable URL). Auth uses a bearer token from browser cookies stored in 1Password.
opentable info 8033
opentable info 8033 --json
Restaurant IDs come from OpenTable URLs: opentable.com/r/carbone-new-york?rid=8033 -> ID is 8033.
opentable availability <restaurant_id> 2026-03-20 2
opentable availability <restaurant_id> 2026-03-20 2 --time 20:00
Date format is YYYY-MM-DD, last positional argument is party size. Default search time is 19:00.
opentable book <restaurant_id> 2026-03-20 19:00 2
opentable book <restaurant_id> 2026-03-20 19:00 2 --dry-run
Always use --dry-run first to preview.
opentable snipe <restaurant_id> 2026-03-20 2 --time 19:00
opentable snipe <restaurant_id> 2026-03-20 2 --time 19:00 --confirm
opentable snipe <restaurant_id> 2026-03-20 2 --time 20:00 --duration 3600 --confirm
--json — Machine-readable JSON output--dry-run — Stop before bookingbash ~/.openclaw/workspace/scripts/opentable-book.sh "cuisine area" DATE TIME PARTY?rid=8033)opentable availability 8033 2026-03-20 2opentable book 8033 2026-03-20 19:00 2 --dry-runopentable book 8033 2026-03-20 19:00 2--dry-run first--confirm — without it, snipe only reports matchesAuth tokens (~14 days) are stored at ~/.cache/openclaw-gateway/opentable_auth_token.
bash ~/.openclaw/bin/opentable-refresh-token.sh
Fully automated: Pinchtab navigates to OT login, enters [email protected], reads the 2FA code from Gmail via GWS, enters it, extracts the authCke cookie, and updates the CLI token cache. No manual steps.
How it works:
opentable.com/authenticate/start (headless)[email protected]gws gmail users messages list --account [email protected])authCke cookie atk value from document.cookie~/.cache/openclaw-gateway/opentable_auth_tokenRequirements: Pinchtab, GWS with [email protected] authenticated, secrets-cache sourced.
atk UUID valueecho "<atk_value>" > ~/.cache/openclaw-gateway/opentable_auth_tokenIf Chrome is already logged in, you can extract the cookie programmatically:
--remote-debugging-port=19222 --user-data-dir=/tmp/chrome-ot (copy Default profile first — Chrome rejects CDP on the real data dir)Network.getCookies via WebSocket to read authCkeWhen target timeslots are fully booked, use snipe mode to monitor for cancellations:
# Monitor one date (reports only)
opentable snipe <restaurant_id> 2026-04-16 4 --time 19:00
# Auto-book when slot opens
opentable snipe <restaurant_id> 2026-04-16 4 --time 19:00 --duration 86400 --confirm
# Monitor multiple dates (run in background)
for DATE in 2026-04-16 2026-04-17 2026-04-18; do
nohup opentable snipe <id> "$DATE" 4 --time 19:00 --duration 86400 --confirm \
> "/tmp/snipe-$DATE.log" 2>&1 &
done
--duration 86400 = monitor for 24 hours--confirm = auto-book if a matching slot appears (without it, only reports)tail /tmp/snipe-*.logpgrep -af "opentable snipe"pkill -f "opentable snipe"To get notified when a snipe succeeds or expires, run a monitor script that checks logs and sends an iMessage via BlueBubbles:
# Checks every 60s, sends iMessage on success or expiry
nohup bash /tmp/snipe-monitor.sh > /tmp/snipe-monitor.log 2>&1 &
~/.openclaw/workspace/scripts/opentable-book.sh~/.openclaw/bin/opentable-refresh-token.sh~/.cache/openclaw-gateway/opentable_auth_token~/.openclaw/logs/opentable.logmobile-api.opentable.com) — may break without notice[email protected] (2FA via email, readable by GWS)1267699development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".