Inspiration
City guides usually ask everyone the same questions: what they enjoy, how they move around, what their budget is, and what kind of day they want. We imagined a better experience where a browser agent can share only the relevant preferences, while the website keeps the personalization visible, optional, and reversible.
What it does
City for You is an interactive Santiago map that collaborates with browser agents through WebMCP.
The agent can inspect the map’s capabilities and propose a personalization using selected interests, mobility, budget, and an optional note. The website shows a preview before changing anything. After approval, it filters 80 curated places across 17 interests and creates a simple three-stop itinerary called “Your day in Santiago.”
Each recommendation includes a neighborhood, explanation, matched interests, suggested time, and contextual photograph. Users can ask the agent to explain the active personalization or reset the map at any time.
Three fictional profiles also make the experience testable without a WebMCP client.
How we built it
We built City for You with TypeScript, React, Vinext, Leaflet, OpenStreetMap, and OpenAI Sites.
The website registers five typed tools using document.modelContext.registerTool:
get_map_capabilitiespreview_personalizationapply_personalizationexplain_personalizationreset_personalization
Every tool has an explicit input schema and runtime validation. Previewed preferences are stored separately from the active map, preserving the approval step.
The itinerary uses a deliberately simple and inspectable ranking. It scores featured places by how many approved interests they match, gives free places a small boost for low-budget profiles, and avoids repeating neighborhoods when possible.
Codex helped us shape the concept, define the privacy boundary, implement and debug the WebMCP flow, expand the place catalog, build the responsive interface, write automated checks, and deploy the public site.
Challenges we ran into
The main challenge was designing personalization without suggesting that the website can directly read an agent’s memory. We solved this by accepting only a narrow, validated preference object and clearly showing what the site received.
We also had to keep preview and active state separate so an agent could not unintentionally change the experience before user approval.
Another challenge was making the result feel meaningfully personalized without introducing an opaque recommendation system. We chose a small deterministic ranking that is easy to explain and verify.
Finally, WebMCP is still an emerging browser capability, so we built fictional sample profiles as a reliable fallback for demos and unsupported clients.
Accomplishments that we're proud of
We are proud that City for You demonstrates a complete WebMCP collaboration loop rather than a single agent-triggered action.
The final product includes:
- Five working WebMCP tools
- A visible preview-before-apply flow
- 80 Santiago places across 17 interests
- Lifestyle-specific categories such as vegan, coffee, wellness, markets, pets, and live music
- A ranked three-stop day plan
- Explain and reset capabilities
- A responsive public deployment
- A complete fallback experience without an agent
Most importantly, personalization remains understandable and reversible throughout the experience.
What we learned
We learned that WebMCP works best when the website and agent have clearly separated responsibilities.
The agent selects relevant context. The website validates it and owns the product logic. The person remains in control of whether the proposed change is applied.
We also learned that preview, explanation, and reset are not secondary privacy features. They are essential parts of a trustworthy personalized experience.
On the implementation side, we learned the importance of explicit tool schemas, runtime validation, lifecycle-safe tool registration, and deterministic behavior that can be tested without relying on model output.
What's next for City for You
Next, we would connect the map to live place data, opening hours, events, routing, accessibility details, and travel times.
We would also improve the ranking with distance, mobility, time of day, weather, and explicit user feedback while keeping every recommendation explainable.
Longer term, City for You could expand beyond Santiago and demonstrate the same consent-based personalization pattern across travel, commerce, education, and other agent-enabled websites.
Built With
- chatgpt
- codex
- leaflet.js
- next.js
- openstreetmap
- react
- sites
- typescript
- vinext
- vite
- webmcp


Log in or sign up for Devpost to join the conversation.