Loop
How it worksThe loopWhy LoopPricingDocs
use case AI travel planner

Give your travel agent
real restaurant data.

Travel planners that recommend restaurants from static training data get hours wrong, miss closures, and invent details. Loop gives your agent a live local business layer: search by cuisine and filters, verify hours before recommending, and report outcomes to improve future itineraries.

four tools, one itinerary loop
Step 1search()

Find restaurants matching the traveler's preferences — natural language, typed filters

{
  "name": "search",
  "arguments": {
    "query": "outdoor terrace, vegetarian options, dinner",
    "location": "Kreuzberg, Berlin",
    "filters": {
      "outdoor_seating": true,
      "vegetarian": true
    }
  }
}

// → typed results:
// {
//   "result_id": "osm_node_12345678",
//   "name": "Café Kimchi",
//   "cuisine": ["korean", "fusion"],
//   "price_band": "€€",
//   "outdoor_seating": true,
//   "vegetarian": true,
//   "observed_at": "2026-06-12T...",
//   "confidence": 0.88,
//   "cross_source_confirmed": true,
//   "availability": { "inferred": true, "status": "likely_open_now" }
// }
Step 2get_details()

Fetch full record + result_token before verify or report

{
  "name": "get_details",
  "arguments": {
    "result_id": "osm_node_12345678"
  }
}

// → same as search result plus:
// {
//   "opening_hours": "Mo-Su 12:00-23:00",
//   "phone": "+49 30 ...",
//   "website": "https://...",
//   "result_token": "eyJhbGci..."  // required for report()
// }
Step 3verify()

Re-check live before committing to the recommendation

{
  "name": "verify",
  "arguments": {
    "result_id": "osm_node_12345678",
    "claim": "open for dinner on Friday with outdoor seating"
  }
}

// → re-checked live:
// {
//   "result_id": "osm_node_12345678",
//   "name": "Café Kimchi",
//   "claim": "open for dinner on Friday with outdoor seating",
//   "latest_observation": {
//     "type": "recheck",
//     "value": {
//       "present": true,
//       "opening_hours": "Mo-Su 12:00-23:00"
//     },
//     "source": "osm_recheck",
//     "confidence": 0.85,
//     "observed_at": "2026-06-12T19:45:00Z"
//   },
//   "record_confidence": 0.91,
//   "availability": { "inferred": true, "status": "likely_open_now" },
//   "note": "Re-verified live against OSM — observed_at reflects this check."
// }
Step 4report()

Close the loop after the traveler visits — improves future itineraries

// result_token comes from get_details(), valid 30 minutes
{
  "name": "report",
  "arguments": {
    "result_token": "eyJhbGci...",
    "outcome": "correct"
  }
}

// outcome: "correct" (data matched reality),
//          "booked" (reservation placed),
//          "closed" (was closed when traveler arrived),
//          "wrong" (hours, cuisine, or details were off),
//          "other"
honest framing

Loop does not book, review, or write itineraries.

Loop is the data and verification layer. It does not make reservations (that’s your booking tool), write trip prose (that’s your LLM), or rate restaurants (there are no star scores). What Loop gives agents is: a typed structured record for each restaurant, a confidence score derived from source completeness, a freshness timestamp from real observations, and a live re-check tool for the moment before committing.

Current coverage: restaurants and salons in Kreuzberg, Berlin. Out-of-coverage queries return an explicit structured error — never empty results or fabricated places.

frequently asked questions
What location data does Loop currently cover?
Loop currently covers restaurants and salons in Kreuzberg, Berlin — 582 merchant records from OpenStreetMap. The 424 restaurants are 312 cross-confirmed with Foursquare OS Places; the 158 salons are OpenStreetMap single-source. Coverage expands by demand: locations and verticals with higher search signal get prioritized. Out-of-coverage queries return an explicit honest error with a coverage hint rather than empty or fabricated results.
Can I use Loop in a multi-step travel agent (LangChain, LlamaIndex, n8n)?
Yes. Loop exposes an MCP endpoint at https://stayinloop.dev/mcp — any MCP-compatible client (Claude Desktop, Cursor, Windsurf, VS Code, LangChain, LlamaIndex) can connect with one URL. Loop also provides a REST API at api.stayinloop.dev/v1 for frameworks that don't support MCP. Both surfaces expose the same four tools: search, get_details, verify, report.
Does Loop recommend specific restaurants or rank them?
Loop returns structured data — it does not write prose recommendations. Ranking and recommendation prose is your agent's job. Loop gives the agent the typed schema, freshness signals, and confidence scores to make that recommendation grounded in real data rather than hallucinated hours or stale tags.

Add Loop to your travel agent.

One MCP endpoint. Four tools. Real-time local business data for AI agents. https://stayinloop.dev/mcp — free tier, no credit card.