agentsclimarketplace

Restaurant finder

Skill clairem0/technically-curious-skills/travel/restaurant-finder

Find and book restaurant reservations. Discovers top-rated restaurants via Google Maps, checks availability in parallel via Firecrawl, and books via Chrome MCP. Use when the user says "find a restaurant", "book a reservation", "check availability", "find me a table", or mentions OpenTable/Resy/Tock.From its SKILL.md

Install
npx -y skills add clairem0/technically-curious-skills --skill restaurant-finder

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.0 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

Restaurant Finder

Discover restaurants, scan availability fast, book interactively.

Config: Load config.md for personal details (name, email, phone for booking forms). Platform reference: See references/booking-platforms.md for per-platform form-filling notes and Chrome MCP extraction scripts.

Connectors

PhaseToolWhy
Discover restaurantsRube (Google Maps)Reliable ratings, location-aware
Scan availabilityFirecrawlParallel across all date × restaurant combos
Scan availability (fallback)Chrome MCPWhen Firecrawl credits exhausted — sequential but free
BookChrome MCPInteractive — click slots, handle seating, fill forms, confirm

Workflow

Step 1: Gather Details

Parse from the user's message. Only ask if critical info is missing:

InputRequired?Default
Restaurant(s) OR locationYes
Date(s)Yes
Party sizeYes2
TimeNo6:00–8:00 PM window
CuisineNoAny
Special requestsNoNone

Two modes:

  • Specific restaurants named → skip discovery, go straight to availability scan (Step 3)
  • Location/vibe only → run discovery first (Step 2)

Step 2: Discover Restaurants (Skip if restaurants specified)

Use Rube to search Google Maps for top-rated restaurants near the location.

Search with: location, radius (~1 mile), type: restaurant, minimum rating 4.3, cuisine keyword if specified.

Two location anchors (from + to): Run both searches in parallel. Label results by anchor.

Present top 10 sorted by rating before proceeding:

Top-rated near [location]:

1. [Name] — [rating] [cuisine] [address]
2. ...

Which should I check for availability?

Fallback: If Google Maps isn't connected in Rube, use Firecrawl or Exa to search for restaurants, or Chrome MCP to search Google Maps manually.

Step 3: Scan Availability

Try Firecrawl first (fast, parallel). If credits exhausted, fall back to Chrome MCP (sequential but free).

Firecrawl Approach (Primary)

Fire all date × restaurant combinations in parallel — one scrape per combo, all in a single message.

Credit cost: Each scrape with waitFor costs ~5 Firecrawl credits. A 2-restaurant × 3-date search = 30 credits.

OpenTable search URL (works as both platform detection and availability scan):

https://www.opentable.com/s?covers={party_size}&dateTime={YYYY-MM-DD}T{HH:MM}&term={restaurant_name}+{city}

If the restaurant appears in results → it's on OpenTable. If not → try Resy/Tock.

Use JSON extraction with a schema that captures restaurant name, available times, and booking URL. Set waitFor: 5000 for JavaScript rendering.

Resy — SPA, direct restaurant URLs are unreliable. Scrape city listing page (resy.com/cities/{city-code}) in markdown format with waitFor: 5000 and search for the restaurant name.

Tock — direct pages usually render: exploretock.com/{restaurant-slug}

If Firecrawl returns empty: Increase waitFor to 8000–10000ms, try markdown format, or fall back to Chrome MCP.

Chrome MCP Fallback

Sequential (one page at a time) but reliable and free. Navigate to each OpenTable search URL and extract availability with evaluate_script. See references/booking-platforms.md for the extraction script.

Step 4: Present Results

# Reservations for [Party Size]
## [Date range] around [Target Time]

### [Restaurant Name]

| Date | Available Times | Notes |
|------|----------------|-------|
| **Fri 4/3** | 6:15 PM, 6:30 PM, 6:45 PM | On target |
| **Sat 4/4** | 9:00 PM, 9:15 PM | Late only |
| **Sun 4/5** | No availability | Fully booked |

### Bottom line
[Quick recommendation — best match to what the user asked for]

Sort: near-target availability first, then late/early, then fully booked, then phone-only.

Step 5: Book via Chrome MCP

Once the user selects a restaurant + date + time:

  1. Navigate to the search results page (NOT direct restaurant URLs — some 404): https://www.opentable.com/s?covers={n}&dateTime={date}T{time}&term={restaurant}+{city}
  2. Click the target time slot via evaluate_script
  3. Handle seating options if they appear (bar, dining room, patio) — present choices and wait
  4. Fill personal details from config.md using the React-aware value setter (see references/booking-platforms.md)
  5. Opt out of marketing — uncheck email/SMS opt-ins
  6. Confirm before submitting — show restaurant, date, time, party size, seating type. Only proceed after explicit approval.
  7. Submit and capture confirmation number

Step 6: Save to Favorites (Optional)

After a successful booking, offer to save the restaurant for future trips.

Edge Cases

ScenarioResponse
No availability at target timeCheck ±30 min, then ±1 hr. If still nothing, ask to expand.
Large parties (6+)Most platforms cap at 6 online. Note to call directly.
Restaurant not on any platformInclude with phone: "Not on online booking — call [phone]."
Firecrawl credits exhaustedSwitch to Chrome MCP fallback. Note it'll be slower.
Auth modal during bookingAsk user to log in manually in the browser, then retry.

Do / Don't

Do:

  • Fire all Firecrawl scrapes in parallel (one per date × restaurant combo)
  • Use OpenTable search URLs — they double as platform detection AND availability scan
  • Use evaluate_script over click/fill for Chrome MCP interactions
  • Book from the search results page (click time slot → booking flow)
  • Take snapshots before and after form filling
  • Uncheck marketing opt-ins

Don't:

  • Construct direct Resy restaurant URLs (SPA — they 404)
  • Navigate to opentable.com/r/{slug} for booking (can 404 — use search page instead)
  • Submit without explicit confirmation
  • Skip snapshot verification before submitting

Customization Notes

  • Discovery method — Rube (Google Maps via Composio) or Firecrawl/Exa search. The key requirement is rated restaurant search within a radius.
  • Booking platforms — The skill covers OpenTable, Resy, and Tock. Add platforms by extending the references file.
  • Form fill details — Edit config.md with your name, email, and phone for form autofill.
  • Browser tool — Chrome DevTools MCP is used for booking. The AI assistant Chrome profile should be logged into your booking platforms.

Keep looking

Skills are one crate of 326,679. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.