
TastePolicy
io.github.VictorCyberDevPublished by GitHub account VictorCyberDevv0.2.0Updated Nov 6, 2026
Qloo cultural evidence with ALLOW, ASK and REJECT boundaries for agent preference decisions.
Overview
Remote MCP server that adds Qloo cultural evidence and ALLOW/ASK/REJECT authority boundaries to an agent's preference-based recommendations.
- What you can do
- Evaluate whether an agent may act on a culturally matched recommendation, returning ALLOW, ASK, REJECT or UNAVAILABLE.
- Ground cultural identities and cross-domain candidates in Qloo search, entity and insight evidence.
- Keep cultural affinity separate from factual requirements, user rules and an action ceiling.
- Apply a subjective-action ladder from SUGGEST up to PRESENT_AS_SELECTED, asking when a request exceeds the person's saved limit.
- Support versioned rules, receipts, leases, revocation and signed proofs through the same evaluator.
- When to use it
- Use it when an assistant recommends places, media or other taste-driven options for a specific person and must not treat a strong match as permission to act. It suits agents that need an explicit, auditable boundary on how far they may go, and that want missing facts to produce a question rather than a guess.
- Requirements
- A remote endpoint at tastepolicy.vercel.app over streamable HTTP, with OAuth sign-in required. Self-hosting needs Node.js 24 and npm, a PostgreSQL database, a Qloo API key and related Qloo settings, plus auth and attestation secrets such as BETTER_AUTH_SECRET and TASTEPOLICY_ATTESTATION_KEY.
Installation
In SourceWeft
- Open TastePolicy in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.VictorCyberDev%2Ftastepolicy/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"tastepolicy": {
"type": "http",
"url": "https://tastepolicy.vercel.app/api/mcp"
}
}
}README
TastePolicy
AI that helps without replacing you.
TastePolicy is personal agency infrastructure for culturally intelligent AI.
Qloo tells an agent what culturally fits a person. TastePolicy answers the next question: may the agent actually go this far with that choice, for this person, in this context, right now?
Margaret's mobility changed. Her taste didn't.
A recommender asks, “Will this person like it?”
Qloo gives grounded cultural evidence for that question.
TastePolicy adds real-world requirements, explicit user rules and an authority ceiling so a strong taste match does not silently become permission.
Start here
- Judge walkthrough:
/judge— three short acts, no login. - Your own experience: sign up, then
/onboardingsaves your taste, what matters and how far AI may go;/experienceand/dashboarduse only your saved data. - Assisted Choice example:
/demo/margaret— the labelled live Margaret scenario with real Qloo data. - Product:
/ - Developer platform:
/developers - Trust boundary:
/trust - Live readiness:
/status
Production: https://tastepolicy.vercel.app
The core thesis
Taste intelligence is not permission.
The same candidate passes through three distinct layers:
- Generic AI can produce a plausible suggestion, but it does not have grounded cultural evidence.
- Qloo resolves cultural identities, discovers cross-domain candidates and provides candidate-specific affinity/explainability.
- TastePolicy keeps that cultural evidence separate from factual context, the person's requirements, their rules and the action the agent is requesting.
A candidate can be a strong cultural match and still produce ASK or REJECT. Affinity never overrides an explicit boundary.
Four explicit outcomes
Missing evidence is never silently converted into permission. Provider failure is never reported as dislike.
How Qloo is used
TastePolicy does not recreate Qloo's taste graph and does not substitute generic LLM guesses for Qloo evidence.
The current Qloo integration uses:
GET /searchto resolve cultural anchors;GET /entitiesto verify the identities being used;GET /v2/insightsfor cross-domain discovery;GET /v2/insightsagain for candidate-specific affinity/explainability.
The division of responsibility is deliberate:
Without Qloo, TastePolicy intentionally does not pretend a generic model guess is equivalent cultural evidence.
Assisted Choice
The flagship judge story follows Margaret, 72, who still loves intimate live jazz, classic cinema and Italian dining but now needs a step-free entrance, a short walk and a quieter setting.
The public flow:
- Qloo resolves her five cultural anchors to real entities.
- Qloo discovers real places from those cross-domain signals.
- TastePolicy presents the cultural match separately from real-world facts.
- If a critical requirement such as the entrance is unknown, the answer is ASK, not a guess.
- After the missing fact is answered, the same deterministic evaluator runs again.
- A qualifying choice can become ALLOW, but only up to Margaret's saved limit: SHORTLIST.
- If the agent tries to present that option as the final choice, the authority ceiling forces ASK again.
- Why this happened keeps Qloo evidence, place facts, requirements, rules and the final decision separately attributable.
A known hard violation becomes REJECT. If the required evidence cannot be obtained, the result is UNAVAILABLE.
Two concise variants demonstrate the same contract beyond Margaret:
/experience/sensory-aware/experience/low-energy
Needs are represented as functional rules such as walking_minutes <= 10 or noise-level constraints, never as diagnoses inferred from cultural taste.
Real place experience
TastePolicy's current open place layer uses:
- MapLibre + OpenFreeMap for the branded journey map;
- OpenStreetMap for explicit place facts where available;
- KartaView and Panoramax for real street imagery, sequences and 360° coverage where available;
- optional openrouteservice/HeiGIT routing;
- licensed Wikimedia or authored Taste imagery as fallback.
Media is presentation, not authority evidence. A nearby street image is labelled as nearby rather than falsely presented as the exact venue. Missing accessibility or route facts remain unknown.
A Google Places adapter also exists as an optional factual provider path, but the public open-place experience does not depend on Google being configured.
One deterministic authority contract
A requirement is represented separately from a candidate fact.
Qloo is never accepted as the source of a place-accessibility fact. Cultural evidence, factual evidence and authority remain separate.
Subjective-action ladder
TastePolicy distinguishes a good recommendation from how far the agent may act on it:
The person sets the furthest rung the AI may reach without asking. A request above that ceiling converts an otherwise valid recommendation into ASK.
Deeper authority infrastructure
The simple human experience sits on one shared authority model with:
- versioned Passport/state;
- versioned rules and action ceilings;
- Cultural Receipts;
- bounded leases tied to candidate/context commitments;
- drift checks and revocation;
- signed, selectively disclosed proofs;
- timeline/history;
- REST;
- TypeScript SDK;
- remote MCP;
- A2A;
- OAuth 2.1 / PKCE.
These surfaces extend the same evaluator rather than introducing separate policy engines.
Safety boundary
ALLOW is preference-choice authority only.
It never grants:
- payment or purchase authority;
- booking authority;
- messaging authority;
- account changes;
- private-data disclosure;
- legal authority.
Memory is not permission. Affinity is not authorization. A recommendation is not authorization. Verifying a proof is not authorization.
Local development
Requirements: Node.js 24 and npm.
Core environment variables:
QLOO_API_KEYQLOO_API_BASE_URLQLOO_AFFINITY_SCALEDATABASE_URLBETTER_AUTH_SECRETBETTER_AUTH_URLTASTEPOLICY_PUBLIC_ORIGINTASTEPOLICY_ATTESTATION_KEY
Optional place providers/routing are documented in docs/architecture/open-place-providers.md and .env.example.
Apply database migrations with:
Verification
Real-PostgreSQL suites can also run with TASTEPOLICY_TEST_DATABASE_URL configured.
Evidence is labelled by kind — LIVE, HOSTED, CONTROLLED, SYNTHETIC, LOCAL, CI, NOT EXECUTED or BLOCKED — so tests and planned integrations are not presented as production facts.
See:
docs/evaluation/docs/evaluation/m24-execution-ledger.mddocs/evaluation/m25-execution-ledger.mddocs/architecture/qloo-contract-review.mddocs/architecture/open-place-providers.md
Current limitations
- TastePolicy can only detect external drift that an agent or provider presents back to it.
- Open place/accessibility coverage varies by location; missing facts remain unknown.
- Vendor-assistant commissioning status is tracked separately and is not implied by protocol support.
- TasteBench results are engineering/evaluation evidence, not population-level preference or safety claims.
License
Apache-2.0. See LICENSE.
Source: README.md at commit 21cc2c4
Tools
0Version history
1- v0.2.0LatestOct 29, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts