RestoAPI · for developers & AI agents
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.
Developer pricing · pay as you go
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).
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" }
}
}
} Add to your MCP config (claude_desktop_config.json, or via the Claude Code MCP settings):
Settings → MCP → Add server, same JSON block.
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.
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 }
]
}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": 25 // default 25, 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." }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.
↓ Download SKILL.md# 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" \
-H "X-API-Key: pk_..." Full endpoint reference, params and response fields are in the API docs. Machine-readable summary for crawlers: /llms.txt.