lodging-intelligence
Romanian lodging character intelligence: calm, nature, culture, stays, itinerary maps. Read-only.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- HIGH
- MEDIUMen show_map
- LOWen get_accommodation
- LOWen capabilities
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"lodging-intelligence": {
"url": "https://mcp.tria.ro"
}
}
}Puntos de conexión remotos
https://mcp.tria.rostreamable-httphttps://tria.ro/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (7)
🟢find_accommodations(where, near, nume, tokeni, criterii, ...)
Găsește cazări ORIUNDE în România (tria.ro), pe litoral sau în țară, după LOC, CARACTER și (în viitor) PERIOADĂ. TOȚI parametrii sunt OPȚIONALI — fără niciunul întoarce TOPUL NAȚIONAL (toate cazările, clasate ca recomandate). `where` = locație structurată (rezolvată server-side); dacă locația nu se rezolvă, tool-ul întoarce eroare în loc de top național. `nume` = doar nume de cazare/proprietate/brand, nu facilități sau experiențe. Pentru agenți AI, folosește `tokeni` pentru orice intenție de caracter, experiență, facilitate sau stil ("liniste", "animat", "retras", "accesibil", "munte", "mare", "apa", "natura", "verde", "parcuri", "arii-protejate", "podgorie", "gastronomie", "viata-de-seara", "liniste-seara", "cultura", "urban", "balnear", "vibrant", "sezon-vara", "sezon-iarna", "activ-noaptea", "sezonier", "activ-tot-anul", "weekend", "cu-piscina", "cu-spa", "cu-restaurant", "cabane", "lux", "spa", "ciubar", "drumetii", "ciclism", "atv", "delta", "echitatie", "schi", "degustari-vin", "foc-tabara", "piscina", "copii", "evenimente"). Pentru negații pe tokenii reali de caracter, adaugă minus la tokenul public, ex. ["urban","animat","cultura-"] pentru urban și animat, dar fără tokenul cultural din profilul zonei. Serverul mapează intern tokenii la filtre/ranking/experiențe. Întoarce o listă clasată cu semnalele de caracter tria; fiecare rezultat poartă `rezolutie` (adâncimea semnalului per rând, național=ambient). NB: lista implicită este recomandate/încredere; pentru „cea mai bună pentru mine" se exprimă tot prin `tokeni`; `criterii`/`teme` sunt parametri avansați/legacy. Fiecare card poate purta `pret_de_la` = preț ORIENTATIV „de la X" (actualizat pentru weekendul următor, unde e disponibil — NU e disponibilitate garantată; rezervarea/verificarea finală pe get_accommodation → site-ul partener). La căutări largi (doar temă fără loc, sau loc fără temă) răspunsul include `restrange` — zone (cu count) + teme pe piloni (cadru/stil/atmosferă/facilități, cu count): OFERĂ-l ca CLARIFICARE („în ce zonă? ce stil/atmosferă?"), dar NU ești obligat să restrângi — rezultatele vin oricum. Pe hartă: show_map cu aceiași parametri. Atribuie sursa tria.ro.
Esquema de entrada
{
"type": "object",
"properties": {
"where": {
"description": "UNDE — LOCAȚIE structurată: județ / oraș / localitate / stațiune; acceptă și forma calificată \"localitate, județ\" (ex. \"Filiași, Dolj\"). Ex. \"Brașov\", \"Bran\", \"Mamaia\". Reperele cunoscute (sat/lac/pârtie pe care harta nu le are ca unitate: Colibița, Bâlea, Rânca, Cheia) se rezolvă la COMUNA care le conține. OPȚIONAL. Dacă locația nu se rezolvă, primești eroare; pentru top național omite `where`. Nu pune aici facilități/experiențe sau nume de cazare; facilitățile/experiențele merg în `tokeni`, numele cazării merge în `nume`.",
"type": "string"
},
"near": {
"description": "„Lângă mine\" / în jurul unui punct. Alternativ cu where.",
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"radius_km": {
"description": "Rază (implicit 10)",
"type": "number"
}
},
"type": "object",
"required": [
"lat",
"lng"
]
},
"nume": {
"description": "DOAR nume de cazare/proprietate/brand, ex. \"Hotel Studis\", \"Vila Maria\". Nu folosi pentru facilități, experiențe, stil sau caracter; acelea merg în `tokeni`.",
"type": "string"
},
"tokeni": {
"description": "Interfața standard pentru agenți: tokeni publici într-o singură listă. Ex. [\"ciubar\"], [\"lux\"], [\"spa\"], [\"piscina\"], [\"drumetii\"], [\"mare\",\"retras\"], [\"munte\",\"liniste\"], [\"urban\",\"gastronomie\"]. Acceptă semn pe tokenii reali de caracter: `cultura+` = cere tokenul, `cultura-`/`-cultura`/`fara cultura` = exclude cazările care poartă tokenul intern de caracter. Negația nu se aplică facilităților/experiențelor. Pentru orice user intent/facilitate/experiență/stil folosește acest parametru, nu `nume`, `teme` sau `criterii`. Vezi capabilities().vocabular.tokeni.",
"items": {
"type": "string"
},
"type": "array"
},
"criterii": {
"description": "AVANSAT/legacy: ranking pe semnale interne. Pentru agenți AI, preferă `tokeni`. Vocabular: liniste,natura,munte,arii_protejate,schi,apa,family,gastro,vin_crame,crame,cultura_istorie,cultura,nightlife,business,relaxare,urbanitate,izolare,magnetism,turism,afluenta_turistica,farmec,dezirabilitate,aproape_de_mare,aproape_de_aeroport,aproape_de_tren.",
"items": {
"type": "string"
},
"type": "array"
},
"teme": {
"description": "AVANSAT/legacy: filtre UI/SEO interne. Pentru agenți AI, preferă `tokeni`; o temă este intern un set de tokeni.",
"items": {
"type": "string"
},
"type": "array"
},
"sort": {
"description": "AVANSAT/legacy: o singură dimensiune de ranking când nu dai tokeni/criterii: popularitate | liniste | natura | … (vezi criterii). Pentru user intent folosește `tokeni`; pentru potrivire personală, serverul calculează dinamic `potrivire` când există intenție.",
"type": "string"
},
"limit": {
"description": "Câte pe pagină (implicit 10, max 30)",
"type": "integer"
},
"page": {
"description": "Pagina (implicit 1) — total arată câte corespund",
"type": "integer"
}
}
}Esquema de salida
{
"type": "object",
"properties": {
"total": {
"description": "Total cazări care corespund (poți pagina pentru restul)",
"type": "integer"
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"returned": {
"description": "Câte sunt în această pagină",
"type": "integer"
},
"results": {
"description": "Cazările care corespund, clasate (eșantion — vezi total). Fiecare are `rezolutie`.",
"items": {
"properties": {
"name": {
"description": "Numele cazării",
"type": "string"
},
"slug": {
"description": "Slug exact al cazării — copiază această valoare în get_accommodation/get_concierge_brief; nu slugifica numele.",
"type": "string"
},
"category": {
"description": "Categorie normalizată: hotel/pensiune/vila/apartament/hostel/resort/camping",
"type": "string"
},
"type": {
"description": "Categoria brută internă",
"type": "string"
},
"resort": {
"description": "Stațiunea de pe litoral",
"type": "string"
},
"url": {
"description": "Pagina tria.ro a cazării",
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"potrivire": {
"description": "Potrivire cu INTENȚIA ta (0–100) — cât de bine se aliniază cazarea cu tokenii/criteriile cerute. Apare DOAR când ai dat o intenție. NU e un scor/rating absolut al cazării (nu notăm cazări).",
"type": "number"
},
"caracter": {
"description": "Caracterul zonei pe intenții de ședere (0–100, doar cele cu semnal)",
"properties": {
"liniste": {
"type": "number"
},
"natura": {
"type": "number"
},
"verde": {
"type": "number"
},
"parcuri": {
"type": "number"
},
"arii_protejate": {
"type": "number"
},
"schi": {
"type": "number"
},
"munte": {
"type": "number"
},
"apa": {
"type": "number"
},
"gastro": {
"type": "number"
},
"cafea": {
"type": "number"
},
"plimbare": {
"type": "number"
},
"vin_crame": {
"type": "number"
},
"cultura_istorie": {
"type": "number"
},
"nightlife": {
"type": "number"
},
"family": {
"type": "number"
},
"business": {
"type": "number"
},
"relaxare": {
"type": "number"
},
"izolare": {
"type": "number"
},
"urbanitate": {
"type": "number"
},
"acces_auto": {
"type": "number"
},
"acces_localitate": {
"type": "number"
},
"farmec": {
"description": "Farmecul zonei — calitatea spațiului public (0–100)",
"type": "number"
},
"dezirabilitate": {
"description": "Cât de căutată e zona (0–100)",
"type": "number"
}
},
"type": "object"
},
"etichete": {
"description": "1–2 etichete în limbaj natural, derivate din caracter",
"items": {
"type": "string"
},
"type": "array"
},
"arhetip": {
"description": "Arhetipul zonei din tokenii de contrast ai catalogului; limbajul preferat pentru explicații și matching.",
"items": {
"properties": {
"label": {
"description": "Etichetă citibilă: la mare, retras, urban, gastronomie…",
"type": "string"
},
"kind": {
"description": "strong | soft — cât de tare e tokenul în profilul zonei",
"type": "string"
},
"slug": {
"description": "Slug de temă tria când eticheta are pagină/filtru corespondent",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"origins": {
"description": "Originile vizitatorilor, pe județe",
"items": {
"properties": {
"judet": {
"type": "string"
},
"share": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"rezumat": {
"description": "Rezumat de caracter, într-o frază (originile vizitatorilor)",
"type": "string"
},
"stars": {
"description": "Stele (din sursa de conținut)",
"type": "integer"
},
"pret_de_la": {
"description": "Etichetă publică de preț informativ în forma „de la X lei”, fără sufix. Nu este disponibilitate și nu este ofertă de rezervare.",
"type": "string"
},
"pret": {
"description": "Preț ORIENTATIV live pe 3 perioade — doar la get_accommodation. Nu e disponibilitate garantată; verificarea finală + rezervarea se fac pe site-ul partener. Fără taxe/comisioane.",
"properties": {
"de_la": {
"description": "Cel mai mic preț orientativ peste perioadele de mai jos (fără taxe). În interfață se redă „de la X lei”, fără sufix.",
"type": "integer"
},
"moneda": {
"type": "string"
},
"perioade": {
"description": "3 perioade-eșantion (nu calendar complet).",
"items": {
"properties": {
"perioada": {
"description": "Weekendul următor / Peste o lună / Peste 2-3 luni",
"type": "string"
},
"interval": {
"type": "string"
},
"de_la": {
"description": "Preț orientativ pe această perioadă; absent = fără disponibilitate afișată (de verificat pe partener).",
"type": "integer"
},
"rezervare_url": {
"description": "Link către pagina de rezervare a partenerului.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"photo": {
"description": "Poză de copertă — în liste poate lipsi; la get_accommodation este cover-ul disponibil.",
"type": "string"
},
"gallery": {
"description": "Galerie foto limitată — doar la get_accommodation, cu URL-uri publice/proxied tria unde există.",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Descriere scurtă (doar la get_accommodation)",
"type": "string"
},
"amenities": {
"description": "Facilități (doar la get_accommodation)",
"items": {
"type": "string"
},
"type": "array"
},
"rooms": {
"description": "Camere/unități, doar la get_accommodation, compactate și limitate ca să nu umfle contextul.",
"items": {
"properties": {
"name": {
"description": "Numele camerei/unității",
"type": "string"
},
"description": {
"description": "Descriere scurtă a camerei",
"type": "string"
},
"size": {
"description": "Suprafață, unde există",
"type": "number"
},
"unit": {
"description": "Unitate suprafață, de obicei mp",
"type": "string"
},
"max": {
"description": "Capacitate maximă persoane",
"type": "integer"
},
"beds": {
"description": "Paturi",
"items": {
"type": "string"
},
"type": "array"
},
"price": {
"description": "Preț text pentru cameră, informativ",
"type": "string"
},
"price_from": {
"description": "Preț numeric minim pentru cameră, informativ",
"type": "number"
},
"amenities": {
"description": "Dotări pe cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
},
"photos": {
"description": "Fotografii cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"rezolutie": {
"description": "Provenance + încredere a semnalelor (mai bogat unde semnalul e fin, mai subțire la marginea litorală). Agentul îl CITEȘTE ca să calibreze încrederea; nu e parametru de request.",
"properties": {
"nivel": {
"description": "Granularitatea semnalului: identitate (loc anume) | local | ambient (zonă largă)",
"type": "string"
},
"adancime": {
"description": "Profunzimea semnalelor: standard (național) | bazica; mai subțire la marginea litorală",
"type": "string"
},
"incredere": {
"description": "0–1: cât de bine acoperit e semnalul aici (mic la marginea litorală a modelului național r7)",
"type": "number"
}
},
"type": "object"
},
"teme": {
"description": "Teme de descoperire tria (cabane, retras, cu-piscina…) — naționale",
"items": {
"type": "string"
},
"type": "array"
},
"acces": {
"description": "Distanța până la cel mai apropiat (km), unde există — național",
"properties": {
"aeroport_km": {
"type": "number"
},
"tren_km": {
"type": "number"
},
"mare_km": {
"type": "number"
}
},
"type": "object"
},
"source": {
"description": "Mereu \"tria.ro\"",
"type": "string"
},
"license": {
"description": "Licența datelor — atribuire necesară",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
}
}🟢show_map(where, near, nume, tokeni, criterii, ...)
Afișează cazări pe o hartă INTERACTIVĂ — aceiași parametri de localizare/filtrare ca find_accommodations (where/near/nume/tokeni/criterii/teme/sort), region-routed. Widget MCP Apps când clientul suportă; altfel listă cu coordonate. Folosește-l când utilizatorul cere „pe hartă". Sursă: tria.ro.
Esquema de entrada
{
"type": "object",
"properties": {
"where": {
"description": "UNDE — locație structurată (județ/oraș/localitate/stațiune), acceptă și \"localitate, județ\" (ex. \"Filiași, Dolj\"), OPȚIONAL. Reperele cunoscute (Colibița, Bâlea, Rânca…) se rezolvă la comuna care le conține. NU căutare după nume (aia e `nume`). Fără ea → național; nerecunoscut → eroare.",
"type": "string"
},
"near": {
"description": "„Lângă mine\" / în jurul unui punct.",
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"radius_km": {
"type": "number"
}
},
"type": "object",
"required": [
"lat",
"lng"
]
},
"nume": {
"description": "DOAR nume de cazare/proprietate/brand. Nu folosi pentru facilități, experiențe, stil sau caracter; acelea merg în `tokeni`.",
"type": "string"
},
"tokeni": {
"description": "Tokeni publici de intenție/facilitate/experiență/stil, ex. [\"ciubar\"], [\"lux\"], [\"spa\"], [\"piscina\"], [\"munte\",\"liniste\"]. Pe tokenii reali de caracter cu negabil=true în capabilities(), acceptă minus: [\"urban\",\"animat\",\"cultura-\"].",
"items": {
"type": "string"
},
"type": "array"
},
"criterii": {
"description": "AVANSAT/legacy: ranking pe caracter (media). Vocabular: liniste,natura,munte,arii_protejate,schi,apa,family,gastro,vin_crame,crame,cultura_istorie,cultura,nightlife,business,relaxare,urbanitate,izolare,magnetism,turism,afluenta_turistica,farmec,dezirabilitate,aproape_de_mare,aproape_de_aeroport,aproape_de_tren",
"items": {
"type": "string"
},
"type": "array"
},
"teme": {
"description": "AVANSAT/legacy: filtru pe categorie (național), ex. [\"cabane\",\"cu-piscina\"]. Pentru agenți AI preferă `tokeni`.",
"items": {
"type": "string"
},
"type": "array"
},
"sort": {
"description": "AVANSAT/legacy: o singură dimensiune de ranking. Pentru user intent folosește `tokeni`.",
"type": "string"
},
"limit": {
"description": "Câte cazări/pini (implicit 12, max 30)",
"type": "integer"
},
"page": {
"description": "Pagina",
"type": "integer"
}
}
}Esquema de salida
{
"type": "object",
"properties": {
"total": {
"description": "Total cazări care corespund (poți pagina pentru restul)",
"type": "integer"
},
"page": {
"type": "integer"
},
"per_page": {
"type": "integer"
},
"returned": {
"description": "Câte sunt în această pagină",
"type": "integer"
},
"results": {
"description": "Cazări cu coordonate, pentru hartă (eșantion — vezi total). Fiecare are `rezolutie`.",
"items": {
"properties": {
"name": {
"description": "Numele cazării",
"type": "string"
},
"slug": {
"description": "Slug exact al cazării — copiază această valoare în get_accommodation/get_concierge_brief; nu slugifica numele.",
"type": "string"
},
"category": {
"description": "Categorie normalizată: hotel/pensiune/vila/apartament/hostel/resort/camping",
"type": "string"
},
"type": {
"description": "Categoria brută internă",
"type": "string"
},
"resort": {
"description": "Stațiunea de pe litoral",
"type": "string"
},
"url": {
"description": "Pagina tria.ro a cazării",
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"potrivire": {
"description": "Potrivire cu INTENȚIA ta (0–100) — cât de bine se aliniază cazarea cu tokenii/criteriile cerute. Apare DOAR când ai dat o intenție. NU e un scor/rating absolut al cazării (nu notăm cazări).",
"type": "number"
},
"caracter": {
"description": "Caracterul zonei pe intenții de ședere (0–100, doar cele cu semnal)",
"properties": {
"liniste": {
"type": "number"
},
"natura": {
"type": "number"
},
"verde": {
"type": "number"
},
"parcuri": {
"type": "number"
},
"arii_protejate": {
"type": "number"
},
"schi": {
"type": "number"
},
"munte": {
"type": "number"
},
"apa": {
"type": "number"
},
"gastro": {
"type": "number"
},
"cafea": {
"type": "number"
},
"plimbare": {
"type": "number"
},
"vin_crame": {
"type": "number"
},
"cultura_istorie": {
"type": "number"
},
"nightlife": {
"type": "number"
},
"family": {
"type": "number"
},
"business": {
"type": "number"
},
"relaxare": {
"type": "number"
},
"izolare": {
"type": "number"
},
"urbanitate": {
"type": "number"
},
"acces_auto": {
"type": "number"
},
"acces_localitate": {
"type": "number"
},
"farmec": {
"description": "Farmecul zonei — calitatea spațiului public (0–100)",
"type": "number"
},
"dezirabilitate": {
"description": "Cât de căutată e zona (0–100)",
"type": "number"
}
},
"type": "object"
},
"etichete": {
"description": "1–2 etichete în limbaj natural, derivate din caracter",
"items": {
"type": "string"
},
"type": "array"
},
"arhetip": {
"description": "Arhetipul zonei din tokenii de contrast ai catalogului; limbajul preferat pentru explicații și matching.",
"items": {
"properties": {
"label": {
"description": "Etichetă citibilă: la mare, retras, urban, gastronomie…",
"type": "string"
},
"kind": {
"description": "strong | soft — cât de tare e tokenul în profilul zonei",
"type": "string"
},
"slug": {
"description": "Slug de temă tria când eticheta are pagină/filtru corespondent",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"origins": {
"description": "Originile vizitatorilor, pe județe",
"items": {
"properties": {
"judet": {
"type": "string"
},
"share": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"rezumat": {
"description": "Rezumat de caracter, într-o frază (originile vizitatorilor)",
"type": "string"
},
"stars": {
"description": "Stele (din sursa de conținut)",
"type": "integer"
},
"pret_de_la": {
"description": "Etichetă publică de preț informativ în forma „de la X lei”, fără sufix. Nu este disponibilitate și nu este ofertă de rezervare.",
"type": "string"
},
"pret": {
"description": "Preț ORIENTATIV live pe 3 perioade — doar la get_accommodation. Nu e disponibilitate garantată; verificarea finală + rezervarea se fac pe site-ul partener. Fără taxe/comisioane.",
"properties": {
"de_la": {
"description": "Cel mai mic preț orientativ peste perioadele de mai jos (fără taxe). În interfață se redă „de la X lei”, fără sufix.",
"type": "integer"
},
"moneda": {
"type": "string"
},
"perioade": {
"description": "3 perioade-eșantion (nu calendar complet).",
"items": {
"properties": {
"perioada": {
"description": "Weekendul următor / Peste o lună / Peste 2-3 luni",
"type": "string"
},
"interval": {
"type": "string"
},
"de_la": {
"description": "Preț orientativ pe această perioadă; absent = fără disponibilitate afișată (de verificat pe partener).",
"type": "integer"
},
"rezervare_url": {
"description": "Link către pagina de rezervare a partenerului.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"photo": {
"description": "Poză de copertă — în liste poate lipsi; la get_accommodation este cover-ul disponibil.",
"type": "string"
},
"gallery": {
"description": "Galerie foto limitată — doar la get_accommodation, cu URL-uri publice/proxied tria unde există.",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Descriere scurtă (doar la get_accommodation)",
"type": "string"
},
"amenities": {
"description": "Facilități (doar la get_accommodation)",
"items": {
"type": "string"
},
"type": "array"
},
"rooms": {
"description": "Camere/unități, doar la get_accommodation, compactate și limitate ca să nu umfle contextul.",
"items": {
"properties": {
"name": {
"description": "Numele camerei/unității",
"type": "string"
},
"description": {
"description": "Descriere scurtă a camerei",
"type": "string"
},
"size": {
"description": "Suprafață, unde există",
"type": "number"
},
"unit": {
"description": "Unitate suprafață, de obicei mp",
"type": "string"
},
"max": {
"description": "Capacitate maximă persoane",
"type": "integer"
},
"beds": {
"description": "Paturi",
"items": {
"type": "string"
},
"type": "array"
},
"price": {
"description": "Preț text pentru cameră, informativ",
"type": "string"
},
"price_from": {
"description": "Preț numeric minim pentru cameră, informativ",
"type": "number"
},
"amenities": {
"description": "Dotări pe cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
},
"photos": {
"description": "Fotografii cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"rezolutie": {
"description": "Provenance + încredere a semnalelor (mai bogat unde semnalul e fin, mai subțire la marginea litorală). Agentul îl CITEȘTE ca să calibreze încrederea; nu e parametru de request.",
"properties": {
"nivel": {
"description": "Granularitatea semnalului: identitate (loc anume) | local | ambient (zonă largă)",
"type": "string"
},
"adancime": {
"description": "Profunzimea semnalelor: standard (național) | bazica; mai subțire la marginea litorală",
"type": "string"
},
"incredere": {
"description": "0–1: cât de bine acoperit e semnalul aici (mic la marginea litorală a modelului național r7)",
"type": "number"
}
},
"type": "object"
},
"teme": {
"description": "Teme de descoperire tria (cabane, retras, cu-piscina…) — naționale",
"items": {
"type": "string"
},
"type": "array"
},
"acces": {
"description": "Distanța până la cel mai apropiat (km), unde există — național",
"properties": {
"aeroport_km": {
"type": "number"
},
"tren_km": {
"type": "number"
},
"mare_km": {
"type": "number"
}
},
"type": "object"
},
"source": {
"description": "Mereu \"tria.ro\"",
"type": "string"
},
"license": {
"description": "Licența datelor — atribuire necesară",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
}
}🟢show_itinerary_map(title, subtitle, points, scenes, autoplay, ...)
Afișează o hartă interactivă de itinerariu, cu puncte fixe, scene/grupe (ex. zile/etape/zone), chips pentru scene, carousel și autoplay opțional. Refolosește harta tria; traseul este schematic (linie dreaptă între puncte), nu rutare pe drumuri. Sursă: tria.ro.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"description": "Titlul hărții, ex. \"Circuit 7 zile din Constanța\".",
"type": "string"
},
"subtitle": {
"description": "Subtitlu scurt, ex. \"cazări retrase, natură, sate, apă\".",
"type": "string"
},
"points": {
"description": "Punctele itinerariului. Max 40.",
"items": {
"properties": {
"id": {
"description": "ID stabil în această hartă, ex. \"zi1-start\".",
"type": "string"
},
"label": {
"description": "Numele afișat pe card/chip.",
"type": "string"
},
"lat": {
"description": "Latitudine. Poate lipsi dacă dai slug de cazare tria.",
"type": "number"
},
"lng": {
"description": "Longitudine. Poate lipsi dacă dai slug de cazare tria.",
"type": "number"
},
"slug": {
"description": "Slug cazare tria; dacă lipsesc coordonatele, serverul le rezolvă.",
"type": "string"
},
"role": {
"description": "start|stay|stop|poi|end — doar pentru afișare.",
"type": "string"
},
"photo": {
"description": "Poză opțională pentru card.",
"type": "string"
},
"url": {
"description": "URL opțional. Pentru cazări tria poate fi rezolvat din slug.",
"type": "string"
},
"meta": {
"description": "Metadate scurte pentru card.",
"properties": {
"day": {
"type": "integer"
},
"nights": {
"type": "integer"
},
"kind": {
"type": "string"
},
"note": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object",
"required": [
"id",
"label"
]
},
"type": "array"
},
"scenes": {
"description": "Scene/grupe pentru chips și autoplay. Dacă lipsește, se creează o scenă cu toate punctele. Max 20.",
"items": {
"properties": {
"id": {
"description": "ID scenă.",
"type": "string"
},
"label": {
"description": "Textul chip-ului, ex. \"Plecare + Delta Dunării\".",
"type": "string"
},
"description": {
"description": "Descriere scurtă a scenei.",
"type": "string"
},
"point_ids": {
"description": "Punctele vizibile/highlight în scenă.",
"items": {
"type": "string"
},
"type": "array"
},
"active_point_id": {
"description": "Punctul focal la activarea scenei.",
"type": "string"
},
"duration_ms": {
"description": "Durata scenei în autoplay.",
"type": "integer"
}
},
"type": "object",
"required": [
"id",
"label",
"point_ids"
]
},
"type": "array"
},
"autoplay": {
"description": "Autoplay pe scene, nu pe puncte.",
"properties": {
"enabled": {
"type": "boolean"
},
"interval_ms": {
"type": "integer"
},
"loop": {
"type": "boolean"
}
},
"type": "object"
},
"path": {
"description": "Linie schematică între puncte.",
"properties": {
"mode": {
"description": "none|straight. Rutarea road este rezervată.",
"type": "string"
},
"ordered_point_ids": {
"description": "Ordinea liniei schematice.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
},
"required": [
"points"
]
}Esquema de salida
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"points": {
"items": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"label": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"slug": {
"type": "string"
},
"role": {
"type": "string"
},
"photo": {
"type": "string"
},
"url": {
"type": "string"
},
"meta": {
"type": "object"
}
},
"type": "object"
},
"type": "array"
},
"scenes": {
"items": {
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"description": {
"type": "string"
},
"point_ids": {
"items": {
"type": "string"
},
"type": "array"
},
"active_point_id": {
"type": "string"
},
"duration_ms": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"autoplay": {
"properties": {
"enabled": {
"type": "boolean"
},
"interval_ms": {
"type": "integer"
},
"loop": {
"type": "boolean"
}
},
"type": "object"
},
"path": {
"properties": {
"mode": {
"type": "string"
},
"ordered_point_ids": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"source": {
"type": "string"
}
}
}🟢explore_areas(scope, where, sort, criterii, limit)
Clasează ZONE (nu cazări) după caracter, ca să răspunzi „unde să merg". scope: "judet" (implicit), "localitate" (în interiorul unui județ — dă `where`), "statiune" (litoral). Ranking după un semnal (`sort`) sau compozit (`criterii`). Dacă dai `where`, tool-ul rămâne în zona părinte rezolvată și nu întoarce județe naționale. Ex.: județele cele mai montane, localitățile cele mai verzi din Cluj, stațiunile cele mai potrivite pentru familie. Sursă: tria.ro.
Esquema de entrada
{
"type": "object",
"properties": {
"scope": {
"description": "Granularitatea ariei: judet (implicit) | localitate | statiune",
"type": "string"
},
"where": {
"description": "Județul părinte pentru scope=localitate, ex. \"Brașov\"; acceptă și o localitate/stațiune, caz în care se folosește județul ei. Dacă `scope=judet` și dai `where`, tool-ul auto-corectează la localitățile din județul/locul rezolvat.",
"type": "string"
},
"sort": {
"description": "O dimensiune de ranking: liniste, natura, verde, parcuri, arii_protejate, munte, schi, apa, family, gastro, vin_crame, crame, cultura_istorie, cultura, nightlife, business, relaxare, magnetism, turism, urbanitate, viata-de-seara, viata_de_seara (pentru statiune și plaja/farmec/anvergura/afluenta).",
"type": "string"
},
"criterii": {
"description": "Ranking compozit (media) — doar pentru statiune.",
"items": {
"type": "string"
},
"type": "array"
},
"limit": {
"description": "Top N (implicit 8, max 30)",
"type": "integer"
}
}
}Esquema de salida
{
"type": "object",
"properties": {
"scope": {
"type": "string"
},
"judet": {
"description": "Județul părinte (doar scope=localitate)",
"type": "string"
},
"areas": {
"description": "Zonele clasate",
"items": {
"properties": {
"name": {
"description": "Numele zonei (județ / localitate / stațiune)",
"type": "string"
},
"where": {
"description": "Valoarea exactă de folosit în find_accommodations(where) pentru zona asta",
"type": "string"
},
"count": {
"description": "Câte cazări are zona",
"type": "integer"
},
"score": {
"description": "Scorul mediu pe dimensiunea cerută (unde se aplică)",
"type": "number"
},
"photo": {
"type": "string"
},
"find_args": {
"description": "Argumente replayabile pentru find_accommodations. Folosește-le ca atare pentru follow-up pe cazare.",
"properties": {
"where": {
"type": "string"
},
"criterii": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
},
"type": "object"
},
"type": "array"
}
}
}🟢get_accommodation(slug)
Profilul complet al unei cazări de pe tria.ro (după slug), litoral sau național: semnale de caracter, împrejurimi, acces, arhetipuri, descriere/facilități, camere/dotări pe cameră, preț ORIENTATIV live pe 3 perioade-eșantion (`pret`, unde e disponibil — nu e disponibilitate garantată; rezervarea/verificarea finală pe site-ul partener), galerie foto limitată și `rezolutie` (cât de bogat e semnalul). Copiază slug-ul exact din `results[].slug` sau din URL; nu slugifica numele. Fără contact.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"description": "Slug exact din `find_accommodations.results[].slug` sau ultimul segment din URL, ex. \"casa-anda-2e3cfc\". Nu inventa/slugifica numele; dacă ai doar numele, caută întâi cu find_accommodations(nume=...).",
"type": "string"
}
},
"required": [
"slug"
]
}Esquema de salida
{
"type": "object",
"properties": {
"name": {
"description": "Numele cazării",
"type": "string"
},
"slug": {
"description": "Slug exact al cazării — copiază această valoare în get_accommodation/get_concierge_brief; nu slugifica numele.",
"type": "string"
},
"category": {
"description": "Categorie normalizată: hotel/pensiune/vila/apartament/hostel/resort/camping",
"type": "string"
},
"type": {
"description": "Categoria brută internă",
"type": "string"
},
"resort": {
"description": "Stațiunea de pe litoral",
"type": "string"
},
"url": {
"description": "Pagina tria.ro a cazării",
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"potrivire": {
"description": "Potrivire cu INTENȚIA ta (0–100) — cât de bine se aliniază cazarea cu tokenii/criteriile cerute. Apare DOAR când ai dat o intenție. NU e un scor/rating absolut al cazării (nu notăm cazări).",
"type": "number"
},
"caracter": {
"description": "Caracterul zonei pe intenții de ședere (0–100, doar cele cu semnal)",
"properties": {
"liniste": {
"type": "number"
},
"natura": {
"type": "number"
},
"verde": {
"type": "number"
},
"parcuri": {
"type": "number"
},
"arii_protejate": {
"type": "number"
},
"schi": {
"type": "number"
},
"munte": {
"type": "number"
},
"apa": {
"type": "number"
},
"gastro": {
"type": "number"
},
"cafea": {
"type": "number"
},
"plimbare": {
"type": "number"
},
"vin_crame": {
"type": "number"
},
"cultura_istorie": {
"type": "number"
},
"nightlife": {
"type": "number"
},
"family": {
"type": "number"
},
"business": {
"type": "number"
},
"relaxare": {
"type": "number"
},
"izolare": {
"type": "number"
},
"urbanitate": {
"type": "number"
},
"acces_auto": {
"type": "number"
},
"acces_localitate": {
"type": "number"
},
"farmec": {
"description": "Farmecul zonei — calitatea spațiului public (0–100)",
"type": "number"
},
"dezirabilitate": {
"description": "Cât de căutată e zona (0–100)",
"type": "number"
}
},
"type": "object"
},
"etichete": {
"description": "1–2 etichete în limbaj natural, derivate din caracter",
"items": {
"type": "string"
},
"type": "array"
},
"arhetip": {
"description": "Arhetipul zonei din tokenii de contrast ai catalogului; limbajul preferat pentru explicații și matching.",
"items": {
"properties": {
"label": {
"description": "Etichetă citibilă: la mare, retras, urban, gastronomie…",
"type": "string"
},
"kind": {
"description": "strong | soft — cât de tare e tokenul în profilul zonei",
"type": "string"
},
"slug": {
"description": "Slug de temă tria când eticheta are pagină/filtru corespondent",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"origins": {
"description": "Originile vizitatorilor, pe județe",
"items": {
"properties": {
"judet": {
"type": "string"
},
"share": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"rezumat": {
"description": "Rezumat de caracter, într-o frază (originile vizitatorilor)",
"type": "string"
},
"stars": {
"description": "Stele (din sursa de conținut)",
"type": "integer"
},
"pret_de_la": {
"description": "Etichetă publică de preț informativ în forma „de la X lei”, fără sufix. Nu este disponibilitate și nu este ofertă de rezervare.",
"type": "string"
},
"pret": {
"description": "Preț ORIENTATIV live pe 3 perioade — doar la get_accommodation. Nu e disponibilitate garantată; verificarea finală + rezervarea se fac pe site-ul partener. Fără taxe/comisioane.",
"properties": {
"de_la": {
"description": "Cel mai mic preț orientativ peste perioadele de mai jos (fără taxe). În interfață se redă „de la X lei”, fără sufix.",
"type": "integer"
},
"moneda": {
"type": "string"
},
"perioade": {
"description": "3 perioade-eșantion (nu calendar complet).",
"items": {
"properties": {
"perioada": {
"description": "Weekendul următor / Peste o lună / Peste 2-3 luni",
"type": "string"
},
"interval": {
"type": "string"
},
"de_la": {
"description": "Preț orientativ pe această perioadă; absent = fără disponibilitate afișată (de verificat pe partener).",
"type": "integer"
},
"rezervare_url": {
"description": "Link către pagina de rezervare a partenerului.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"photo": {
"description": "Poză de copertă — în liste poate lipsi; la get_accommodation este cover-ul disponibil.",
"type": "string"
},
"gallery": {
"description": "Galerie foto limitată — doar la get_accommodation, cu URL-uri publice/proxied tria unde există.",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Descriere scurtă (doar la get_accommodation)",
"type": "string"
},
"amenities": {
"description": "Facilități (doar la get_accommodation)",
"items": {
"type": "string"
},
"type": "array"
},
"rooms": {
"description": "Camere/unități, doar la get_accommodation, compactate și limitate ca să nu umfle contextul.",
"items": {
"properties": {
"name": {
"description": "Numele camerei/unității",
"type": "string"
},
"description": {
"description": "Descriere scurtă a camerei",
"type": "string"
},
"size": {
"description": "Suprafață, unde există",
"type": "number"
},
"unit": {
"description": "Unitate suprafață, de obicei mp",
"type": "string"
},
"max": {
"description": "Capacitate maximă persoane",
"type": "integer"
},
"beds": {
"description": "Paturi",
"items": {
"type": "string"
},
"type": "array"
},
"price": {
"description": "Preț text pentru cameră, informativ",
"type": "string"
},
"price_from": {
"description": "Preț numeric minim pentru cameră, informativ",
"type": "number"
},
"amenities": {
"description": "Dotări pe cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
},
"photos": {
"description": "Fotografii cameră, limitate",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"rezolutie": {
"description": "Provenance + încredere a semnalelor (mai bogat unde semnalul e fin, mai subțire la marginea litorală). Agentul îl CITEȘTE ca să calibreze încrederea; nu e parametru de request.",
"properties": {
"nivel": {
"description": "Granularitatea semnalului: identitate (loc anume) | local | ambient (zonă largă)",
"type": "string"
},
"adancime": {
"description": "Profunzimea semnalelor: standard (național) | bazica; mai subțire la marginea litorală",
"type": "string"
},
"incredere": {
"description": "0–1: cât de bine acoperit e semnalul aici (mic la marginea litorală a modelului național r7)",
"type": "number"
}
},
"type": "object"
},
"teme": {
"description": "Teme de descoperire tria (cabane, retras, cu-piscina…) — naționale",
"items": {
"type": "string"
},
"type": "array"
},
"acces": {
"description": "Distanța până la cel mai apropiat (km), unde există — național",
"properties": {
"aeroport_km": {
"type": "number"
},
"tren_km": {
"type": "number"
},
"mare_km": {
"type": "number"
}
},
"type": "object"
},
"source": {
"description": "Mereu \"tria.ro\"",
"type": "string"
},
"license": {
"description": "Licența datelor — atribuire necesară",
"type": "string"
}
}
}🟢get_concierge_brief(slug, intrebare, plan)
Brief deterministic pentru AI concierge al unei cazări: fapte publice, diferențiatori, întrebări sugerate, guardrails și CTA-uri permise. Nu consumă LLM, nu confirmă disponibilitate/preț final și nu expune contact direct; agentul folosește brief-ul ca să răspundă despre proprietate și zonă fără să inventeze. `slug` se copiază exact din `results[].slug` sau din ultimul segment al URL-ului; nu slugifica numele proprietății.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"description": "Slug exact din `find_accommodations.results[].slug` sau ultimul segment din URL, ex. \"gramofon-inn-f28a36\". Nu inventa/slugifica numele; dacă ai doar numele, caută întâi cu find_accommodations(nume=...).",
"type": "string"
},
"intrebare": {
"description": "Întrebarea turistului; opțional. Tool-ul o clasifică simplu și întoarce un cadru de răspuns.",
"type": "string"
},
"plan": {
"description": "free | pro. În local/prototip schimbă doar nivelul de detaliu și CTA-urile permise; nu activează billing.",
"type": "string"
}
},
"required": [
"slug"
]
}Esquema de salida
{
"type": "object",
"properties": {
"mode": {
"description": "free | pro",
"type": "string"
},
"property": {
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string"
},
"category": {
"type": "string"
},
"location": {
"type": "string"
},
"verified": {
"properties": {
"situr": {
"type": "boolean"
},
"classification": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"question": {
"properties": {
"text": {
"type": "string"
},
"intent": {
"type": "string"
},
"answer_frame": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"facts": {
"properties": {
"summary": {
"type": "string"
},
"character": {
"items": {
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"archetypes": {
"items": {
"type": "string"
},
"type": "array"
},
"amenities": {
"items": {
"type": "string"
},
"type": "array"
},
"rooms": {
"items": {
"properties": {
"name": {
"type": "string"
},
"capacity": {
"type": "integer"
},
"price": {
"type": "string"
},
"amenities": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"photos_available": {
"type": "integer"
}
},
"type": "object"
},
"concierge": {
"properties": {
"positioning": {
"items": {
"type": "string"
},
"type": "array"
},
"suggested_questions": {
"items": {
"type": "string"
},
"type": "array"
},
"allowed_cta": {
"items": {
"type": "string"
},
"type": "array"
},
"owner_value": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"guardrails": {
"items": {
"type": "string"
},
"type": "array"
},
"missing_profile_data": {
"items": {
"type": "string"
},
"type": "array"
},
"source": {
"type": "string"
},
"license": {
"type": "string"
}
}
}🟢capabilities
Versiunea serverului MCP tria.ro, tool-urile publicate și VOCABULARUL complet, structurat: `tokeni` (interfața standard pentru intenții/facilități/experiențe/stil), `teme` (filtre avansate pe 4 piloni) și `criterii` (semnale avansate de ranking). Toate cu slug+etichetă, ca să ceri exact fără să ghicești și fără să confunzi axele. Plus ce e rezervat.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"type": "object",
"properties": {
"server": {
"type": "string"
},
"version": {
"type": "string"
},
"tools": {
"items": {
"type": "string"
},
"type": "array"
},
"resources": {
"description": "Resurse dereferențiabile prin resources/read (template-uri), unde există. Hărțile statice generate nu sunt expuse.",
"properties": {
"templates": {
"items": {
"properties": {
"uriTemplate": {
"type": "string"
},
"name": {
"type": "string"
},
"mimeType": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"rezolutie": {
"description": "Cum se citește câmpul `rezolutie` din rezultate",
"type": "string"
},
"vocabular": {
"properties": {
"tokeni": {
"description": "Vocabular public standard pentru agenți; tokenii interni ai catalogului nu sunt expuși.",
"items": {
"properties": {
"slug": {
"type": "string"
},
"label": {
"type": "string"
},
"input": {
"description": "Poate fi trimis în find_accommodations(tokeni)",
"type": "boolean"
},
"negabil": {
"description": "Poate fi trimis cu minus, ex. cultura-, pentru absența tokenului real de caracter",
"type": "boolean"
}
},
"type": "object"
},
"type": "array"
},
"model": {
"description": "Semantica vocabularului",
"type": "string"
},
"teme": {
"description": "FILTRU tematic (param `teme`), pe cei 4 piloni; aceleași filtre ca pe site. Multi-apartenență: o cazare ∈ mai multe teme.",
"items": {
"properties": {
"pilon": {
"type": "string"
},
"optiuni": {
"items": {
"properties": {
"slug": {
"type": "string"
},
"label": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"criterii": {
"description": "Vocabular de RANKING (param `criterii` = compozit, sau `sort` = o dimensiune).",
"items": {
"properties": {
"slug": {
"type": "string"
},
"label": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"functii": {
"description": "teme = filtru · criterii/sort = ordine; se combină",
"type": "string"
},
"where": {
"description": "Ce acceptă `where`",
"type": "string"
},
"nume": {
"description": "Ce acceptă `nume`",
"type": "string"
},
"arhetipuri": {
"description": "Cum se citesc arhetipurile/tokenii din rezultate",
"type": "string"
}
},
"type": "object"
},
"rezervat": {
"description": "Parametri planificați, încă inactivi",
"items": {
"type": "string"
},
"type": "array"
},
"updated_at": {
"type": "string"
}
}
}Prompts recomendados
find_accommodationsfind_accommodationsget_accommodationget_accommodationfind_accommodationsget_accommodationComunidad
Evidencia