RestoSignals - Restaurant Opening Leads MCP
Find US restaurants and bars 1-6 months before they open. Fuses public liquor-license, food-permit and new-business filings into scored venues with owner contact. Tools: coverage, new_openings, venue_signals, watch_area. Free tier.
託管 MCP 伺服器
npx add-mcp 'https://api.restosignals.com/mcp'可安裝到 Claude Code、Codex、Cursor 等客戶端
文件
The API for venues about to open
RestoAPI is the self-serve, technical surface for RestoSignals: a hosted MCP server, a REST endpoint, and an installable skill — one scored /v1/openings call, 1 credit = 1 returned lead, empty results free. Start free, pay as you go. No subscription needed.
Free key
$0
no card
Top-up
$4
1,000 leads
$0.004 / lead
Top-up
$18
5,000 leads
best rate · never expire
Metered per returned lead — filters that return nothing cost nothing. Packs never expire. Need the dashboard, contacts and territory tiers instead? See RestoSignals plans (Pro bundles full API access).
1
Connect the MCP server
The server speaks Model Context Protocol (JSON-RPC 2.0) at https://api.restosignals.com/mcp. Drop this block into any MCP client and swap in your key:
{
"mcpServers": {
"restosignals": {
"url": "https://api.restosignals.com/mcp",
"headers": { "Authorization": "Bearer pk_YOUR_KEY" }
}
}
}
Claude Desktop / Code
Add to your MCP config (claude_desktop_config.json, or via the Claude Code MCP settings):
Cursor
Settings → MCP → Add server, same JSON block.
n8n / LangChain / custom
Point any MCP-over-HTTP client at the URL with the Bearer header, or call the JSON-RPC endpoint directly at https://api.restosignals.com/mcp.
2
The tools
Four tools, same wallet as REST. Always call coverage first so you query a state that actually has data.
Live states + how many scored venues (and hot leads, score ≥ 80) each holds. Call this FIRST so you never query a state with no data.
{ /* no arguments */ }
{
"states": [
{ "state": "NY", "venues": 812, "hot_leads": 41 },
{ "state": "IL", "venues": 190, "hot_leads": 6 },
{ "state": "TX", "venues": 5300, "hot_leads": 0 }
]
}
new_openings 1 / lead requires: state
Scored, fused venue leads for a state, ranked by opening_score. signal_types are liquor / food_permit / business.
{
"state": "NY", // required, 2-letter
"min_score": 40, // default 30
"limit": 10 // default 10, max 100
}
{
"count": 1,
"openings": [
{ "id": 4412, "business_name": "DINER 24 BROADWAY NYC LLC.",
"city": "New York", "state": "NY", "opening_score": 100,
"status": "opening", "signal_types": ["business","food_permit","liquor"] }
]
}
The raw underlying signals (liquor / permit / filing rows) that were fused into one venue — show your work.
{ "venue_id": 4412 }
{
"venue": { "id": 4412, "business_name": "DINER 24 …", "opening_score": 100, "…": "…" },
"signals": [
{ "source": "ny_sla", "signal_type": "liquor", "status": "pending", "…": "…" },
{ "source": "nyc_permits", "signal_type": "food_permit", "…": "…" }
]
}
Register a webhook that fires when a new matching venue surfaces in an area.
{
"url": "https://you.example.com/hook",
"criteria": { "state": "NY", "city": "Brooklyn",
"signal_type": "liquor", "min_opening_score": 60 }
}
{ "webhook_id": 7, "url": "…", "criteria": {…},
"note": "New matching venues will be POSTed here on the daily run." }
3
Or install the skill
A packaged Agent Skill that teaches Claude exactly when and how to use RestoSignals — the coverage-first rule, the real signal_types, and honest coverage so the agent never promises a state we don't have.
- Claude Code — drop SKILL.md into.claude/skills/restosignals/ in your project (or ~/.claude/skills/ for all projects).
- claude.ai — add it as a custom skill in your workspace's skill settings.
- Any agent — paste its contents into your system prompt / tool instructions.
4
Recipes
“Find restaurants opening soon in New York, best first”
coverage → new_openings(state=NY, min_score=40) → present name, city, score, signal_types.
“Only the strongest, multi-signal leads”
new_openings(min_score=80). A fused venue always outranks any single-signal one.
“Give me Chicago bars specifically”
new_openings(state=IL) then filter to signal_types including 'liquor' and city Chicago.
“Alert me when a new bar files in Brooklyn”
watch_area(url=<your endpoint>, criteria={state:NY, city:Brooklyn, signal_type:liquor}). Free.
“Why is this venue scored 100?”
venue_signals(venue_id) → show the underlying liquor / permit / filing rows.
“Export a whole state for the CRM”
Use REST GET /v1/export?state=NY&format=csv for a signed CSV URL (1 credit/row).
Prefer straight REST?
# 1) mint a trial key
curl -s -X POST https://api.restosignals.com/v1/register # -> pk_...
# 2) pull scored leads (see /docs for all params)
curl -s "https://api.restosignals.com/v1/openings?state=NY&min_opening_score=40&limit=5" \
-H "X-API-Key: pk_..."
Full endpoint reference, params and response fields are in the API docs. Machine-readable summary for crawlers: /llms.txt.
Honest by design. Live states are only what coverage returns (NY, TX, IL, OR, CO, WA, CA today). We give you the venue and its signals — not owner contact details yet. Build agents that say so.