Taste Overlap
Plans a shared evening for two people: places both would enjoy, ranked by Qloo's taste graph.
- 01Stars
- 0
- 02Version
- 0.1.0
- 03License
- MIT
- 04Review
- Passed
- Language
- JavaScript
- Last commit
- 5h ago
- Forks
- 0
- Open issues
- 0
- Registry update
- Oct 16, 2026
Connect
remote$claude mcp add --transport http taste-overlap https://taste-overlap.onrender.com/mcpHeaders
Nothing to configure — it works as is.
Security review
Review passedReviewed 10m ago.
- tools
- 1 tools scanned
- metadata
- scanned
No findings.
Tools
1plan_shared_evening
Given a city and a few favourites for each of two people (artists, films, shows, books, brands), returns up to six places both would enjoy, ranked by Qloo's taste graph, each with the reason and in evening order (something to do, food, a drink). Picks marked basis=combined come from Qloo's list for the combined taste because the two personal top-20 lists did not overlap enough.
Taste Overlap
Two people, a few favourites each (artists, films, shows, books, places). Qloo's taste graph ranks places in your city for person A, for person B and for both together. Taste Overlap keeps only the places that rank well for both (harmonic mean of the two affinities, so one-sided picks drop out), explains each pick with the shared taste tags, and orders them into an evening: something to do, food, then a drink.
Without Qloo there is nothing to show: the overlap is computed from Qloo's per-person affinities, not from an LLM guess.
Run
Needs Node.js 22.19+ and the official Qloo harness (the supported event surface):
npm install --global @qloo/qloo-harness # qloo --version >= 0.1.26
export QLOO_API_KEY=... # the hackathon key (or: qloo setup --qloo)
export QLOO_BASE_URL=https://hackathon.api.qloo.com
export QLOO_TRUSTED_BASE_URL=https://hackathon.api.qloo.com # the harness only sends a key to an approved endpoint
npm start # http://localhost:8787
Demo without credentials: QLOO_TRANSPORT=demo npm start replays a real recorded run (demo/vienna.json, 11 qloo exec calls) through the same code. Only that example works (Vienna; Radiohead + Wes Anderson / Taylor Swift + Studio Ghibli); other inputs return an error instead of invented places.
Optional: QLOO_TRANSPORT=rest with QLOO_API_KEY uses the direct REST client (src/qloo.js) instead; QLOO_BASE, PORT.
Use it from an agent (MCP tool)
Remote, nothing to install: the live demo also speaks MCP at https://taste-overlap.onrender.com/mcp (streamable HTTP, JSON answers). In claude.ai or the Claude app: Settings → Connectors → Add custom connector and paste that URL. Tool calls share the demo's per-visitor and daily limits.
Local (stdio):
Taste Overlap is also an agent tool: mcp-server.js is a dependency-free MCP stdio server with one tool, plan_shared_evening (city, person_a[], person_b[]). It returns the explained evening as text plus structured content, and any MCP client can call it:
claude mcp add taste-overlap -- node /path/to/taste-overlap/mcp-server.js # Claude Code
# or in claude_desktop_config.json / Cursor: {"command": "node", "args": ["/path/to/mcp-server.js"],
# "env": {"QLOO_API_KEY": "...", "QLOO_BASE_URL": "https://hackathon.api.qloo.com", "QLOO_TRUSTED_BASE_URL": "https://hackathon.api.qloo.com"}}
Without a key, QLOO_TRANSPORT=demo makes the tool answer the recorded Vienna example.
Test
node --test
How it works
src/mcp.js(default transport) - one long-runningqloo mcpprocess (the harness's canonical MCP adapter) serves every workflow asqloo_<op>; on a small host this takes ~0.5-1.2 s per call instead of >30 s for a freshqloo exec.QLOO_TRANSPORT=execswitches back to oneqloo execper call.src/harness.js- the Qloo workflows:recommend(target_type: place, the favourites assignals,filter_location: the city) for A, B and both;entity_tagsfor the tags that explain each pick. The harness resolves the names and validates input before calling Qloo; when a name is ambiguous (status: needs_input) the client takes Qloo's top-ranked non-album candidate, retries once with its entity id and returns that choice. Workflow names are fixed, user text goes in on stdin.- Each pick's reason comes from Qloo's per-result
explainability(signal.interests.entities): which favourites drove the place and by how much. src/demo.js- records and replays real harness envelopes for the credential-free demo.src/qloo.js(fallback) - resolves each favourite with/search, ranks places with/v2/insights(filter.type=urn:entity:place,signal.interests.entities,filter.location.query). The key is sent as a header from the server and never reaches the browser.src/overlap.js- pure logic: shared picks, reasons, evening order (unit-tested). Qloo returns at most 20 places per call, and two tastes can share none of them (measured: Berlin, Daft Punk + Christopher Nolan vs Adele + Pixar). Real overlaps come first; the rest is topped up from the joint list and labelled "combined taste". A place scored one-sided in both personal lists never comes back that way.src/plan.js- three Qloo calls (A, B, both) -> overlap -> explained plan.server.js- dependency-free Node server, servespublic/andPOST /api/plan.mcp-server.js- the same plan as an MCP tool for agents;src/transport.jspicks the Qloo transport for both.
License
MIT
From the server's repository — third-party content, read it before running anything it suggests.
More in Travel & maps
Rising Shores Singapore
io.github.mazeasdamien
Sea-level rise in Singapore: when a place or address floods, areas and people affected, IPCC AR6.
Airport Weather & Delays (METAR, TAF, FAA)
io.github.pcp183
Airport METAR/TAF weather and FAA delay status by ICAO/IATA code, from NOAA and FAA. x402.
Weather Data MCP Server
io.github.dgahagan
17 weather tools, no API keys: forecasts, alerts, air quality, marine, radar, lightning, wildfires
mcp-server
io.github.sthan-io
US address verification, parsing, autocomplete, geocoding, and IP geolocation APIs.
entityindex.ai
ai.entityindex
Verified hotels in Andorra for AI agents: search by area, spa, pets, ski-in, family; official links.
mcp
com.thehikingworld.www
Sourced trail facts. Tiers verified-official, reported-secondary, or unverified. Gaps stay empty.
Listing from the official MCP Registry · repository facts from GitHub, 15m ago.