A concierge agent is the clearest demo of why freshness matters. The guest asks once, expects a real answer — not a stale restaurant listing from six months ago. Loop gives the agent live search, a verify step before it commits, and a feedback channel after the guest returns. Every interaction improves the data.
The agent calls these in sequence. search() narrows the field. verify() checks the winner before commitment. report() closes the loop after the guest returns.
// Guest: "I'd like a romantic outdoor dinner, vegetarian-friendly" search({ query: "romantic outdoor dinner vegetarian", location: "Kreuzberg, Berlin" }) // Loop returns up to 8 ranked results: // { // result_id: "m_1042", // name: "Café Morgenrot", // cuisine: ["vegetarian", "international"], // price_band: "$$", // outdoor_seating: true, // confidence: 0.91, // observed_at: "2026-06-11T20:14:00Z", // availability: { inferred: true, label: "likely_open_now" } // }
// Before confirming to the guest: verify({ result_id: "m_1042", claim: "open for dinner tonight" }) // Loop re-checks the record live: // { // verified: true, // latest_observation: { open: true, observed_at: "2026-06-12T18:02:00Z" }, // confidence: 0.94 // }
// Guest returns after dinner: // "The food was great — exactly as described" report({ result_token: "<token from get_details>", outcome: "correct" }) // Loop mutates the record's confidence score. // outcome options: correct · wrong · booked · closed · other
| Without Loop | With Loop |
|---|---|
| Static place data, no freshness timestamp | observed_at on every record — agent knows how old the data is |
| Hours pulled from Google Places (stale at build time) | verify() re-checks the specific record live before the guest goes |
| No way to know if the recommendation was correct | report() closes the loop — wrong info gets a lower confidence score |
| Each agent session is isolated — no shared learning | Every report() mutates the shared DB — all future agents benefit |
availability: true — no label, no caveat | availability: { inferred: true, label: 'likely_open_now' } — honest |
Yes. The agent calls search()with the guest's preferences in natural language. Loop returns typed results with cuisine, price band, outdoor seating, vegan/vegetarian flags, confidence score, and an observed_at timestamp. No Overpass QL, no tag parsing.
Before the agent confirms a recommendation, it calls verify(result_id, claim). Loop re-checks the record live and returns a latest_observation with a freshness timestamp. Search results always label availability as inferred: true — verify() upgrades it to observed.
After the guest returns, the agent calls report(result_token, outcome) with correct, closed, wrong, booked, or other. This mutates the record's confidence score in Loop's DB — future agents get better data from every guest interaction.
Any platform that supports MCP: Claude Desktop, Flowise, Langflow, n8n, Make, Zapier, Cursor, VS Code, and any OpenAI-compatible agent via the REST API at api.stayinloop.dev/v1. Add https://stayinloop.dev/mcp as the server URL — all four tools appear automatically.
Add https://stayinloop.dev/mcp to your agent platform. All four Loop tools — search, get_details, verify, report — appear automatically. Free tier, no API key required.