Static venue databases miss closures, changed hours, and new spots. Loop gives AI agents a real-time local business layer: search by intent, verify before recommending, and report outcomes to keep the data fresh.
Places databases go stale within weeks. Bars close, hours change, new spots open. An event discovery agent that trusts stale records will confidently recommend a venue that no longer exists. Loop’s verify() tool re-checks records on demand, and report() lets agents feed real-world outcomes back — so data quality improves with every recommendation.
const results = await mcp.search({
query: "rooftop bar with outdoor seating",
limit: 5
});
// returns: name, tags, address, confidence, observed_atOne free-text call returns venues ranked by relevance. Tags like outdoor_seating, vegan, or vegetarian let agents match user intent precisely.
const detail = await mcp.get_details({
result_id: results[0].result_id
});
// adds: opening_hours, phone, website, result_tokenget_details() returns a result_token valid for 30 minutes. Your agent needs this token to call report() after the user acts on the recommendation.
const checked = await mcp.verify({
result_id: results[0].result_id
});
// returns updated confidence + observed_atverify() triggers a real-time re-check of the venue. Use it before surfacing options to avoid sending users to a bar that closed last week.
await mcp.report({
result_token: detail.result_token,
outcome: "correct" // or: wrong | booked | closed | other
});After the user visits or books, report the outcome. Loop updates the venue's confidence score and freshness — your agent's recommendations improve with every interaction.
| Scenario | Without verify() | With verify() |
|---|---|---|
| Bar closed last month | Agent recommends it anyway | ✓verify() returns updated confidence; agent skips it |
| Hours changed for summer | Agent shows stale hours | ✓verify() refreshes observed_at; agent shows current hours |
| New outdoor terrace opened | Missed — not in old snapshot | ✓verify() picks up the update; outdoor_seating tag added |
| User reports wrong info | No feedback path — data stays wrong | ✓report("wrong") lowers confidence; future agents skip it |
Free-text queries work best when they describe the event context: 'wine bar for a date night', 'café with outdoor seating for a work call', 'Turkish restaurant for a group dinner', or 'late-night bar with live music'. Loop's search() ranks by semantic relevance, so natural language queries return better results than keyword lists.
Loop returns a structured error with a suggested_action field when the query falls outside the covered area. The agent should surface this to the user explicitly rather than returning empty results silently. Example: 'I can only find venues in Kreuzberg Berlin right now — would you like recommendations there?'
result_token is an HMAC returned by get_details() that authorises a report() call. It expires after 30 minutes to prevent replay attacks. If the user takes longer than 30 minutes to visit a venue, call get_details() again to get a fresh token before reporting the outcome.
Yes. A common pattern is a finder agent that calls search() and surfaces options, and a verifier agent that calls verify() before the recommendation is sent. Both share the same MCP server at https://stayinloop.dev/mcp. See the AutoGen guide for a RoundRobinGroupChat example with finder and verifier agents.
Add https://stayinloop.dev/mcp to your MCP client, or call the REST API directly. Free tier, no credit card.