{"openapi": "3.1.0", "info": {"title": "Vexvon TasteMatch agent tools", "version": "0.6.0", "description": "Cultural grounding tools. No autonomous LLM is bundled. Never send personal records or credentials."}, "paths": {"/api/search": {"post": {"operationId": "searchTasteEntity", "description": "Resolve a favorite to Qloo entities. Ask the user to confirm ambiguous matches.", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["query", "category"], "properties": {"query": {"type": "string", "minLength": 2, "maxLength": 120}, "category": {"type": "string", "enum": ["urn:entity:artist", "urn:entity:book", "urn:entity:destination", "urn:entity:movie", "urn:entity:place"]}}, "additionalProperties": false}}}}, "responses": {"200": {"description": "Qloo data with provenance; results may be empty."}, "400": {"description": "Invalid input."}, "429": {"description": "Rate limited. Do not retry automatically."}, "503": {"description": "Event credential unavailable. Stop and inform the user."}}}}, "/api/recommend": {"post": {"operationId": "discoverTasteMatches", "description": "Use confirmed Qloo IDs. Refine by excluding skipped IDs. Never invent IDs or results. Maximum one upstream call per invocation.", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["seeds", "category"], "properties": {"seeds": {"type": "array", "items": {"type": "string", "format": "uuid"}, "minItems": 1, "maxItems": 5}, "exclude": {"type": "array", "items": {"type": "string", "format": "uuid"}, "maxItems": 24}, "category": {"type": "string", "enum": ["urn:entity:artist", "urn:entity:book", "urn:entity:destination", "urn:entity:movie", "urn:entity:place"]}, "location": {"type": "string", "maxLength": 100}}, "additionalProperties": false}}}}, "responses": {"200": {"description": "Qloo data with provenance; results may be empty."}, "400": {"description": "Invalid input."}, "429": {"description": "Rate limited. Do not retry automatically."}, "503": {"description": "Event credential unavailable. Stop and inform the user."}}}}}}