tools/yelp-search/SKILL.md
Search Yelp for local businesses, get contact info, ratings, and hours. Use when finding services (cleaners, groomers, restaurants, etc.), looking up business phone numbers to text, or checking ratings before booking. Triggers on queries about finding businesses, restaurants, services, or "look up on Yelp".
npx skillsauth add letta-ai/skills yelp-searchInstall 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.
Search for local businesses on Yelp to find services, get contact information, check ratings, and retrieve hours of operation.
Add to your .env file:
YELP_API_KEY=your_api_key_here
Only needed if you want to extract review text (slow, ~30-60s per request).
Install dependencies:
uv add browser-use playwright langchain-openai
uv run playwright install chromium
Add to .env:
OPENAI_API_KEY=your_openai_key_here
Note: Review extraction uses browser-use to search DuckDuckGo (since Yelp blocks direct scraping). For most use cases, the rating + review_count from the API is sufficient.
All scripts are in tools/yelp-search/scripts/ and should be run with uv run python.
uv run python tools/yelp-search/scripts/search.py "search term" --location "City, State"
Options:
| Flag | Description | Example |
|------|-------------|---------|
| --location, -l | City, address, or zip | "San Francisco" or "94123" |
| --latitude/--longitude | GPS coordinates | --latitude 37.78 --longitude -122.41 |
| --limit, -n | Number of results (default: 5) | -n 10 |
| --sort-by | Sort order | rating, distance, review_count, best_match |
| --price | Price filter (1-4) | --price 1,2 for $ and $$ only |
| --json | Output raw JSON | |
Examples:
# Find top-rated dog groomers
uv run python tools/yelp-search/scripts/search.py "dog groomer" -l "San Francisco" --sort-by rating
# Find cheap restaurants nearby
uv run python tools/yelp-search/scripts/search.py "restaurants" -l "94123" --price 1,2 --sort-by distance
# Search near a specific address
uv run python tools/yelp-search/scripts/search.py "laundry pickup" -l "123 Main St, San Francisco"
uv run python tools/yelp-search/scripts/details.py "business-alias"
The business alias is in the Yelp URL (e.g., the-laundry-corner-san-francisco).
uv run python tools/yelp-search/scripts/phone_search.py "+14155551234"
uv run python tools/yelp-search/scripts/get_reviews.py "Business Name" -l "City" -n 3
Note: Uses browser-use which is slow (~30-60s). Yelp blocks direct scraping, so it searches DuckDuckGo for cached reviews as a workaround.
uv run python tools/yelp-search/scripts/scrape_reviews.py "https://www.yelp.com/biz/business-alias" -n 5
Requires Browserbase credentials:
BROWSERBASE_API_KEY=your_key_here
BROWSERBASE_PROJECT_ID=your_project_id
Note: Uses Browserbase with proxies to bypass Yelp's CAPTCHA. More reliable than get_reviews.py but requires a Browserbase account.
The API provides rating + review_count which is usually sufficient:
| Rating | Review Count | Interpretation | |--------|--------------|----------------| | 4.5+ | 50+ | Excellent, reliable data | | 4.5+ | <20 | Promising but limited data | | 4.0-4.4 | 100+ | Good, well-established | | <4.0 | any | Proceed with caution |
When looking for services with specific requirements (weekend hours, pickup/delivery, etc.):
--sort-by rating to get best options"laundry pickup" not just "laundry"-l "123 Main St, City"rating first, then check distance on resultsreview_count - high ratings with few reviews may be unreliableEach business result includes:
| Feature | Status | Notes | |---------|--------|-------| | Business search | ✅ Works | Fast, reliable | | Business details | ✅ Works | Includes hours | | Phone lookup | ✅ Works | Reverse search | | Review text (API) | ❌ Paid only | Requires enterprise tier | | Review text (scraping) | ⚠️ Slow | browser-use workaround via DuckDuckGo |
tools
Test any GUI app or change on a Daytona Windows remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Linux, use remote-desktop-testing-linux.
tools
Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Windows, use remote-desktop-testing-windows.
testing
Configures Letta agents' own runtime behavior, including model, context window, system prompt, reasoning, conversation overrides, compaction settings, and compaction prompts. Use when an agent or user asks to self-modify, tune summarization/compaction, change identity/system instructions, adjust model settings, or test conversation-scoped overrides.
development
Sets Letta Desktop and Letta Code agent profile images by writing profile.png into an agent MemFS repository. Use when the user asks to add, change, generate, or fix an agent avatar, profile picture, profile image, or Desktop agent photo.