MCP: katalog produktů
Nástroje MCP pro produkty, kategorie, značky a vlastnosti: oprávnění, potvrzení, kredity, důsledky zápisu a všechny parametry včetně operací.
Čtení a úpravy katalogu: vyhledání a detail produktu, strom kategorií a jejich obrázky, značky, vlastnosti a ceníky, tabulky velikostí a informační panely, zakládání produktů rovnou s variantami a údaji pro dopravu, náhled importu z jiného e-shopu a stav importů, úpravy produktů včetně obsahu stránky produktu, údajů GPSR, běžné ceny a sazby DPH existujících variant, změny struktury variant (z jednoduchého produktu variantní a zpět) a hromadná AI úprava i s jejím stavem.
Nástroje volá klient přes server MCP na doméně obchodu, například https://muj-eshop.cz/api/mcp, a v odpovědi na tools/list dostane jen ty, na jejichž oprávnění klíč dosáhne. Jak server mluví, kdy se ptá člověka a jak se změny vracejí, popisuje článek MCP server.
U každého nástroje stojí oprávnění, které chce, jestli se server před provedením zeptá člověka a kudy, jestli volání strhne kredity obchodu nebo peníze z karty, co vrací pro deník změn a jakou větu o důsledku člověk v potvrzení uvidí. Všechno z toho se vyhodnocuje z téhož kódu, podle kterého se server rozhoduje. Popisy parametrů jsou převzaté ze schématu, které server posílá v tools/list; kde se v něm text obrací přímo k modelu, je tady převedený do vykání. Povinnost parametru platí uvnitř objektu, ve kterém parametr leží.
Před zápisem, který přepisuje nebo maže, před útratou kreditů nebo platbou kartou a před hledáním mimo obchod se server ptá člověka a do té doby neprovede nic. Nejdřív použije schválení, které pro totéž volání se stejnými hodnotami už v administraci leží schválené. Jinak se zeptá formulářem, když ho klient deklaruje a politika akce ho dovoluje; formulář potvrzuje ten, kdo drží klíč, takže před ukradeným klíčem takové potvrzení nechrání. Otázka ve formuláři nese pod nadpisem „Co se změní“ tytéž řádky jako stránka schválení. Klient s elicitací URL dostane odkaz na stránku schválení v administraci a klient bez elicitace odmítnutí approval_required s odkazem v _meta; po schválení volání zopakuje se stejnými hodnotami. Na stránce schválení rozhoduje jen přihlášený člověk, kterého u každé akce jmenuje odrážka Potvrzení přes MCP, a účet podpory SHOPZI nikdy. Když politika nedovoluje nic, co klient umí, přijde odmítnutí confirmation_required a neprovede se nic. Výsledek potvrzeného volání nese v _meta["cz.shopzi/confirmation"] údaj, že akci potvrdil člověk a kde (form nebo approval), a v obsahu českou větu pro model, u placené akce i s cenou a zůstatkem kreditů z dotazu. Na otázku formulářem je 15 minut, schválení na stránce platí 60 minut, pokud u akce není uvedeno jinak.
Zápisové nástroje vracejí v poli change_id ID záznamu v deníku změn; co pole u kterého nástroje nese, říká jeho odrážka Deník změn. Změnu z deníku vrací shopzi_undo_change podle jejího druhu: obnoví předchozí hodnoty, u skladu zapíše vyrovnávací pohyb, u běžné ceny zapíše návrat do 30denní historie cen (nic z ní nemaže) a změnu, která už opustila obchod nebo stála peníze (odeslaný e-mail, stržené kredity, platbu kartou), odmítne s vysvětlením.
shopzi_search_products
Vrátí stránku produktů seřazenou od nejnovějších, s parametrem sort od nejlevnějšího nebo od nejdražšího, a k ní souhrn spočítaný nad celým výběrem: průměr, součet, minimum, maximum a zásobu. Produkt najde podle názvu, značky, adresy nebo SKU a výpis zúží kategorií, stavem nebo časem poslední změny.
- Oprávnění:
products:read, u klíče „Katalog: produkty, kategorie, dodavatelé (čtení)“. - Druh: čtení (
readOnlyHint). - Potvrzení přes MCP: ne.
- Kredity a platba kartou: ne.
shopzi_search_products: parametry
search(text, 1 až 120 znaků; nepovinný): Text v názvu produktu, ve ZNAČCE, v adrese (slug) nebo v SKU varianty. Hledá se i uvnitř slova. Na „kolik mám produktů od značky X“ tedy stačí poslat jméno té značky a přečísttotal.totalpočítá jen to, co dotazu odpovídá.categoryId(__uncategorizednebo UUID; nepovinný): ID kategorie zeshopzi_list_catalog(resource: categories). Počítá se PŘÍMÉ zařazení, ne podstrom, přesně jako filtr v seznamu produktů: u nadřazené kategorie tedy vrátí jen to, co je přiřazené přímo k ní. Hodnota__uncategorizedvrátí produkty bez jakéhokoli zařazení.status(text; nepovinný): Filtr stavu, napříkladactivenebodraft.updatedSince(text se vzorem; nepovinný): ISO datum. Vrátí jen produkty ZMĚNĚNÉ od té doby, tedy nové i upravené.sort(jedna z hodnotprice_ascaprice_desc; nepovinný): Řazení.price_asc= od nejlevnějšího,price_desc= od nejdražšího. Použijte VŽDY, když se ptá na nejlevnější, nejdražší nebo cenové pořadí: bez toho dostanete produkty od nejnovějšího a o ceně z nich nic neplyne. Cenové řazení vrací první stránku anext_cursoru něj neplatí.limit(celé číslo od 1 do 100, výchozí25; nepovinný): Počet položek na stránku, 1 až 100. Velká stránka se do jedné odpovědi nemusí vejít a nástroj ji pak odmítne, což stojí krok navíc: berte jen tolik položek, kolik na odpověď opravdu potřebujete.cursor(text; nepovinný): Průběžná pozice z předchozí odpovědi (next_cursor). Vynechte pro první stránku.
shopzi_get_product
Vrátí jeden produkt i s variantami, cenami, zásobou a zařazením do kategorií včetně té hlavní. Každá varianta nese svůj název složený z hodnot voleb, třeba Černá / 42, a každá cena přijde v haléřích i jako hotový text pod jménem bez _minor, třeba price vedle price_minor. Parametr include přidá další karty editoru ve tvaru, v jakém je přijímá shopzi_manage_product: modifikátory, vlastnosti, vazby, složení balíčku, překlady, obsah stránky produktu, velkoobchodní ceny a podrobnosti (DPH, značka, údaje GPSR, vyloučení z odstoupení, další SEO a logistika variant).
- Oprávnění:
products:read, u klíče „Katalog: produkty, kategorie, dodavatelé (čtení)“. - Druh: čtení (
readOnlyHint). - Potvrzení přes MCP: ne.
- Kredity a platba kartou: ne.
shopzi_get_product: parametry
productId(UUID; povinný): ID produktu (UUID) zshopzi_search_products.include(pole, položka: jedna z hodnotmodifiers,attributes,links,bundle,translations,page_content,wholesaleadetails, nejvýš 8 položek; nepovinný): Karty navíc. attributes = filtrovatelné vlastnosti acustom_params(tabulka Parametry), page_content = obsah pod produktem (bloky, výjimky panelů), wholesale = velkoobchod (cena varianty bez DPH), details = DPH, značka, GPSR, odstoupení, SEO navíc, logistika variant. Berte jen potřebné: každá sada odpověď zvětší.
shopzi_list_catalog
Vrátí podle resource strom kategorií (s detail: true i popisy, SEO a obrázek každé kategorie), značky a výrobce uvedené u produktů, definice vlastností, cenové hladiny včetně velkoobchodních, tabulky velikostí, informační panely stránky produktu, stav hromadné AI úpravy produktů (ai_runs), nebo posledních dvacet importů z jiného e-shopu (imports). V položkách katalogu umí hledat podle názvu.
- Oprávnění:
products:read, u klíče „Katalog: produkty, kategorie, dodavatelé (čtení)“. - Druh: čtení (
readOnlyHint). - Potvrzení přes MCP: ne.
- Kredity a platba kartou: ne.
shopzi_list_catalog: oblasti
categoriesvendorsattributesprice_listssize_guidesinfo_panelsai_runsimports
shopzi_list_catalog: parametry
resource(jedna z hodnotcategories,vendors,attributes,price_lists,size_guides,info_panels,ai_runsaimports; povinný): Která část katalogu.search(text, 1 až 120 znaků; nepovinný): Text v názvu. Ucategoriesse hledá i v názvech nadřazených kategorií (takže „nábytek sedačky“ najde Sedačky pod Nábytkem), uvendorsi v adrese (slug), uattributesi v klíči vlastnosti. Hledá se i uvnitř slova a na pořadí slov nezáleží.totalpočítá jen to, co dotazu odpovídá.detail(truenebofalse; nepovinný): Jencategories: true přidá popisy, H1, SEO, obrázek a příznaky (jména polí jako vshopzi_manage_category). Odpověď je velká: zuž jisearchnebolimit.limit(celé číslo od 1 do 100, výchozí25; nepovinný): Počet položek na stránku, 1 až 100. Velká stránka se do jedné odpovědi nemusí vejít a nástroj ji pak odmítne, což stojí krok navíc: berte jen tolik položek, kolik na odpověď opravdu potřebujete.offset(celé číslo od 0 do 100000, výchozí0; nepovinný): Kolik položek přeskočit. 0 = první stránka.
shopzi_manage_product
Zakládá (nový produkt rovnou i s variantami, hmotností, rozměry, nákupní cenou a vlastními parametry), upravuje (včetně značky, údajů GPSR, vyloučení z odstoupení a SEO) a archivuje produkty a spravuje jejich zařazení do kategorií, varianty, modifikátory, vlastnosti, vazby, překlady, složení balíčku, běžné i velkoobchodní ceny a obsah stránky produktu (tabulka velikostí, sestavený popis z bloků, nadpis nad popisem, výjimky informačních panelů); hromadně přepíná stav, z adresy jiného e-shopu připraví náhled importu (spouští ho obchodník v průvodci), potvrzuje dokončený import a řídí hromadnou AI úpravu. Strukturu variant mění set_variant_axes (z jednoduchého produktu udělá variantní), remove_variants a collapse_to_simple (zpátky na jednoduchý); tyto tři operace vrátit nejde, a proto odmítnou variantu se zásobou, s objednávkami nebo v balíčku. Změna běžné ceny (set_retail_price) se zapisuje do 30denní historie cen podle § 12a a vrací se dalším pohybem ceny zpátky. set_vat_rate změní sazbu DPH všem variantám: cena s DPH zůstane, mění se základ daně dalších prodejů a vystavené doklady zůstanou beze změny. Konkrétní produkt nesmaže; mazat umí jen nedotčené ukázkové produkty ze startovního obsahu.
- Oprávnění:
products:write, u klíče „Katalog: produkty, kategorie a číselníky (zápis)“. - Druh: zápis, který umí přepsat nebo smazat existující data (
destructiveHint), sahá mimo obchod na veřejný internet (openWorldHint). - Potvrzení přes MCP: ano: formulář v klientu, který potvrdí ten, kdo drží klíč; jinak odkaz na stránku schválení přes elicitaci URL; jinak odkaz na stránku schválení v odmítnutí
approval_required. Na stránce schválení rozhoduje vlastník nebo manažer obchodu. - Kredity a platba kartou: podle
operation, viz seznam níž. - Deník změn: výsledek nese
change_id. ID záznamu v deníku. Předejte ho doshopzi_undo_change. - Věta o důsledku, kterou člověk uvidí v potvrzení: podle
operation, viz seznam níž.
shopzi_manage_product: operace (produkt a zařazení)
-
create(založit)- Kredity a platba kartou: ne.
-
update(upravit)- Kredity a platba kartou: ne.
-
archive(archivovat)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Archivace stáhne produkt z e-shopu zákazníkům i z vyhledávačů. Vrátit to jde jedním krokem přes „vrátit zpět“.
-
-
assign_category(přiřadit kategorii)- Kredity a platba kartou: ne.
-
unassign_category(odebrat z kategorie)- Kredity a platba kartou: ne.
-
set_categories(nastavit zařazení do kategorií)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Když je Agent nastavuje najednou, nastaví se kategorie jako CELÁ sada: kategorie, která na kartě není, z produktu zmizí.
-
-
bulk_status(hromadně přepnout stav)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Hromadná změna stavu se provede na VŠECH produktech vypsaných níž, naráz a přesně na nich (jiných se nedotkne): publikování je zveřejní v e-shopu, koncept a archivace je z něj stáhnou zákazníkům i z vyhledávačů. Vrátit to jde jedním krokem přes „vrátit zpět“, celou dávku najednou.
-
-
delete_samples(uklidit ukázkové produkty)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Úklid ukázkových produktů vzít zpět nejde: s produkty se smažou i jejich fotky z úložiště a zásoba se odepíše. Týká se jen produktů ze startovního obsahu, kterých se od té doby nikdo nedotkl, a dávku si vybírá sám, takže karta níž NEUKÁŽE ani jejich počet, ani jména: nechte si je před potvrzením vypsat („vyjmenuj ukázkové produkty, které bys smazal“).
-
Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.
shopzi_manage_product: operace (karty editoru)
-
save_modifiers(přepsat modifikátory)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Uložení modifikátorů PŘEPÍŠE celou jejich sadu: co v ní není, z produktu zmizí.
-
-
save_attributes(přepsat vlastnosti)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Uložení vlastností PŘEPÍŠE celou jejich sadu: co v ní není, z produktu zmizí.
-
-
save_links(přepsat propojení s produkty)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Uložení vazeb PŘEPÍŠE celou jejich sadu: co v ní není, z produktu zmizí.
-
-
save_translation(uložit překlad)- Kredity a platba kartou: ne.
-
save_bundle(přepsat obsah balíčku)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Uložení složení balíčku PŘEPÍŠE celou sadu: co v ní není, z balíčku zmizí.
-
-
save_page_content(uložit obsah stránky produktu)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Bloky obsahu pod produktem se nahradí CELOU sadou: blok, který v seznamu není, zmizí.
-
Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.
shopzi_manage_product: operace (varianty, ceny a DPH)
-
add_variants(přidat varianty)- Kredity a platba kartou: ne.
-
update_variants(upravit údaje variant)- Kredity a platba kartou: ne.
-
set_wholesale_price(nastavit velkoobchodní cenu)- Kredity a platba kartou: ne.
-
set_wholesale_terms(nastavit podmínky velkoobchodu)- Kredity a platba kartou: ne.
-
set_retail_price(změnit cenu)- Kredity a platba kartou: ne.
-
remove_variants(odebrat varianty)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Odebrané varianty zmizí z e-shopu i z produktu a vzít to zpět nejde: znovu je lze jen přidat jako nové, s novou cenou a bez historie cen. Variantu se zásobou, s objednávkami nebo v balíčku Agent neodebere.
-
-
set_variant_axes(rozdělit produkt na varianty)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Z jednoduchého produktu se stane variantní. Stávající varianta si ponechá cenu, zásobu i SKU, nové varianty přibudou s cenou z karty. Vzít zpět to nejde: zpátky na jednoduchý produkt to převede jen převod, který varianty odebere.
-
-
collapse_to_simple(převést na produkt bez variant)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Variantní produkt se převede na jednoduchý: všechny varianty a vlastnosti, podle kterých se lišily, zmizí a zůstane jedna varianta s cenou a údaji té výchozí. Vzít zpět to nejde. Produkt, jehož varianta má zásobu, objednávky nebo je v balíčku, Agent nepřevede.
-
-
set_vat_rate(změnit sazbu DPH)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Nová sazba DPH platí pro všechny varianty a další prodeje. Cena s DPH zůstává, mění se základ daně; už vystavené doklady se nemění. Vrátit to jde přes „vrátit zpět“.
-
Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.
shopzi_manage_product: operace (AI úprava a import)
-
start_ai_run(spustit a zaplatit hromadnou AI úpravu)-
Kredity a platba kartou: strhne kredity obchodu.
-
Věta o důsledku v potvrzení:
Spuštění hromadné AI úpravy STOJÍ KREDITY: strhávají se při zadání a nevracejí se, ani když se výsledek nelíbí. Kolik to bude a kolik vám zbývá, stojí na kartě níž. Do produktů se ale nic nezapíše: úprava vyrobí návrhy a čeká, až je v Produktech schválíte vy, a stisknout „Použít“ za vás nemůžu. Vzít zpět to nejde.
-
-
regenerate_ai_item(napsat návrh znovu (další kredit))-
Kredity a platba kartou: strhne kredity obchodu.
-
Věta o důsledku v potvrzení:
Přegenerování jednoho návrhu je další kredit a původní návrh přepíše. Vzít zpět to nejde.
-
-
cancel_ai_run(zastavit hromadnou AI úpravu)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Zastavení hromadné AI úpravy platí pro tu, která PRÁVĚ BĚŽÍ: doběhne rozpracovaná položka, kredity za ni se nevracejí a znovu se ta úprava nerozjede. Vzít zpět to nejde.
-
-
revert_ai_run(vrátit hromadnou AI úpravu)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Vrácení platí pro POSLEDNÍ dokončenou úpravu a přepíše zpátky jen ty hodnoty, které se pořád rovnají tomu, co napsala AI, takže vaše pozdější úpravy zůstanou; fotky, které úprava k produktům přidala, se ale smažou z úložiště. Vzít zpět to nejde.
-
-
accept_import(přijmout výsledek importu)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Přijetí importu produkty nemění: ty už v obchodě leží jako koncepty. Zavře ale obrazovku s výsledkem i tlačítko „Zahodit vše“, takže hromadně se toho importu pak zbavit nedá. Kolik produktů to je, v jakém rozpětí mají ceny a jak se jmenují, stojí na kartě níž. Přijetí jde vzít zpět: obrazovka i tlačítko se vrátí.
-
-
import_from_url(připravit import z jiného e-shopu)-
Kredity a platba kartou: ne.
-
Věta o důsledku v potvrzení:
Uložení modifikátorů, vlastností, vazeb nebo složení balíčku PŘEPÍŠE celou tu sadu: co v ní není, z produktu zmizí; u kategorií to platí stejně, když je Agent nastavuje najednou. Hromadná změna stavu se provede na VŠECH produktech vypsaných níž, naráz a přesně na nich (jiných se nedotkne): publikování je zveřejní v e-shopu, koncept a archivace je z něj stáhnou zákazníkům i z vyhledávačů. Vrátit to jde jedním krokem přes „vrátit zpět“, celou dávku najednou. Úklid ukázkových produktů vzít zpět nejde: s produkty se smažou i jejich fotky z úložiště a zásoba se odepíše. Týká se jen produktů ze startovního obsahu, kterých se od té doby nikdo nedotkl, a dávku si vybírá sám, takže karta níž NEUKÁŽE ani jejich počet, ani jména: nechte si je před potvrzením vypsat („vyjmenuj ukázkové produkty, které bys smazal“). Spuštění hromadné AI úpravy STOJÍ KREDITY: strhávají se při zadání a nevracejí se, ani když se výsledek nelíbí. Kolik to bude a kolik vám zbývá, stojí na kartě níž. Do produktů se ale nic nezapíše: úprava vyrobí návrhy a čeká, až je v Produktech schválíte vy, a stisknout „Použít“ za vás nemůžu. Přegenerování jednoho návrhu je další kredit a původní návrh přepíše. Zastavení hromadné AI úpravy platí pro tu, která PRÁVĚ BĚŽÍ: doběhne rozpracovaná položka, kredity za ni se nevracejí a znovu se ta úprava nerozjede. Vrácení platí pro POSLEDNÍ dokončenou úpravu a přepíše zpátky jen ty hodnoty, které se pořád rovnají tomu, co napsala AI, takže vaše pozdější úpravy zůstanou; fotky, které úprava k produktům přidala, se ale smažou z úložiště. Žádnou ze čtyř proto vzít zpět nejde. Přijetí importu produkty nemění: ty už v obchodě leží jako koncepty. Zavře ale obrazovku s výsledkem i tlačítko „Zahodit vše“, takže hromadně se toho importu pak zbavit nedá. Kolik produktů to je, v jakém rozpětí mají ceny a jak se jmenují, stojí na kartě níž. Přijetí jde jako jediné z téhle skupiny vzít zpět: obrazovka i tlačítko se vrátí.
-
Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.
shopzi_manage_product: parametry operation až minWholesaleQty
operation(jedna z hodnotcreate,update,archive,assign_category,unassign_category,set_categories,save_modifiers,save_attributes,save_links,save_translation,save_bundle,save_page_content,add_variants,update_variants,bulk_status,set_wholesale_price,set_wholesale_terms,set_retail_price,delete_samples,start_ai_run,regenerate_ai_item,cancel_ai_run,revert_ai_run,accept_import,import_from_url,remove_variants,set_variant_axes,collapse_to_simpleaset_vat_rate; povinný): create = založit nový produkt; update = změnit pole existujícího; archive = stáhnout z prodeje (data zůstanou, jde vrátit; SMAZAT produkt nástroj neumí, na žádost o smazání nabídněte archive); assign_category / unassign_category = přidat nebo odebrat kategorii; set_categories = nastavit CELOU sadu kategorií jedním krokem (a hlavní z nich); save_modifiers / save_attributes / save_links / save_bundle = PŘEPSAT celou danou sadu; save_translation = uložit jeden jazyk; add_variants = přidat nové varianty; update_variants = upravit údaje existujících variant, u jednoduchého produktu jeho jediné základní varianty (bez ceny); bulk_status = HROMADNĚ přepnout stav vyjmenovaných produktů; set_wholesale_price = nastavit velkoobchodní cenu vyjmenovaným variantám; set_retail_price = změnit BĚŽNOU cenu (s DPH) vyjmenovaným variantám, i u jednoduchého produktu (ID jeho jediné varianty); set_wholesale_terms = nastavit vyjmenovaným produktům zařazení do velkoobchodu a minimální odběr; delete_samples = uklidit ukázkové produkty ze startovního obsahu (bez ID, bez výběru); start_ai_run = SPUSTIT hromadnou AI úpravu vyjmenovaných produktů (productIdsa k tomuaiContentFieldsneboaiImageOps); stojí to kredity a výsledky pak schvaluje člověk v Produktech; regenerate_ai_item = nechat napsat znovu návrh u JEDNOHO produktu (productId) v úpravě, která čeká na schválení, volitelně snote, co bylo špatně; cancel_ai_run = zastavit probíhající hromadnou AI úpravu produktů; revert_ai_run = vrátit změny poslední dokončené hromadné AI úpravy produktů; accept_import = potvrdit výsledek dokončeného importu z cizího e-shopu („Uložit vše“); produkty už v obchodě leží jako koncepty, tímhle se jen zavře obrazovka s výsledkem i tlačítko „Zahodit vše“; import_from_url = najít katalog jiného e-shopu podlesourceUrla připravit náhled importu (spouští ho obchodník); remove_variants (variantIds), set_variant_axes (axes,baseAxisValues,variants) a collapse_to_simple = struktura variant, NEVRATNĚ; set_vat_rate = sazba DPH existujícího produktu (fields.vatRate).productId(UUID; nepovinný): ID produktu zeshopzi_search_products. Povinné u všeho kroměcreate.categoryId(UUID; nepovinný): ID kategorie zeshopzi_list_catalog(resource: categories). Povinné u assign_category a unassign_category.categoryIds(pole, položka: UUID; nepovinný): Jen uset_categories: CELÁ sada kategorií, ve kterých má produkt být, zeshopzi_list_catalog(resource: categories). Kategorie, která tu není, se z produktu ODEBERE; prázdný seznam ho vyřadí ze všech.primaryCategoryId(UUID; nepovinný): Jen uset_categories: která z těch kategorií je hlavní (drobečková navigace a adresa produktu). Musí být mezicategoryIds. Vynechané = první ze sady.productIds(pole, položka: UUID, 1 až 100 položek; nepovinný): Ubulk_status,set_wholesale_termsastart_ai_run: ID produktů zeshopzi_search_products, vyjmenovaná. Nejvýše 100. Filtr ani „všechny produkty“ tenhle nástroj nepřijímá.aiContentFields(pole, položka: jedna z hodnottitle,short_description,description,meta_title,meta_description,geo_summary,faqaattributes; nepovinný): Jenstart_ai_run: která textová pole má AI napsat.title= název,short_description= krátký popis,description= popis,meta_titleameta_description= SEO,geo_summary= shrnutí pro AI vyhledávače,faq= časté dotazy,attributes= vlastnosti. Aspoň jedno pole nebo aspoň jedna operace s fotkami.aiImageOps(pole, položka: jedna z hodnotalt_text,image_generate_missing,image_upscaleaimage_background; nepovinný): Jenstart_ai_run: co s fotkami.alt_text= popisky obrázků,image_generate_missing= vyrobit fotku produktům, které žádnou nemají,image_upscale= převykreslit fotku ve vyšší kvalitě,image_background= sjednotit pozadí. VŠECHNY tři obrazové se účtují ZA KAŽDOU FOTKU každého vybraného produktu, takže u velkého výběru vyjdou násobně dráž než texty.aiFillMissingOnly(truenebofalse; nepovinný): Jenstart_ai_run: true = doplnit jen pole, která jsou PRÁZDNÁ, a nikdy nepřepsat text, který obchodník napsal sám. Používejte, kdykoli obchodník řekne „doplň“ místo „přepiš“.aiInstructions(text, nejvýš 600 znaků; nepovinný): Jenstart_ai_run: pokyn obchodníka k tónu, délce nebo cílovému zákazníkovi, který se přidá ke každému textu. Na fotky se neuplatňuje.note(text, nejvýš 300 znaků; nepovinný): Jenregenerate_ai_item: co bylo na návrhu špatně, aby ho AI napsala jinak.variantIds(pole, položka: UUID, 1 až 100 položek; nepovinný): Jen uset_wholesale_price,set_retail_pricearemove_variants: ID variant zeshopzi_get_product, vyjmenovaná. Nejvýše 100. Filtr ani „všechny varianty“ tenhle nástroj nepřijímá.wholesaleNetMinor(celé číslo nebonull; nepovinný): Jen uset_wholesale_price: velkoobchodní cena v HALÉŘÍCH (1 200 Kč = 120000), stejná pro celou dávku. Prázdná hodnota cenu z ceníku SMAŽE a varianta pak velkoobchodu prodává za běžnou cenu. Vynechat toto pole nejde: mlčky smazaný ceník je horší než odmítnuté volání.wholesalePriceBasis(jedna z hodnotnetagross; nepovinný): Jen uset_wholesale_price: v jaké základně je částka zadaná.net(výchozí) = bez DPH,gross= s DPH. Ukládá se vždy bez DPH; u obchodu, který není plátcem DPH, se částka uloží tak, jak přišla.retailPriceMinor(celé číslo; nepovinný): Jen uset_retail_price: nová BĚŽNÁ cena S DPH v HALÉŘÍCH (999 Kč = 99900), stejná pro celou dávku. Taková, jakou zákazník vidí na e-shopu.retailCompareAtMinor(celé číslo nebonull; nepovinný): Jen uset_retail_price: cena před slevou (přeškrtnutá) v haléřích, musí být vyšší než nová cena. Vynechané pole = ponechat, co varianta má; prázdná hodnota = slevu zrušit. Nastavit ji znamená OHLÁSIT SLEVU; na e-shopu se pak ukáže nejnižší cena za 30 dní.wholesaleEnabled(truenebofalse; nepovinný): Jen uset_wholesale_terms: prodávat ty produkty velkoobchodně? Vypnutý produkt vidí velkoobchodní zákazník za běžnou cenu, i když v ceníku cenu má.minWholesaleQty(celé číslo; nepovinný): Jen uset_wholesale_terms: minimální odběr na jeden řádek objednávky pro velkoobchodní zákazníky. 1 znamená, že žádné minimum neplatí.
shopzi_manage_product: parametry fields a modifiers
fields(objekt; nepovinný): Údaje produktu. Ucreateto jsou hodnoty nového produktu (včetně ceny, DPH, SKU a URL), uupdatejen pole ke změně (vynechané zůstane beze změny; cena, DPH, URL ani SKU tudy u existujícího produktu neprojdou). Ubulk_statusJENstatus, uset_vat_rateJENvatRate. U ostatních operací se nepoužívá.fields.title(text; nepovinný): Název produktu. POVINNÝ při zakládání.fields.slug(text; nepovinný): URL adresa produktu (malá písmena, číslice, pomlčky). Vynechte a odvodí se z názvu. Jde nastavit JEN při zakládání: pozdější změna adresy je přesměrování, ne úprava.fields.subtitle(text nebonull; nepovinný)fields.shortDescription(text nebonull; nepovinný): Krátký prodejní souhrn u nákupního boxu. HTML se čistí.fields.description(text nebonull; nepovinný): Hlavní popis produktu. HTML se čistí (sanitizace).fields.availabilityNote(text nebonull; nepovinný)fields.status(jedna z hodnotdraft,activeaarchived; nepovinný): Výchozí jedraft(koncept).activeznamená rovnou do prodeje, což je rozhodnutí obchodníka.fields.brand(text nebonull; nepovinný): Značka. Jako formulář ji propojí s kartou dodavatele téhož jména, chybějící kartu založí (vrácení ji nesmaže).nullznačku odebere.fields.withdrawalExcluded(truenebofalse; nepovinný): true = vyloučeno z 14denního odstoupení (§ 1837, např. zboží na míru). Právní rozhodnutí obchodníka, nenastavujte z vlastní úvahy. Reklamaci to neruší.fields.manufacturerName(text nebonull; nepovinný): GPSR: název výrobce.fields.manufacturerAddress(objekt nebonull; nepovinný): GPSR: adresa a e-mail výrobce. Nahrazuje se jako celek.fields.manufacturerAddress.street(text; nepovinný)fields.manufacturerAddress.city(text; nepovinný)fields.manufacturerAddress.zip(text; nepovinný)fields.manufacturerAddress.country(text; nepovinný)fields.manufacturerAddress.email(text; nepovinný)fields.responsiblePerson(objekt nebonull; nepovinný): GPSR: odpovědná osoba v EU (výrobce mimo EU). Nahrazuje se jako celek.fields.responsiblePerson.name(text; nepovinný)fields.responsiblePerson.street(text; nepovinný)fields.responsiblePerson.city(text; nepovinný)fields.responsiblePerson.zip(text; nepovinný)fields.responsiblePerson.country(text; nepovinný)fields.responsiblePerson.email(text; nepovinný)fields.ogImageUrl(text, nejvýš 2000 znaků nebonull; nepovinný): Obrázek pro sdílení (Open Graph). Bez něj hlavní fotka.fields.canonicalOverride(text, nejvýš 2000 znaků nebonull; nepovinný): Kanonická adresa, když je originálem JINÁ stránka. Bez důvodu nevyplňujte.fields.productType(jedna z hodnotphysical,digital,service,gift_card,bundleasubscription; nepovinný): Druh zboží, výchozíphysical. Určuje, jestli se produkt doručuje a hlídá skladem. Jde zvolit JEN při zakládání: pozdější změna přepisuje nastavení všech variant.fields.priceMinor(číslo; nepovinný): Koncová cena v HALÉŘÍCH, celé číslo (129 Kč = 12900). Nikdy desetinné číslo. Jen při zakládání: pozdější změna ceny zapisuje 30denní historii podle § 12a a dělá se v adminu.fields.compareAtMinor(číslo; nepovinný): Původní („přeškrtnutá“) cena v haléřích, celé číslo. Uloží se jen když je vyšší nežpriceMinor.fields.vatRate(číslo; nepovinný): Sazba DPH jako CELÉ PROCENTO: 21, 12 nebo 0. Nikdy 0.21. Při zakládání sazba nového produktu; u existujícího ji mění JEN operaceset_vat_rate.fields.sku(text; nepovinný): Katalogové číslo výchozí varianty.fields.ean(text; nepovinný): Čárový kód (EAN) výchozí varianty.fields.weightGrams(číslo; nepovinný): Jen při zakládání: hmotnost v GRAMECH, celé číslo. Platí pro výchozí variantu i pro varianty zakládané spolu s produktem (axes+variants).fields.dimensionsMm(objekt; nepovinný): Jen při zakládání: rozměry zásilky v MILIMETRECH. Platí stejně jakoweightGrams.fields.dimensionsMm.l(číslo; povinný): Délka v milimetrech, celé číslo.fields.dimensionsMm.w(číslo; povinný): Šířka v milimetrech, celé číslo.fields.dimensionsMm.h(číslo; povinný): Výška v milimetrech, celé číslo.fields.costMinor(číslo; nepovinný): Jen při zakládání: nákupní cena BEZ DPH v haléřích, celé číslo. Z ní se počítá marže; zákazník ji nikdy nevidí.fields.customParams(objekt s libovolnými klíči, hodnota: text; nepovinný): Jen při zakládání: vlastní parametry do tabulky Parametry na detailu produktu, například {"Materiál":"Kamenina","Objem":"350 ml"}. Nejsou to filtrovatelné vlastnosti.fields.categoryIds(pole, položka: text; nepovinný): ID kategorií, do kterých produkt patří. První se stane hlavní. Bez kategorie se produkt neobjeví ve výpisech obchodu.fields.metaTitle(text nebonull; nepovinný): SEO titulek. null smaže.fields.metaDescription(text nebonull; nepovinný): SEO popisek (meta description). null smaže.fields.geoSummary(text nebonull; nepovinný): Stručná přímá odpověď pro AI vyhledávače (GEO). Dvě až tři věty. null smaže.fields.noindex(truenebofalse; nepovinný): true = stránku nemají vyhledávače indexovat.modifiers(pole objektů; nepovinný): Jen usave_modifiers: CELÁ sada skupin modifikátorů. Skupina, která tu není, se z produktu smaže. Současná sada:shopzi_get_productsinclude: ["modifiers"].modifiers[].name(text; povinný): Název skupiny, například „Doplňky“.modifiers[].modifierType(jedna z hodnotaddon,removal,choiceaother; nepovinný): addon = doplněk, removal = odebrání součásti, choice = volba z několika, other = ostatní. Výchozí choice.modifiers[].isRequired(truenebofalse; nepovinný): true = zákazník musí vybrat, než přidá zboží do košíku.modifiers[].minSelections(číslo; nepovinný): Nejmenší počet vybraných voleb, celé číslo. Výchozí 0.modifiers[].maxSelections(číslo nebonull; nepovinný): Největší povolený počet voleb, celé číslo. null = bez omezení.modifiers[].options(pole objektů; povinný): Volby ve skupině, v pořadí, v jakém se mají zobrazit.modifiers[].options[].name(text; povinný): Název volby, například „Bez cibule“.modifiers[].options[].priceDeltaMinor(číslo; nepovinný): Příplatek v HALÉŘÍCH, celé číslo. Může být záporný (volba, která zlevňuje). Výchozí 0.modifiers[].options[].isDefault(truenebofalse; nepovinný): true = volba je předvybraná.modifiers[].options[].isActive(truenebofalse; nepovinný): false = volba se zákazníkovi nenabízí. Výchozí true.
shopzi_manage_product: parametry attributes až pageContent
attributes(pole objektů; nepovinný): Jen usave_attributes: CELÁ sada filtrovatelných vlastností. Vlastnost, která tu není, se z produktu smaže. Vlastnosti, které u produktu určují varianty, sem nepatří. Současná:include: ["attributes"].attributes[].attributeKey(text; povinný): Klíč vlastnosti zeshopzi_list_catalog(resource: attributes), napříkladmaterial.attributes[].valueText(text nebonull; nepovinný): Textová hodnota.attributes[].valueNumeric(číslo nebonull; nepovinný): Číselná hodnota, pro filtrování rozsahem.attributes[].valueBool(truenebofalsenebonull; nepovinný): Hodnota ano/ne.attributes[].unit(text nebonull; nepovinný): Jednotka u číselné hodnoty, napříkladcm.attributes[].isFilterable(truenebofalse; nepovinný): false = vlastnost se ukáže v popisu, ale nebude filtrem. Výchozí true.links(pole objektů; nepovinný): Jen usave_links: CELÁ sada vazeb na jiné produkty. Vazba, která tu není, se smaže. Současná:include: ["links"].links[].linkedProductId(UUID; povinný): ID propojeného produktu zeshopzi_search_products.links[].linkType(jedna z hodnotrelated,cross_sell,up_sell,accessory,replacement,bundle_memberavariant_of; povinný): related = související, cross_sell = k tomu se hodí, up_sell = dražší alternativa, accessory = příslušenství, replacement = náhrada, bundle_member = součást balíčku, variant_of = jiné provedení.translation(objekt; nepovinný): Jen usave_translation: JEDEN jazyk, a to CELÝ: pole, které nepošlete, se v tom jazyce vymaže; prázdná pole překlad v tom jazyce smažou. Ostatní jazyky zůstanou. Současné:include: ["translations"].translation.locale(jedna z hodnoten,de,skapl; povinný): Jazyk překladu. Čeština je základ produktu a překládá se přesupdate.translation.title(text nebonull; nepovinný): Název v tomto jazyce.translation.subtitle(text nebonull; nepovinný)translation.description(text nebonull; nepovinný): Popis v tomto jazyce. HTML se čistí (sanitizace).translation.metaTitle(text nebonull; nepovinný)translation.metaDescription(text nebonull; nepovinný)translation.geoSummary(text nebonull; nepovinný)bundle(pole objektů; nepovinný): Jen usave_bundle: CELÉ složení balíčku. Položka, která tu není, se z balíčku smaže. Funguje jen u produktu typu „Balíček“. Současné:include: ["bundle"].bundle[].componentProductId(UUID; povinný): ID produktu, který je součástí balíčku, zeshopzi_search_products.bundle[].quantity(číslo; povinný): Kolik kusů toho produktu balíček obsahuje. Celé číslo od 1.variants(pole objektů; nepovinný): Uadd_variants: NOVÉ varianty, které k produktu přibudou (stávající se neposílají a nástroj se jich nedotkne; odebrat ani přecenit variantu tudy nejde). Ucreatespolu saxes: varianty, se kterými produkt rovnou vznikne, každá kombinace hodnot jednou, první je výchozí. Uset_variant_axes: nové varianty VEDLE stávající, každá s cenou.variants[].axisValues(objekt s libovolnými klíči, hodnota: text; povinný): Hodnota KAŽDÉ vlastnosti, která u produktu určuje variantu, klíčovaná jejím klíčem, například {"velikost":"XL","barva":"Modrá"}. Hodnotu, kterou produkt zatím nemá, nástroj do té vlastnosti doplní.variants[].sku(text nebonull; nepovinný): Katalogové číslo varianty, musí být jedinečné.variants[].ean(text nebonull; nepovinný): Čárový kód varianty.variants[].priceMinor(číslo; povinný): Koncová cena varianty v HALÉŘÍCH, celé číslo (129 Kč = 12900). Povinná: varianta bez ceny se neprodá.sourceUrl(text, nejvýš 300 znaků; nepovinný): Jen uimport_from_url: kořenová adresa e-shopu, ze kterého se mají produkty převzít (https://obchod.cz, ne adresa kategorie ani produktu).axes(pole objektů, nejvýš 3 položky; nepovinný): Ucreate: vlastnosti, které u nového produktu určují varianty (velikost, barva). Produkt pak vznikne rovnou jako variantní svariants. Uset_variant_axes: totéž pro EXISTUJÍCÍ jednoduchý produkt.axes[].attributeKey(text; povinný): Klíč vlastnosti, napříkladvelikostnebobarva.axes[].label(text; povinný): Název pro zákazníka, například Velikost.axes[].values(pole, položka: text, 1 až 30 položek; povinný): Hodnoty v pořadí, ve kterém se mají nabízet.baseAxisValues(objekt s libovolnými klíči, hodnota: text; nepovinný): Jen uset_variant_axes: hodnota KAŽDÉ vlastnosti zaxespro STÁVAJÍCÍ variantu, např. {"velikost":"M"}. Ta si ponechá cenu, historii, zásobu i SKU a bude výchozí.pageContent(objekt; nepovinný): Jen usave_page_content: pole ke změně; vynechané zůstane beze změny.pageContent.sizeGuideMode(jedna z hodnotinherit,customanone; nepovinný): Tabulka velikostí: inherit = podle kategorie, custom =sizeGuideId, none = nezobrazovat.pageContent.sizeGuideId(text nebonull; nepovinný): Jen usizeGuideMode: custom: ID zeshopzi_list_catalog(size_guides).pageContent.descriptionMode(jedna z hodnottextabuilder; nepovinný): text = pod produktem pole Popis; builder = bloky sestaveného popisu (textový popis dál slouží feedům a vyhledávání).pageContent.descriptionHeadingMode(jedna z hodnotinherit,customahidden; nepovinný): Nadpis nad popisem: podle obchodu, vlastní text, nebo bez nadpisu.pageContent.descriptionHeading(text, nejvýš 80 znaků nebonull; nepovinný): Jen udescriptionHeadingMode: custom: text nadpisu.pageContent.contentWidth(jedna z hodnotboxedafull; nepovinný): Šířka sestaveného popisu: boxed = v šířce stránky, full = přes celé okno.pageContent.blocks(pole objektů, nejvýš 40 položek; nepovinný): CELÁ sada bloků sestaveného popisu v pořadí. Blok, který tu není, z popisu zmizí. Prázdné pole popis vyprázdní (stránka pak ukáže textový popis). Současné:include: ["page_content"].pageContent.blocks[].sectionType(jedna z hodnotheading,rich_text,image,image_text,gallery,video,banner,columns,spacer,notice,usp_strip,process_steps,faqapromo_split; povinný): Typ bloku, jen obsahové bloky editoru stránek.pageContent.blocks[].config(objekt s libovolnými klíči; povinný): Nastavení bloku ve tvaru editoru stránek (html se čistí).pageContent.blocks[].isActive(truenebofalse; nepovinný)pageContent.panelOverrides(pole objektů; nepovinný): Výjimky informačních panelů u produktu: show = přidat, hide = skrýt, null = podle nastavení panelu. Nahradí celou sadu výjimek.pageContent.panelOverrides[].panelId(text; povinný)pageContent.panelOverrides[].mode(jedna z hodnotshowahide, nebonull; povinný)
shopzi_manage_product: parametry variantUpdates a idempotencyKey
variantUpdates(pole objektů; nepovinný): Jen uupdate_variants: údaje EXISTUJÍCÍCH variant, každá podle svého ID. Posílají se jen pole ke změně; varianta, o které tu není řeč, zůstane beze změny. Odebrat variantu (na to jeremove_variants) ani změnit cenu tudy nejde. Současné:include: ["details"].variantUpdates[].variantId(UUID; povinný): ID varianty zeshopzi_get_product. U jednoduchého produktu je to ta jediná, kterou vrací sis_default: true.variantUpdates[].sku(text nebonull; nepovinný): Katalogové číslo varianty, musí být jedinečné. Prázdná hodnota ho vymaže.variantUpdates[].ean(text nebonull; nepovinný): Čárový kód varianty.variantUpdates[].gtin(text nebonull; nepovinný): GTIN varianty.variantUpdates[].mpn(text nebonull; nepovinný): Číslo dílu od výrobce (MPN).variantUpdates[].weightGrams(číslo nebonull; nepovinný): Hmotnost v GRAMECH, celé nezáporné číslo (1,2 kg = 1200). Podle ní počítá dopravce cenu zásilky, takže bez ní se doprava nemusí nabídnout.variantUpdates[].dimensionsMm(objekt nebonull; nepovinný): Rozměry zásilky v MILIMETRECH. Dopravci mají na rozměry limity, podle kterých se metoda nabídne, nebo skryje.variantUpdates[].dimensionsMm.l(číslo; povinný): Délka v milimetrech, celé číslo.variantUpdates[].dimensionsMm.w(číslo; povinný): Šířka v milimetrech, celé číslo.variantUpdates[].dimensionsMm.h(číslo; povinný): Výška v milimetrech, celé číslo.variantUpdates[].isDefault(truenebofalse; nepovinný):trueoznačí tuhle variantu jako výchozí (předvybranou na detailu produktu). Výchozí varianta se jen PŘENÁŠÍ: zhasnout ji nejde, stejně jako v administraci.variantUpdates[].lowStockThreshold(číslo nebonull; nepovinný): Vlastní práh nízkého stavu v kusech.nullnebo 0 = práh obchodu.idempotencyKey(text, 1 až 200 znaků; nepovinný): Klíč idempotence. Stejný klíč = stejný zápis: opakované volání vrátí původní výsledek a NEZAPÍŠE podruhé. Použijte vlastní náhodný řetězec pro každou zamýšlenou změnu; při opakování po chybě sítě pošlete tentýž.
shopzi_manage_category
Založí, upraví (včetně obrázku kategorie z knihovny médií), přesune, přeskládá nebo smaže kategorii ve stromu o nejvýš třech úrovních. Kategorii s podkategoriemi nebo s produkty smazat odmítne.
- Oprávnění:
products:write, u klíče „Katalog: produkty, kategorie a číselníky (zápis)“. - Druh: zápis, který umí přepsat nebo smazat existující data (
destructiveHint). - Potvrzení přes MCP: ano: formulář v klientu, který potvrdí ten, kdo drží klíč; jinak odkaz na stránku schválení přes elicitaci URL; jinak odkaz na stránku schválení v odmítnutí
approval_required. Na stránce schválení rozhoduje vlastník nebo manažer obchodu. - Kredity a platba kartou: ne.
- Deník změn: výsledek nese
change_id. ID záznamu v deníku. Předejte ho doshopzi_undo_change.
shopzi_manage_category: operace
create(založit)update(upravit)move(přesunout)reorder(změnit pořadí)delete(smazat)
shopzi_manage_category: parametry
operation(jedna z hodnotcreate,update,move,reorderadelete; povinný): create = založit; update = změnit pole existující kategorie; move = přesunout ve stromu; reorder = přeskládat sourozence; delete = smazat.categoryId(text; nepovinný): ID kategorie zeshopzi_list_catalog. Povinné u update, move a delete.parentId(text nebonull; nepovinný): Nadřazená kategorie. Ucreatekam ji založit, umovekam ji přesunout, ureorderčí sourozence skládáte.nullznamená nejvyšší úroveň; vynechané pole umovenechá nadřazenou kategorii beze změny.position(číslo; nepovinný): Pořadí mezi sourozenci po přesunu, celé číslo (0 = první). Jen umove.orderedIds(pole, položka: text; nepovinný): Jen ureorder: ID VŠECH kategorií dané úrovně v novém pořadí, každé právě jednou.fields(objekt; nepovinný): Údaje kategorie. Ucreateto jsou hodnoty nové kategorie, uupdatejen pole ke změně (vynechané zůstane beze změny). Umove,reorderadeletese nepoužívá.fields.name(text; nepovinný): Název kategorie. POVINNÝ při zakládání.fields.slug(text; nepovinný): URL adresa (malá písmena, číslice, pomlčky). Vynechte a odvodí se z názvu. Jen při zakládání: pozdější změna adresy je přesměrování, ne úprava.fields.descriptionHtml(text nebonull; nepovinný): Text nad výpisem produktů. HTML se čistí.fields.descriptionHtmlBottom(text nebonull; nepovinný): SEO text pod výpisem produktů. HTML se čistí.fields.h1Override(text nebonull; nepovinný)fields.isFeatured(truenebofalse; nepovinný)fields.showInMenu(truenebofalse; nepovinný)fields.imageUrl(text nebonull; nepovinný): Obrázek kategorie (dlaždice v mřížce kategorií a v megamenu): adresa/media/…z knihovny médií tohoto obchodu, třeba zshopzi_generate_media.nullobrázek odebere.fields.metaTitle(text nebonull; nepovinný): SEO titulek. null smaže.fields.metaDescription(text nebonull; nepovinný): SEO popisek (meta description). null smaže.fields.geoSummary(text nebonull; nepovinný): Stručná přímá odpověď pro AI vyhledávače (GEO). Dvě až tři věty. null smaže.fields.noindex(truenebofalse; nepovinný): true = stránku nemají vyhledávače indexovat.idempotencyKey(text, 1 až 200 znaků; nepovinný): Klíč idempotence. Stejný klíč = stejný zápis: opakované volání vrátí původní výsledek a NEZAPÍŠE podruhé. Použijte vlastní náhodný řetězec pro každou zamýšlenou změnu; při opakování po chybě sítě pošlete tentýž.
shopzi_save_catalog_entity
Spravuje značky a výrobce uvedené u produktů (vendor), definice vlastností (attribute), tabulky velikostí (size_guide) a informační panely stránky produktu (info_panel): založení, úpravu, kopii, smazání, pořadí, přiřazení kategoriím, šablony vlastností a karty značek podle produktů.
-
Oprávnění:
products:write, u klíče „Katalog: produkty, kategorie a číselníky (zápis)“. -
Druh: zápis, který umí přepsat nebo smazat existující data (
destructiveHint). -
Potvrzení přes MCP: ano: formulář v klientu, který potvrdí ten, kdo drží klíč; jinak odkaz na stránku schválení přes elicitaci URL; jinak odkaz na stránku schválení v odmítnutí
approval_required. Na stránce schválení rozhoduje vlastník nebo manažer obchodu. -
Kredity a platba kartou: ne.
-
Deník změn: výsledek nese
change_id. ID záznamu v deníku. Předejte ho doshopzi_undo_change. -
Věta o důsledku, kterou člověk uvidí v potvrzení:
Smazání vlastnosti NEMAŽE hodnoty u produktů, jen je schová: zmizí filtr ve výpisu i políčko v editoru a vrácení vlastnosti je zase zviditelní. Přeskládání pořadí je jen pořadí a taky se vrací. Smazat značku jde jen tehdy, když ji nemá u sebe ani jeden produkt: jinak nástroj odmítne a řekne kolik jich je. Založení karet ze značek se provede přesně na značkách vypsaných níž a ty produkty na ně naváže; vrátit to jde jedním krokem, celou dávku najednou. Šablona vlastnosti, které obchod už má, nepřepisuje, jen je přeskočí.
shopzi_save_catalog_entity: oblasti
vendor(Značka nebo výrobce)attribute(Vlastnost produktu)size_guide(Tabulka velikostí)info_panel(Informační panel)
shopzi_save_catalog_entity: operace
save(uložit)delete(smazat)reorder(změnit pořadí)create_from_brands(založit značky podle produktů)apply_preset(přidat šablonu vlastností)duplicate(vytvořit kopii)
shopzi_save_catalog_entity: parametry
resource(jedna z hodnotvendor,attribute,size_guideainfo_panel; povinný): Co ukládáte. Pole musí patřit k němu.operation(jedna z hodnotsave,delete,reorder,create_from_brands,apply_presetaduplicate; nepovinný):save(výchozí) = založit nebo upravit;delete= smazat vlastnost nebo značku, kterou nemá u sebe žádný produkt;reorder= přeskládat pořadí vlastností;apply_preset= přidat hotovou šablonu vlastností;create_from_brands= založit karty značek podle pole Značka u produktů;duplicate= kopie tabulky velikostí nebo panelu.apply_presetplatí jen proresource: attribute,create_from_brandsjen proresource: vendor,duplicatejen prosize_guideainfo_panel;reorderpro vlastnost, tabulku velikostí i panel.id(text; nepovinný): Vynechte pro založení nového. Vyplňte pro úpravu existujícího nebo prodelete.orderedIds(pole, položka: text, nejvýš 200 položek; nepovinný): Jenreorder: nové pořadí vlastností. Musí obsahovat VŠECHNY vlastnosti obchodu právě jednou (zeshopzi_list_catalogsresource: attributes), jinak nástroj zápis odmítne: vynechaná vlastnost by zůstala na starém čísle a pořadí by se zdvojilo.brands(pole, položka: text, nejvýš 200 znaků, nejvýš 40 položek; nepovinný): Jencreate_from_brands: názvy značek, které se mají založit, VYJMENOVANÉ. Nabídku i s počty produktů vypíše nástroj sám, když ho zavoláte bez tohohle pole.presetKey(jedna z hodnotobleceni,elektronika,domacnost,sportaobecne; nepovinný): Jenapply_preset: která šablona vlastností se má přidat. Vlastnosti, které obchod už má, se přeskočí a nepřepisují se.fields(objekt; nepovinný): Pole k uložení. Vynechané pole zůstane u úpravy beze změny.fields.name(text; nepovinný): Dodavatel: název. POVINNÝ při zakládání dodavatele.fields.slug(text; nepovinný): Dodavatel: URL adresa. Vynechte a odvodí se z názvu. Jen při zakládání.fields.perex(text nebonull; nepovinný): Dodavatel: krátký úvod.fields.descriptionHtml(text nebonull; nepovinný): Dodavatel: popis na jeho stránce. HTML se čistí.fields.websiteUrl(text nebonull; nepovinný)fields.email(text nebonull; nepovinný)fields.phone(text nebonull; nepovinný)fields.region(text nebonull; nepovinný): Dodavatel: region či země.fields.position(číslo; nepovinný): Pořadí ve výpisu, celé číslo (0 = první).fields.isFeatured(truenebofalse; nepovinný): Dodavatel: vypíchnout ve výpisu.fields.h1Override(text nebonull; nepovinný)fields.label(text; nepovinný): Vlastnost: název, který uvidí zákazník (Barva, Velikost). POVINNÝ při zakládání.fields.control(jedna z hodnotselect,range,booleanaswatch; nepovinný): Vlastnost: typ. select = výběr z hodnot, swatch = barevné vzorky, range = číselný rozsah, boolean = ano/ne.fields.options(pole objektů; nepovinný): Vlastnost: seznam hodnot. Povinný u select a swatch.fields.options[].value(text; povinný)fields.options[].color(text; nepovinný): Jen u swatch: barva vzorku ve tvaru #RRGGBB.fields.unit(text nebonull; nepovinný): Vlastnost: jednotka u typu range, například GB.fields.isFilterable(truenebofalse; nepovinný): Vlastnost: nabízet ji jako filtr ve výpisu produktů.fields.groupLabel(text nebonull; nepovinný): Vlastnost: název skupiny v parametrech produktu.fields.variantDisplay(jedna z hodnotauto,badgesalist; nepovinný): Vlastnost: jak se hodnoty kreslí u varianty na detailu produktu.fields.isActive(truenebofalse; nepovinný): Vypnuté se nikde nenabízí.fields.templateKey(jedna z hodnotwomen-tops,women-bottoms,women-dresses,men-tops,men-bottoms,shoes,kids,bras,rings,hats,glovesablank; nepovinný): Tabulka velikostí: založit ze šablony (jen při zakládání). women-tops, women-bottoms, women-dresses, men-tops, men-bottoms, shoes, kids, bras, rings, hats, gloves, blank.fields.table(objekt; nepovinný): Tabulka velikostí: CELÁ tabulka.columns= sloupce (id + název),rows= řádky, v každémcells= hodnota podle id sloupce. Buňky jsou text („84–88“, „XS“). Míry těla v cm.fields.table.columns(pole objektů, nejvýš 20 položek; povinný)fields.table.columns[].id(text; povinný)fields.table.columns[].label(text; povinný)fields.table.rows(pole objektů, nejvýš 60 položek; povinný)fields.table.rows[].id(text; povinný)fields.table.rows[].cells(objekt s libovolnými klíči, hodnota: text; povinný)fields.introHtml(text; nepovinný): Tabulka velikostí: úvodní text nad tabulkou (HTML se čistí).fields.measureHtml(text; nepovinný): Tabulka velikostí: návod Jak měřit (HTML se čistí).fields.imageUrl(text nebonull; nepovinný): Tabulka velikostí: ilustrace měření, adresa z knihovny Médií.fields.categoryIds(pole, položka: text, nejvýš 200 položek; nepovinný): Tabulka velikostí: CELÁ sada kategorií, které ji mají (podkategorie ji zdědí); kategorie, která tu není, o ni přijde. Informační panel: kategorie, u jejichž produktů se ukáže (jen sescope: categories).fields.title(text; nepovinný): Informační panel: název řádku, který zákazník rozklikne. POVINNÝ při zakládání.fields.bodyHtml(text; nepovinný): Informační panel: text panelu (HTML se čistí).fields.icon(jedna z hodnotinfo,shirt,droplets,leaf,scissors,truck,undo,shield,package,gift,ruler,sparkles,awardamap-pin, nebonull; nepovinný): Informační panel: ikona.fields.scope(jedna z hodnotallacategories; nepovinný): Informační panel: all = všechny produkty, categories = jen vybrané kategorie.fields.metaTitle(text nebonull; nepovinný): SEO titulek. null smaže.fields.metaDescription(text nebonull; nepovinný): SEO popisek (meta description). null smaže.fields.geoSummary(text nebonull; nepovinný): Stručná přímá odpověď pro AI vyhledávače (GEO). Dvě až tři věty. null smaže.fields.noindex(truenebofalse; nepovinný): true = stránku nemají vyhledávače indexovat.idempotencyKey(text, 1 až 200 znaků; nepovinný): Klíč idempotence. Stejný klíč = stejný zápis: opakované volání vrátí původní výsledek a NEZAPÍŠE podruhé. Použijte vlastní náhodný řetězec pro každou zamýšlenou změnu; při opakování po chybě sítě pošlete tentýž.