✦TasteID
Developers

Add “Sign in with Taste” in 3 lines.

OAuth 2.0 authorization code + PKCE under the hood. Users share only the domains they tick. Solve cold start without collecting a single personal detail.

<script src="https://tasteid.vercel.app/sdk/tasteid.js"></script>
<div data-tasteid-button data-client-id="reelhouse" data-scopes="taste:film_tv" data-callback="onTaste"></div>
<script>onTaste = ({ api }) => api.recommend({ domain: 'film_tv', candidates: myCatalog }).then(console.log)</script>

Try it live

Sign in, then call an endpoint.

Scopes

Endpoints

GET  /authorize?client_id&redirect_uri&scope&state&code_challenge&code_challenge_method=S256
POST /api/oauth/token        {grant_type:"authorization_code", code, client_id, redirect_uri, code_verifier} → 1h JWT
GET  /api/v1/taste           Authorization: Bearer …   → only the scoped sections
POST /api/v1/recommend       {domain, candidates?:[{id,type}], context?:{city}}
                             → re-ranks YOUR catalog by the user's taste (or fresh picks), each with a "why"
POST /api/mcp                MCP (Streamable HTTP, JSON-RPC) — same tools, Bearer-authorised

Every call re-checks the grant: revoke in My TasteID and the token returns 401 immediately.

Connect an AI agent over MCP

Obtain a token via the flow above (the console returns one to tok.accessToken), then add TasteID as a remote MCP server. Tools: get_taste_profile, recommend, search_entities, explain.

claude mcp add --transport http tasteid https://tasteid.vercel.app/api/mcp --header "Authorization: Bearer <access_token>"

# or raw JSON-RPC
curl -X POST https://tasteid.vercel.app/api/mcp -H "Authorization: Bearer <access_token>" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'