TATUAT.RO — Tattoo & Piercing Supplies
Tattoo and piercing supply catalog (Romania): search, live stock, shipping cost, checkout link.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWbrowse_category에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"tatuat-mcp": {
"url": "https://api.tatuat.ro/mcp"
}
}
}원격 엔드포인트
https://api.tatuat.ro/mcpstreamable-http할 수 있는 일
도구 목록
도구 (6)
🟢search_products(query, limit)
Caută în catalogul tatuat.ro după nume, brand sau tip de produs și întoarce produse cu preț în RON, disponibilitate și link direct la fișa de produs. Folosește acest tool când clientul întreabă dacă un produs există, cât costă sau ce opțiuni sunt disponibile. Pentru detaliile unui produs anume, folosește după aceea get_product cu slug-ul întors aici.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Ce caută clientul, în cuvintele lui: nume de produs, brand, sau tip de produs (ex. „ace 0.30 RL\", „mașină rotativă\", „tuș negru\"). Minim două caractere ca să se facă efectiv o căutare."
},
"limit": {
"default": 10,
"description": "Câte rezultate să întoarcă, între 1 și 20. Implicit 10.",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Interogarea folosită efectiv, după curățare."
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte produse s-au găsit, maximum limita cerută."
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Identificatorul numeric stabil al produsului."
},
"slug": {
"type": "string",
"description": "Identificatorul textual stabil, folosit în URL."
},
"name": {
"type": "string",
"description": "Numele comercial al produsului, în română."
},
"url": {
"type": "string",
"description": "Adresa fișei de produs pe tatuat.ro."
},
"price": {
"description": "Prețul efectiv de plată (prețul redus dacă produsul e la promoție). La produsele cu variante e prețul CELEI MAI IEFTINE variante — vezi price_from.",
"type": [
"number",
"null"
]
},
"price_before": {
"description": "Prețul dinainte de reducere, sau null dacă produsul nu e la promoție.",
"type": [
"number",
"null"
]
},
"price_from": {
"type": "boolean",
"description": "Dacă true, `price` e cel mai mic preț dintre variante, nu prețul exact — anunță-l clientului ca „de la X RON\". Dacă false, `price` e prețul exact."
},
"currency": {
"type": "string",
"const": "RON",
"description": "Moneda prețului. Întotdeauna RON."
},
"in_stock": {
"type": "boolean",
"description": "Dacă produsul poate fi comandat acum."
},
"variant_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte variante are produsul (0 = produs simplu, fără variante de ales)."
},
"brand": {
"description": "Numele brandului, sau null dacă nu e setat.",
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"slug",
"name",
"url",
"price",
"price_before",
"price_from",
"currency",
"in_stock",
"variant_count",
"brand"
],
"additionalProperties": false
},
"description": "Produsele găsite, în ordinea de relevanță a magazinului."
}
},
"required": [
"query",
"count",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢calculate_shipping(lines, subtotal)
Calculează costul de transport, pragul pentru transport gratuit și cadourile atinse la prag pentru un coș tatuat.ro. Dă fie 'lines' (produsele coșului, ca tool-ul să citească prețul real din catalog), fie un 'subtotal' deja cunoscut. Folosește acest tool când clientul întreabă cât costă transportul sau cât mai trebuie să cumpere pentru livrare gratuită sau cadou.
입력 스키마
{
"type": "object",
"properties": {
"lines": {
"description": "Liniile coșului (maxim 50), ca tool-ul să calculeze subtotalul din prețurile reale ale catalogului. Coș gol = listă vidă. Folosește ori acest câmp, ori 'subtotal', niciodată ambele.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"description": "Slug-ul produsului, ca cel întors de search_products.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"product_id": {
"description": "Identificatorul numeric al produsului, alternativă la slug.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 9999,
"description": "Câte bucăți din acest produs sunt în coș."
}
},
"required": [
"quantity"
],
"description": "O linie de coș: exact unul dintre slug sau product_id, plus cantitatea."
}
},
"subtotal": {
"description": "Subtotalul coșului în RON, dacă e deja cunoscut (de exemplu calculat din prețurile întoarse de search_products). Folosește ori acest câmp, ori 'lines', niciodată ambele.",
"type": "number",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"subtotal": {
"type": "number",
"description": "Subtotalul folosit la calcul, în RON."
},
"shipping_fee": {
"type": "number",
"description": "Costul transportului pentru acest coș, în RON (0 = gratuit)."
},
"free_shipping": {
"type": "boolean",
"description": "Dacă transportul e gratuit la acest coș."
},
"amount_to_free_shipping": {
"type": "number",
"description": "Cât mai trebuie adăugat la coș, în RON, pentru transport gratuit (0 dacă e deja atins)."
},
"heavy_shipping": {
"type": "boolean",
"description": "Dacă tariful de mai sus vine din produse \"grele\" cu transport propriu, nu din tariful standard."
},
"currency": {
"type": "string",
"const": "RON",
"description": "Moneda tuturor sumelor. Întotdeauna RON."
},
"gifts_reached": {
"type": "array",
"items": {
"type": "string"
},
"description": "Numele cadourilor pentru care coșul a atins deja pragul."
},
"next_gift": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Numele cadoului."
},
"amount_needed": {
"type": "number",
"description": "Cât mai trebuie adăugat la coș, în RON, ca să fie atins acest cadou."
}
},
"required": [
"name",
"amount_needed"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Următorul cadou de atins și cât mai e nevoie, sau null dacă toate cadourile au fost atinse."
}
},
"required": [
"subtotal",
"shipping_fee",
"free_shipping",
"amount_to_free_shipping",
"heavy_shipping",
"currency",
"gifts_reached",
"next_gift"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_stock(slug, variant_id, qty)
Verifică disponibilitatea reală a unui produs (sau al unei variante a lui, ex. o mărime) pentru o cantitate cerută de client, folosind slug-ul întors de search_products. Întoarce una din patru stări — disponibil integral acum, parțial disponibil cu rest pe precomandă, precomandă integrală (stoc 0), sau cantitate la plafonul maxim comandabil — plus un text pe care îl poți spune clientului fără să inventezi o cifră.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Identificatorul textual (slug) al produsului, ca cel întors de search_products sau din URL-ul /product/<slug>."
},
"variant_id": {
"description": "ID-ul variantei (ex. mărimea acului) al cărei stoc se verifică. Omite pentru produsele fără variante — sau ca să se verifice varianta implicită a produsului.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"qty": {
"default": 1,
"description": "Câte bucăți vrea clientul să comande. Implicit 1, maximum 9999.",
"type": "integer",
"minimum": 1,
"maximum": 9999
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug-ul produsului verificat."
},
"product_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Identificatorul numeric stabil al produsului."
},
"product_name": {
"type": "string",
"description": "Numele comercial al produsului."
},
"variant_id": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "ID-ul variantei verificate, sau null dacă produsul nu are variante."
},
"variant_name": {
"description": "Numele variantei verificate (ex. mărimea), sau null dacă produsul nu are variante.",
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "Adresa fișei de produs pe tatuat.ro."
},
"requested_qty": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Cantitatea cerută în input."
},
"state": {
"type": "string",
"enum": [
"in_stock",
"partial",
"preorder",
"max"
],
"description": "Starea de stoc: in_stock = toată cantitatea cerută e disponibilă acum; partial = doar o parte e disponibilă acum, restul intră pe precomandă; preorder = stoc 0, toată cantitatea intră pe precomandă; max = cantitatea cerută atinge exact plafonul maxim comandabil pe această linie."
},
"available_now": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte bucăți din cantitatea cerută se pot onora chiar acum, din stocul curent."
},
"backorder_qty": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte bucăți din cantitatea cerută ar intra pe precomandă (0 dacă tot e disponibil acum)."
},
"max_orderable": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Cantitatea maximă comandabilă acum pe această linie de produs (plafon de linie)."
}
},
"required": [
"slug",
"product_id",
"product_name",
"variant_id",
"variant_name",
"url",
"requested_qty",
"state",
"available_now",
"backorder_qty",
"max_orderable"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢browse_category(category_id, sort, limit, offset)
Întoarce o pagină de produse dintr-o categorie tatuat.ro (sau din tot catalogul, dacă nu se dă un ID de categorie), cu preț în RON, disponibilitate și link direct la fișa de produs. Folosește acest tool când clientul vrea să vadă ce e disponibil într-o categorie sau vrea produsele cele mai populare/ieftine/scumpe/noi. Pentru un produs anume folosește după aceea get_product cu slug-ul întors aici.
입력 스키마
{
"type": "object",
"properties": {
"category_id": {
"default": null,
"description": "ID-ul numeric al categoriei ale cărei produse se listează. Omis sau null = tot catalogul, ca „Toate produsele\" din magazin.",
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"sort": {
"default": "for_you",
"description": "Cum se ordonează rezultatele: for_you, popular, cheap, expensive, newest. Implicit „for_you\".",
"type": "string",
"enum": [
"for_you",
"popular",
"cheap",
"expensive",
"newest"
]
},
"limit": {
"default": 10,
"description": "Câte produse să întoarcă, între 1 și 20. Implicit 10.",
"type": "integer",
"minimum": 1,
"maximum": 20
},
"offset": {
"default": 0,
"description": "Câte produse se omit de la începutul listei, pentru paginare. Implicit 0.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"category_id": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "ID-ul categoriei cerute; null înseamnă tot catalogul."
},
"sort": {
"type": "string",
"enum": [
"for_you",
"popular",
"cheap",
"expensive",
"newest"
],
"description": "Sortarea efectiv folosită pentru această pagină."
},
"offset": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offset-ul efectiv folosit pentru paginare."
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte produse s-au întors în această pagină."
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Identificatorul numeric stabil al produsului."
},
"slug": {
"type": "string",
"description": "Identificatorul textual stabil, folosit în URL."
},
"name": {
"type": "string",
"description": "Numele comercial al produsului, în română."
},
"url": {
"type": "string",
"description": "Adresa fișei de produs pe tatuat.ro."
},
"price": {
"description": "Prețul efectiv de plată (prețul redus dacă produsul e la promoție). La produsele cu variante e prețul CELEI MAI IEFTINE variante — vezi price_from.",
"type": [
"number",
"null"
]
},
"price_before": {
"description": "Prețul dinainte de reducere, sau null dacă produsul nu e la promoție.",
"type": [
"number",
"null"
]
},
"price_from": {
"type": "boolean",
"description": "Dacă true, `price` e cel mai mic preț dintre variante, nu prețul exact — anunță-l clientului ca „de la X RON\". Dacă false, `price` e prețul exact."
},
"currency": {
"type": "string",
"const": "RON",
"description": "Moneda prețului. Întotdeauna RON."
},
"in_stock": {
"type": "boolean",
"description": "Dacă produsul poate fi comandat acum."
},
"variant_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte variante are produsul (0 = produs simplu, fără variante de ales)."
},
"brand": {
"description": "Numele brandului, sau null dacă nu e setat.",
"type": [
"string",
"null"
]
}
},
"required": [
"product_id",
"slug",
"name",
"url",
"price",
"price_before",
"price_from",
"currency",
"in_stock",
"variant_count",
"brand"
],
"additionalProperties": false
},
"description": "Produsele categoriei, în ordinea sortării cerute."
}
},
"required": [
"category_id",
"sort",
"offset",
"count",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_product(slug)
Întoarce fișa completă a unui produs de pe tatuat.ro după slug: nume, descriere, preț efectiv în RON (cu prețul dinainte de reducere dacă e cazul), disponibilitate, link direct la fișă, brand și variantele cu preț și stoc propriu. Folosește slug-ul întors de search_products. Dacă slug-ul nu corespunde unui produs activ, found este false — nu e o eroare.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Slug-ul produsului, exact cel întors de search_products sau cel din URL-ul fișei (ex. „ace-cartus-0-30-rl\"), fără prefixul /product/."
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"found": {
"type": "boolean",
"description": "Dacă slug-ul corespunde unui produs activ pe tatuat.ro. false ≠ eroare."
},
"product": {
"anyOf": [
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Identificatorul numeric stabil al produsului."
},
"slug": {
"type": "string",
"description": "Identificatorul textual stabil, folosit în URL."
},
"name": {
"type": "string",
"description": "Numele comercial al produsului, în română."
},
"description": {
"type": "string",
"description": "Descrierea produsului, curățată de HTML și trunchiată la maximum 500 de caractere, la graniță de cuvânt."
},
"url": {
"type": "string",
"description": "Adresa fișei de produs pe tatuat.ro."
},
"price": {
"description": "Prețul efectiv de plată (prețul redus dacă produsul e la promoție). La produsele cu variante e prețul CELEI MAI IEFTINE variante — vezi price_from și lista `variants`.",
"type": [
"number",
"null"
]
},
"price_before": {
"description": "Prețul dinainte de reducere, sau null dacă produsul nu e la promoție.",
"type": [
"number",
"null"
]
},
"price_from": {
"type": "boolean",
"description": "Dacă true, `price` e cel mai mic preț dintre variante, nu prețul exact — anunță-l clientului ca „de la X RON\" și folosește `variants` pentru prețul variantei alese. Dacă false, `price` e prețul exact."
},
"currency": {
"type": "string",
"const": "RON",
"description": "Moneda prețului. Întotdeauna RON."
},
"in_stock": {
"type": "boolean",
"description": "Dacă produsul poate fi comandat acum."
},
"variant_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Câte variante are produsul (0 = produs simplu, fără variante de ales)."
},
"brand": {
"description": "Numele brandului, sau null dacă nu e setat.",
"type": [
"string",
"null"
]
},
"sku": {
"description": "Codul SKU al produsului, sau null dacă nu e setat.",
"type": [
"string",
"null"
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"variant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Identificatorul numeric al variantei."
},
"name": {
"type": "string",
"description": "Numele variantei (ex. mărime, capacitate, culoare)."
},
"sku": {
"description": "Codul SKU al variantei, sau null dacă nu e setat.",
"type": [
"string",
"null"
]
},
"price": {
"description": "Prețul efectiv al variantei (prețul redus dacă are o reducere reală).",
"type": [
"number",
"null"
]
},
"in_stock": {
"type": "boolean",
"description": "Dacă această variantă poate fi comandată acum."
},
"is_default": {
"type": "boolean",
"description": "Dacă e varianta selectată implicit pe fișa produsului de pe tatuat.ro."
}
},
"required": [
"variant_id",
"name",
"sku",
"price",
"in_stock",
"is_default"
],
"additionalProperties": false
},
"description": "Variantele produsului, cu preț și stoc propriu; listă vidă dacă produsul e simplu."
}
},
"required": [
"product_id",
"slug",
"name",
"description",
"url",
"price",
"price_before",
"price_from",
"currency",
"in_stock",
"variant_count",
"brand",
"sku",
"variants"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Fișa produsului, sau null dacă slug-ul nu corespunde niciunui produs activ."
}
},
"required": [
"found",
"product"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_checkout(items)
Generează un link semnat către checkout-ul tatuat.ro pentru coșul dat (produse, variante, cantități, opțiuni). Linkul e valabil un timp limitat și NU conține prețuri — prețul final se confirmă pe site. Folosește acest tool când clientul e decis să cumpere; pentru a găsi produse sau prețuri folosește search_products/get_product înainte.
입력 스키마
{
"type": "object",
"properties": {
"items": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Identificatorul numeric stabil al produsului, ca cel întors de search_products."
},
"variant_id": {
"default": null,
"description": "Varianta aleasă a produsului, sau null dacă produsul nu are variante.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"qty": {
"type": "integer",
"minimum": 1,
"maximum": 9999,
"description": "Cantitatea cerută din acest produs. Minim 1 — un coș nu poate avea o cantitate zero sau negativă — și maximum 9999."
},
"options": {
"default": {},
"description": "Opțiuni alese pentru produs, ca pereche nume-valoare (ex. {\"culoare\":\"negru\"}), dacă produsul are. Cel mult 20 opțiuni; numele până la 64 caractere, valoarea până la 200.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"additionalProperties": {
"type": "string",
"maxLength": 200
}
}
},
"required": [
"product_id",
"qty"
]
},
"description": "Coșul de cumpărat: cel puțin un produs, maximum 20 linii."
}
},
"required": [
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Link de finalizare a comenzii pe tatuat.ro. Prețul se confirmă pe site la finalizare, nu prin acest link."
},
"expires_in_seconds": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Cât timp, în secunde, mai e valabil link-ul înainte să trebuiască generat din nou."
}
},
"required": [
"url",
"expires_in_seconds"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}커뮤니티
증거