Ręczniki Haftowane
Server Details
Publiczny, tylko do odczytu MCP z katalogiem produktów sklepu Ręczniki Haftowane.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Most tools target clearly distinct resources (colors, designs, tags, categories, fonts/threads, creator link), but `search` and `search_products` both search products and their boundary (ChatGPT search/fetch format vs. structured catalog with price filters) is easy to miss. `get_ai_traffic_report` also sits outside the shopping domain and can look like an odd invocation target. Descriptions help but overlap remains.
The set is largely consistent snake_case with predictable get_/list_/search_ prefixes (get_creator_link, list_colors, list_designs, etc.). Minor deviations are the bare verbs `fetch` and `search`, which break the verb_noun pattern used everywhere else.
Eleven tools is well within a healthy range for a product-catalog-plus-personalization-designer server, and most tools earn their place in the design flow. The single off-domain analytics tool is the only element that feels unnecessary for the stated purpose.
Coverage of browsing, options, colors, designs, fonts and creator-link generation is solid, but there are notable gaps: get_product_options explicitly tells the agent to use `get_shop_policies` for delivery/material/pricing, yet no such tool exists — a dead end. There is also no cart, order, or availability/checkout operation, so the purchase lifecycle is incomplete.
Available Tools
11 toolsfetchARead-onlyIdempotentInspect
Pobiera pełną treść publicznego produktu po id zwróconym przez search, wraz z tytułem i URL-em do cytowania.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| text | No | |
| error | No | Tylko przy isError: { code, message, ... } |
| title | No | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false and a closed-world scope, so the safety profile is covered. The description adds a real constraint that only public products are retrievable and hints at return content (title and citation URL), but says nothing about permissions or failure behavior for missing/private ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is appropriately sized for a one-parameter fetch tool and puts the retrieval purpose first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return structure need not be explained, and annotations cover the safety profile. Given the tool's simplicity, the description plus structured data is nearly complete; only the missing id format is a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single `id` parameter, so the description must carry the burden. It does explain the id's origin (returned by `search`), which is useful, but it omits format and the maxLength of 100 that the schema imposes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it fetches the full content of a public product by id, together with its title and citation URL. It also names the sibling `search` as the source of the id, which helps distinguish it from the search/list tools, though it doesn't differentiate itself explicitly from `search_products`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent the precondition clearly: use the id returned by `search`. The usage context (fetch details after searching) is therefore clear, but there are no explicit when-not-use cases or comparisons with the other sibling tools such as `get_product_options`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_traffic_reportARead-onlyIdempotentInspect
Analityka ruchu sklepu z Matomo (tylko agregaty). Wizyty, akcje, unikalni AI, platformy i zamówienia. Bez argumentów raportuje wczoraj w Europe/Warsaw. period last_1/last_7/last_30 zamiast dat; compare=previous_period porównuje z poprzednim oknem. data_status rozróżnia zero od braku danych; unikalnych z wielu dni nie sumuj. Nazwę platformy podawaj tylko z by_provider; unknown = nieznana. Podaj źródło i niepewności z metadata.attribution_caveats. AI referrals to natywny kanał Matomo; kampanie AI są osobno, boty i cytowania nie są mierzone.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Ostatnie 1/7/30 dni do wczoraj w Europe/Warsaw; wyklucza date_from/date_to | |
| compare | No | Porównanie z poprzednim oknem tej samej długości; domyślnie none | none |
| date_to | No | Koniec zakresu YYYY-MM-DD, domyślnie wczoraj; zakres do 31 dni | |
| breakdown | No | summary | |
| date_from | No | Początek zakresu YYYY-MM-DD, domyślnie wczoraj w Europe/Warsaw |
Output Schema
| Name | Required | Description |
|---|---|---|
| daily | No | |
| error | No | Tylko przy isError: { code, message, ... } |
| totals | No | |
| metadata | No | |
| comparison | No | |
| conversions | No | |
| data_status | No | Ruch AI, potwierdzone zero AI lub brak danych (nieznane) |
| ai_referrals | No | |
| landing_pages | No | |
| other_sources | No | |
| schema_version | No | |
| not_counted_as_ai | No | |
| ai_tagged_campaigns | No | |
| ai_mentions_citations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: default time window and timezone, data_status distinguishing true zero from missing data, the non-additivity of unique counts across days, 'unknown' platform semantics, attribution caveats to surface, and explicit statement of what is NOT measured (bots, citations, AI campaigns). This is exactly the caveat-level context an agent needs to interpret output correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then moves through arguments, data interpretation, and measurement limits. Dense but nearly every clause carries operational information; a couple of caveat clauses could be consolidated, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure needn't be described, and the description covers what remains: defaults, timezone, metric scope, comparison behavior, data-quality semantics, and explicit measurement gaps. An agent can call this tool and interpret its result without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3; the description earns above that by explaining the relationship between parameters — period supersedes date_from/date_to, and compare=previous_period compares equal-length windows. It adds decision guidance rather than repeating the schema, though it does not cover the breakdown parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: AI traffic analytics from Matomo, aggregates only, with named metrics (visits, actions, unique AI users, platforms, orders). The verb/resource pairing is unambiguous and no sibling tool covers anything similar, so no sibling differentiation is required.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete invocation guidance: with no arguments it reports yesterday in Europe/Warsaw; use period last_1/last_7/last_30 instead of explicit dates; compare=previous_period to compare against the prior window. It also tells the agent which field to read platform names from (by_provider) and warns not to sum uniques across days, though it never explicitly contrasts usage against an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creator_linkARead-onlyIdempotentInspect
Link do kreatora z wyborami klienta w slots[]. Pozycja n z contents get_product_options odpowiada slots[n-1]. option_id z list_colors (colors[].option_id) dla typu przedmiotu, walidowany przez sklep przy każdym wywołaniu (błąd invalid_input z details[]: reason, allowed_option_ids, message; wybierz jedno z allowed_option_ids); drawing_id z list_designs, thread_id i font_id z list_fonts_threads. Przekaż wszystkie wybory klienta: kolor, wzór, nić, czcionkę i texts (mapa kluczy pól tekstowych). Bez slots[], tab i slot link nie ma ustawień (configuration_notice). tab wybiera zakładkę, slot (1-based) aktywny slot.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | ||
| slot | No | ||
| slots | No | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| as_of | No | Czas walidacji kolorów w sklepie (UTC); obecne przy wywołaniu ze slots[] |
| error | No | Tylko przy isError: { code, message, ... } |
| product_id | No | |
| creator_url | No | |
| configuration_notice | No | Informacja, że link otworzy kreator bez ustawień personalizacji; obecna przy wywołaniu bez slots[], tab i slot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the readOnly/idempotent annotations, it discloses that option_id is validated server-side on every call, gives the exact failure shape (invalid_input with details[]: reason, allowed_option_ids, message), and prescribes the recovery path (pick one of allowed_option_ids). It also warns that a link without slots[] carries no settings, which is the key behavioral trap for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause carries information – no filler – but it is delivered as one dense run-on paragraph in which error-handling details are tucked into a parenthetical mid-sentence. Front-loading the purpose works; the rest would be far more scannable as separated points (mapping rules / ID sources / errors).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return value needn't be explained, and the description covers the remaining burden: parameter provenance, the index-to-slot mapping, the per-call validation contract, and the no-slots case. Only product_id's role and the shape of a successful link are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level, so the description has to carry the load, and it largely does: it names the source tool for option_id, drawing_id, thread_id and font_id, explains that texts is a map of text-field keys, and states that slot is 1-based and tab selects the active tab. product_id itself is never explained (presumably the product whose creator link is built), leaving one real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase 'Link do kreatora z wyborami klienta w slots[]' identifies the resource (a storefront creator/configurator link) and what it encodes (the client's selections), and it is clearly distinct from the sibling list_* tools it names as ID sources. It stops short of an explicit verb ('returns/builds a URL'), so the operation is inferred rather than stated, which keeps it out of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete routing guidance: option_id comes from list_colors, drawing_id from list_designs, thread_id/font_id from list_fonts_threads, and slot n maps to entry n of get_product_options contents. It also states the consequence of omitting slots[] (configuration_notice), which is effectively a when-not-to-use note. No explicit exclusion against any alternative tool, though none obviously exists for this job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_optionsARead-onlyIdempotentInspect
Skład produktu (contents): przedmioty, ilości, positions (1-based), customizable i liczba kolorów. Wzory dla pozycji z design_category_id wybieraj z list_designs, których categories zawiera tę kategorię. Kolory pobierz przez list_colors dopiero przy wyborze koloru, podając asset_type_id. Dostawa, terminy i materiał: get_shop_policies. Ceny: *_minor (grosze), formatted (PLN); regular_price tylko w promocji. Po link z wyborami użyj get_creator_link.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| error | No | Tylko przy isError: { code, message, ... } |
| contents | No | |
| currency | No | Kod waluty, zawsze PLN |
| creator_url | No | |
| price_minor | No | Aktualna cena w groszach (PLN), liczba całkowita; null gdy brak |
| price_formatted | No | Aktualna cena jako tekst w PLN, np. „339,00 zł”; null gdy brak |
| text_max_length | No | Maksymalna długość tekstu haftu (znaki) |
| regular_price_minor | No | Cena regularna (tylko w promocji) w groszach (PLN), liczba całkowita; null gdy brak |
| regular_price_formatted | No | Cena regularna (tylko w promocji) jako tekst w PLN, np. „339,00 zł”; null gdy brak |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description instead adds semantic behavior: positions are 1-based, prices appear as *_minor in grosze and *_formatted in PLN, and regular_price_* is present only during a promotion. These are non-obvious output traits an agent would otherwise misread, though error behavior (product without options) and pagination/size limits are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, but the rest is a semicolon-chain mixing return-value notes (positions, price units) with downstream-tool routing, in a Polish/English hybrid ('content', 'positions', 'customizable'). Every fragment is arguably useful, yet the grab-bag ordering and lack of separation make it harder to scan than a two-part 'what you get / what to use next' structure would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 1-parameter read tool, annotations cover safety, an output schema covers structure, and the description still supplies the unit conventions and sibling routing an agent needs to act on the result. What is missing is modest: how to obtain product_id and what happens when a product has no options or no designs match its category.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is exactly one parameter (product_id, required integer) and the schema has 0% description coverage, so the description carries the burden – yet it never explains what product_id refers to or where to obtain it (presumably search_products, unstated). With a self-evident single key this is a minor gap, but the description adds nothing beyond the schema here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states the resource concretely – produkt 'skład' (contents) with items, quantities, 1-based positions, customizable flag and color count – so an agent knows what it gets back for a given product. It stops short of a clean verb+resource phrasing (the verb is only in the tool name) and never explicitly says 'returns the option/composition list for product_id', but the returned content is specific enough to distinguish it from siblings like list_designs or list_colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong routing: designs for positions carrying design_category_id must come from list_designs filtered by category, colors from list_colors only at the moment a color is chosen with asset_type_id, delivery/deadlines/material from get_shop_policies, and the shareable link from get_creator_link. Conditions are explicit ('dopiero przy wyborze koloru'). The only gap is that it never states the precondition for calling this tool itself (e.g. after search_products, when you need options/customization).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_colorsARead-onlyIdempotentInspect
Zamknięta lista kolorów typu przedmiotu: option_id (kreatora), color_name, color_family, color_hex, availability, as_of. Wywołaj dopiero, gdy klient wybiera kolor; asset_type_id weź z contents w get_product_options. Nazwę koloru klienta przekaż dosłownie w query: dopasowanie robi sklep i zwraca match (status, option_ids, message); nie dopasowuj nazw sam ani przybliżeniami i wybieraj tylko option_id z odpowiedzi. Dla status candidates lub needs_clarification dopytaj klienta; no_match oznacza brak takiego koloru. Brak pola stanu magazynowego: available znaczy tylko aktywna opcja. include_unavailable pokazuje też wyłączone opcje.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Nazwa koloru od klienta, przekazana dosłownie (maks. 50 znaków) | |
| asset_type_id | Yes | ||
| include_unavailable | No | Domyślnie false; true dodaje opcje unavailable |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | Czas odczytu z backendu (UTC) |
| error | No | Tylko przy isError: { code, message, ... } |
| match | No | Tylko gdy podano query; wynik dopasowania wykonuje sklep |
| colors | No | |
| asset_type_id | No | |
| asset_type_name | No | |
| availability_definition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses that the shop performs matching and returns a match object with status, option_ids and message, defines each status's meaning, and clarifies that there is no stock field (available only means an active option). It even explains include_unavailable's effect on disabled options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense single paragraph that front-loads the return shape before usage rules, and nearly every clause carries actionable information. It is longer than typical but not padded; a minor cost is that the flow of instructions is dense to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lookup tool with an output schema, the description is thorough: it explains the match response semantics, prerequisite sourcing of asset_type_id, and edge-case statuses. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and query/include_unavailable are already documented in the schema, so the description's restatement is partly redundant. However it does add real semantics for the undocumented asset_type_id (take it from get_product_options contents) and instructs passing the customer's name literally rather than approximating, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and enumerates the exact fields returned (option_id, color_name, color_family, color_hex, availability, as_of), framing it as a 'closed list' of item-type colors. It also distinguishes itself from the sibling get_product_options by specifying that asset_type_id comes from that tool's contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Wywołaj dopiero, gdy klient wybiera kolor' gives an explicit trigger condition, and it directs the agent to obtain asset_type_id from get_product_options. It also states the exclusion (don't attempt your own name matching) and how to react to each match status (candidates/needs_clarification -> ask; no_match -> no such color).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_categoriesARead-onlyIdempotentInspect
Listuje kategorie wzorów haftu, w których są aktywne wzory: id, nazwa, slug i liczba wzorów. Nazwę lub slug przekaż jako category do list_designs, aby zobaczyć wzory z danej kategorii. Narzędzie nie przyjmuje parametrów.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Tylko przy isError: { code, message, ... } |
| items | No | |
| total | No | Liczba kategorii wzorów |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive behavior, so the safety profile is covered. The description adds genuine behavior not in the annotations: only categories with active designs are returned, and the tool accepts no parameters. It does not discuss pagination or ordering, which would be the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, followed by the follow-up call and the no-parameter note. Every sentence adds information; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter, read-only tool with a full output schema and rich annotations needs little more than purpose, scope and follow-up guidance, and all three are present. An agent can call it correctly and knows what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so the baseline is 4, and the description confirms this explicitly ('Narzędzie nie przyjmuje parametrów'), which is consistent with the empty properties object. Nothing further is needed for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Listuje kategorie wzorów haftu') and narrows the scope to categories that actually contain active designs. The returned fields (id, nazwa, slug, liczba wzorów) are named explicitly, so an agent knows exactly what it gets without opening the output schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete downstream guidance: pass the name or slug as `category` to `list_designs` to see designs in that category, which is the natural next step and a named sibling. It does not explicitly rule out cases or distinguish itself from other list_* siblings such as list_design_tags, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_designsARead-onlyIdempotentInspect
Wyszukuje aktywne wzory haftu (filtr liczy sklep). Filtry opcjonalne: tags (identyfikatory wyłącznie z list_design_tags, do 10; w grupie OR, między grupami AND), motif_match any|all (all = wszystkie motywy na jednym wzorze), persons 1|2|initials (liczba imion/inicjały), category (nazwa lub slug), query (nazwa wzoru, do 100 znaków), ids (do 20), sort default|popular, limit (domyślnie 10, maks. 20) i offset. Wynik: total, has_more, applied_filters, empty_reason i relaxations (przy total=0 tylko propozycje poluzowania: powiedz klientowi, który warunek poluzowano; nie przedstawiaj ich jako spełnienia konkretnego motywu). Każdy wzór ma tags, personalization, texts (slot_key, label, max_chars) i match. Pole id to drawing_id używane przez kreator. WAŻNE: pokaż klientowi podgląd wzoru jako obraz - wstaw preview_markdown () do odpowiedzi, nie podawaj samego linku; gdy preview_markdown jest null, wzór nie ma podglądu.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | ||
| sort | No | ||
| tags | No | Identyfikatory tagów z list_design_tags | |
| limit | No | ||
| query | No | ||
| offset | No | ||
| persons | No | ||
| category | No | ||
| motif_match | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Tylko przy isError: { code, message, ... } |
| items | No | |
| limit | No | |
| total | No | Liczba wszystkich pasujących wzorów (przed limitem i offsetem) |
| offset | No | |
| has_more | No | Czy są kolejne wzory po tej stronie (zwiększ offset) |
| relaxations | No | Propozycje poluzowania filtra przy total=0 (action, relaxes, total, label); tylko propozycje, powiedz klientowi co poluzowano |
| empty_reason | No | no_match | no_match_query przy total=0 |
| sort_applied | No | Zastosowane sortowanie (popular może działać jak default) |
| applied_filters | No | Filtry zastosowane przez sklep: tags, absorbed_tags, motif_match, persons, category, query |
| dictionary_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile, and the description adds substantial behavior beyond them: the result envelope (total, has_more, applied_filters, empty_reason, relaxations), the zero-result relaxation protocol, and the mandatory preview-rendering rule plus the null-preview fallback. This is exactly the extra context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the rest is one dense, unstructured run-on mixing filter semantics, result shape, and response-formatting instructions. Every element is relevant, yet a short bullet split or paragraph break would make it far more scannable without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with an output schema, the description covers filtering, empty-result handling, field meanings (id = drawing_id for the creator) and presentation. It re-states some output-schema fields (total, has_more, applied_filters), which is minor redundancy rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description must compensate and largely does: tags OR-within/AND-across, motif_match any vs all, persons 1|2|initials, category as name or slug, query/ids caps, limit default and max. Offset and sort get no semantics beyond the enum/default already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Wyszukuje aktywne wzory haftu', and immediately narrows scope ('filtr liczy sklep'). An agent knows this is the design-search entry point, distinct from list_design_tags / list_design_categories which only supply filter vocabulary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing for tag IDs ('wyłącznie z list_design_tags'), explains AND/OR group interplay, and prescribes behavior at total=0 (offer relaxations, don't claim motif match). Missing only explicit when-not-to-use guidance versus siblings like search_products.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_tagsARead-onlyIdempotentInspect
Słownik tagów wzorów haftu (grupy motyw, okazja, odbiorca; definicje, liczby wzorów, wartości persons) oraz instrukcja doboru. Wywołaj raz na rozmowę przed pierwszym filtrem tagów w list_designs; nie twórz własnych tagów. Narzędzie nie przyjmuje parametrów.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tags | No | Tagi: id, name, group, parent, definition, not_for, designs_count |
| error | No | Tylko przy isError: { code, message, ... } |
| groups | No | Grupy tagów (key, name, match_rule) |
| persons | No | Dozwolone wartości persons |
| instructions | No | |
| dictionary_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the once-per-conversation caching expectation and the prohibition on fabricating tag values, which is the key failure mode for a dictionary lookup. It stops short of describing the response shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: what it is and contains, when to call it and the constraint, then the no-parameter note. The most actionable information (call once, before list_designs, don't invent tags) is placed where it will be seen. No padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference lookup with an output schema and full annotation coverage, the description covers what the tool is, when to invoke it, and the main misuse risk. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description explicitly states the tool takes no parameters, which is consistent with the empty input schema and removes any doubt about needing to supply filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a tag dictionary for embroidery designs), enumerates its contents (motif, occasion, recipient groups; definitions, design counts, persons values), and thereby distinguishes it from siblings like list_design_categories and list_designs. An agent knows exactly what this returns before opening it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit rule: call once per conversation, before the first tag filter in list_designs, and explicitly forbids inventing your own tags. That is a when-to-use, a call-frequency constraint, and a when-not-to-do-something, all in one sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fonts_threadsARead-onlyIdempotentInspect
Listuje publiczne czcionki i nici dostępne w kreatorze. Zwraca id jako odpowiednio font_id i thread_id, nazwę, podgląd jako pełny URL oraz gotowy markdown obrazu; nici zawierają także color_hex w formacie #RRGGBB. Narzędzie nie przyjmuje parametrów.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Tylko przy isError: { code, message, ... } |
| fonts | No | |
| threads | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, non-destructive and closed-world, so the safety burden is carried. The description adds real behavioral context beyond them: the returned keys (font_id vs thread_id), preview URLs, ready-to-use image markdown, and the #RRGGBB format of color_hex, plus the fact that no input is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the action and resource, then the return shape, then the no-parameters note. Slightly redundant to enumerate return fields when an output schema exists, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, an output schema, and no inputs, this description is close to self-sufficient: it names the data source scope, the identifier keys and the value formats. Only ordering/volume of the returned list is unstated, which is minor for a fixed catalog call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which sets the baseline at 4. The description explicitly confirms 'the tool takes no parameters', removing any doubt, and adds nothing misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and precise resource (public fonts and threads available in the creator), so the agent knows exactly what comes back. It does not differentiate from the closest sibling, list_colors, which also returns creator palette data, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the reader infers you call it to obtain font/thread identifiers before using them elsewhere. There is no explicit when-to-use, when-not-to-use, or pointer to the sibling list_colors for the color-only case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchBRead-onlyIdempotentInspect
Wyszukuje publiczne produkty sklepu. Zwraca identyfikatory, tytuły i kanoniczne URL-e zgodne z formatem ChatGPT search/fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Tylko przy isError: { code, message, ... } |
| results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds real context beyond that: results are limited to public products and come back as canonical URLs compatible with ChatGPT search/fetch. It stops short of anything about result limits or ranking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, no filler. It is efficient, though the second sentence spends space on return format that an output schema already covers while omitting the query semantics that are actually missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains missing for a correct call is query semantics and any differentiation from the `search_products` sibling, leaving the definition only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `query` parameter has 0% schema description coverage, so the description must carry the burden and it does not — it never says whether the query is a product name, keywords, or a phrase, nor how matching works. The 200-character cap exists only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb plus resource ("Wyszukuje publiczne produkty sklepu") with the return payload named (identifiers, titles, canonical URLs). It is clear on its own, but it never distinguishes itself from the sibling `search_products`, which sounds like it does the same thing, so the agent cannot tell them apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus `search_products` or when not to use it. The only implicit guidance is the mention of ChatGPT search/fetch URL compatibility, which hints at a search-then-`fetch` workflow, but that is inference rather than instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsARead-onlyIdempotentInspect
Produkty sklepu: id, name, cena, for (dla kogo), contains (skład), product_url, image_url. Pusty query listuje cały katalog (kilkanaście pozycji): nie zgaduj słów kluczowych, nie wpisuj zdania klienta. Kwoty: *_minor (grosze), formatted; regular_price tylko w promocji. Dobierz opcjonalne min_price_minor i max_price_minor do prośby klienta: liczby całkowite >= 0 w groszach, min_price_minor <= max_price_minor, granice włącznie, cena jednego produktu/zestawu. „od 100 do 200” lub „100-200” oznacza min_price_minor=10000 i max_price_minor=20000; „do 150” oznacza tylko max_price_minor=15000. Jeśli wynik jest pusty (total=0, truncated=false), a podano granice ceny, ponów search_products bez min_price_minor i max_price_minor, zachowując pozostałe argumenty. Wyjaśnij klientowi, że propozycje są spoza podanego budżetu.
| Name | Required | Description | Default |
|---|---|---|---|
| for | No | Dla kogo: jedna osoba (mama, tata, babcia, dziadek, przyjaciółka), para (rodzice, dziadkowie, narzeczeni, ślub, rocznica ślubu), rodzina (rodzina, nowy dom). Wynik zawiera też produkty bez for. | |
| limit | No | ||
| query | No | ||
| max_price_minor | No | Budżet w groszach, np. 35000 = 350 zł | |
| min_price_minor | No | Dolna granica ceny w groszach (włącznie), np. 20000 = 200 zł |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Tylko przy isError: { code, message, ... } |
| items | No | |
| total | No | Liczba pasujących produktów (po filtrach for i budżetu, przed limitem) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, so the description adds real value beyond them: the catalog is small (~a dozen items) so an empty query is safe, results carry total/truncated signals, and regular_price_* appears only for promoted items. The empty-result fallback and the requirement to explain out-of-budget suggestions to the customer is behavior an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and its fields, then budget semantics, then the fallback rule – a sensible order. It is dense and reads as one long block without visual separation, but nearly every sentence carries actionable content; only the field enumeration partially duplicates the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need only be referenced, and the description goes further by explaining the total/truncated signals used in the fallback logic. Together with the read-only annotations and the price-conversion rules, an agent has enough to call this correctly; only the relationship to the sibling 'search' tool is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 60% schema coverage, the description compensates strongly: it explains that *_minor values are in grosze, that min_price_minor <= max_price_minor, that bounds are inclusive and apply per product/set, and gives worked conversions ('od 100 do 200' → 10000/20000; 'do 150' → max only). It also constrains query usage (not a keyword guess, not a full sentence), which the schema documents only via maxLength.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (produkty sklepu) and enumerates the returned fields (id, name, cena, for, contains, product_url, image_url), so the agent knows exactly what kind of objects come back. It does not address how it differs from the sibling 'search' or 'get_product_options', so selection still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to guidance: empty query lists the whole catalog and the agent must not invent keywords or paste the customer's sentence verbatim; price bounds should be derived from the customer's budget phrasing. It also prescribes a recovery path (retry without bounds when total=0 and truncated=false). No exclusion against sibling tools is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- Changed
fetch1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_ai_traffic_report1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_creator_link2 fields changed- added
Output schema / properties / as_ofAdded value: +{ + "description": "Czas walidacji kolorów w sklepie (UTC); obecne przy wywołaniu ze slots[]", + "type": "string" +} - added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
get_product_options1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
list_colors15 fields changed- added
Input schema / properties / include_unavailableAdded value: +{ + "description": "Domyślnie false; true dodaje opcje unavailable", + "type": "boolean" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Nazwa koloru od klienta, przekazana dosłownie (maks. 50 znaków)", + "maxLength": 50, + "type": "string" +} - added
Output schema / properties / as_ofAdded value: +{ + "description": "Czas odczytu z backendu (UTC)", + "type": "string" +} - added
Output schema / properties / asset_type_nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / availability_definitionAdded value: +{ + "type": "string" +} - added
Output schema / properties / colors / items / properties / availabilityAdded value: +{ + "description": "available = opcja aktywna w sklepie; nie oznacza stanu magazynowego", + "enum": [ + "available", + "unavailable" + ], + "type": "string" +} - added
Output schema / properties / colors / items / properties / color_familyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / colors / items / properties / color_hex / descriptionAdded value: +"Tylko do wyświetlania; nie wybieraj koloru na jego podstawie" - added
Output schema / properties / colors / items / properties / color_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Nazwa koloru do pokazania klientowi" +} - removed
Output schema / properties / colors / items / properties / idRemoved value: -{ - "description": "To option_id dla get_creator_link", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" -} - added
Output schema / properties / colors / items / properties / name / descriptionAdded value: +"Nazwa magazynowa opcji (może zawierać prefiks przedmiotu); do pokazania klientowi użyj color_name, gdy jest" - added
Output schema / properties / colors / items / properties / option_idAdded value: +{ + "description": "Użyj w get_creator_link jako slots[].option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / colors / items / requiredPrevious value: -[ - "id", - "name", - "color_hex" -]New value: +[ + "option_id", + "name", + "color_name", + "color_family", + "color_hex", + "availability" +] - added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / matchAdded value: +{ + "additionalProperties": false, + "description": "Tylko gdy podano query; wynik dopasowania wykonuje sklep", + "properties": { + "matched_by": { + "anyOf": [ + { + "enum": [ + "color_name", + "alias", + "family" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "message": { + "description": "Komunikat po polsku wygenerowany przez backend", + "type": "string" + }, + "option_ids": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "status": { + "enum": [ + "exact", + "candidates", + "no_match", + "needs_clarification" + ], + "type": "string" + }, + "unavailable_option_ids": { + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "query", + "status", + "matched_by", + "option_ids", + "unavailable_option_ids", + "message" + ], + "type": "object" +}
- Changed
list_design_categories1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
list_design_tags1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
list_designs1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
list_fonts_threads1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
search1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
- Changed
search_products1 field changed- added
Output schema / properties / error / properties / detailsAdded value: +{ + "description": "Powody odrzucenia kolorów (invalid_input z get_creator_link)", + "items": { + "additionalProperties": false, + "properties": { + "allowed_option_ids": { + "description": "Aktywne option_id typu slotu; wybierz jedno z nich", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" + }, + "asset_type_id": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "field": { + "description": "Np. slots[0].option_id", + "type": "string" + }, + "given": { + "description": "Podany option_id", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "message": { + "type": "string" + }, + "reason": { + "enum": [ + "unknown_option", + "inactive", + "type_mismatch", + "slot_out_of_range", + "no_color_choice" + ], + "type": "string" + }, + "slot_position": { + "description": "Pozycja slotu 1-based", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "field", + "slot_position", + "asset_type_id", + "reason", + "given", + "allowed_option_ids", + "message" + ], + "type": "object" + }, + "type": "array" +}
11 tool updates
- Changed
fetch1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
get_ai_traffic_report1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
get_creator_link1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
get_product_options1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
list_colors1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
list_design_categories2 fields changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +} - added
Output schema / properties / items / items / properties / show_in_wizardAdded value: +{ + "description": "Czy kategoria jest widoczna w kreatorze; brak, gdy API tego nie zwraca", + "type": "boolean" +}
- Added
list_design_tags - Changed
list_designs22 fields changed- added
Input schema / properties / idsAdded value: +{ + "items": { + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + }, + "maxItems": 20, + "type": "array" +} - added
Input schema / properties / limitAdded value: +{ + "default": 10, + "maximum": 20, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / motif_matchAdded value: +{ + "enum": [ + "any", + "all" + ], + "type": "string" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / personsAdded value: +{ + "enum": [ + "1", + "2", + "initials" + ], + "type": "string" +} - added
Input schema / properties / sortAdded value: +{ + "enum": [ + "default", + "popular" + ], + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "description": "Identyfikatory tagów z list_design_tags", + "items": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "type": "array" +} - added
Output schema / properties / applied_filtersAdded value: +{ + "additionalProperties": {}, + "description": "Filtry zastosowane przez sklep: tags, absorbed_tags, motif_match, persons, category, query", + "propertyNames": { + "type": "string" + }, + "type": "object" +} - added
Output schema / properties / dictionary_versionAdded value: +{ + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / empty_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "no_match | no_match_query przy total=0" +} - added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +} - added
Output schema / properties / has_moreAdded value: +{ + "description": "Czy są kolejne wzory po tej stronie (zwiększ offset)", + "type": "boolean" +} - added
Output schema / properties / items / items / properties / matchAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "type: id|name|filter oraz matched_tags" +} - added
Output schema / properties / items / items / properties / personalizationAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "persons (1|2|null), kind (single|couple|initials|unknown), text_fields" +} - added
Output schema / properties / items / items / properties / tagsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / items / items / properties / texts / items / properties / slot_key / descriptionPrevious value: -"Klucz pola tekstowego (klucz texts w linku do kreatora); brak dla ogólnego pola tekstowego"New value: +"Klucz pola tekstowego (klucz texts w linku do kreatora)" - changed
Output schema / properties / items / items / requiredPrevious value: -[ - "id", - "name", - "type", - "categories", - "texts", - "preview_image_url", - "preview_markdown" -]New value: +[ + "id", + "name", + "type", + "tags", + "categories", + "personalization", + "texts", + "match", + "preview_image_url", + "preview_markdown" +] - added
Output schema / properties / limitAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / offsetAdded value: +{ + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / relaxationsAdded value: +{ + "description": "Propozycje poluzowania filtra przy total=0 (action, relaxes, total, label); tylko propozycje, powiedz klientowi co poluzowano", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / sort_appliedAdded value: +{ + "description": "Zastosowane sortowanie (popular może działać jak default)", + "type": "string" +} - changed
Output schema / properties / total / descriptionPrevious value: -"Liczba pasujących wzorów"New value: +"Liczba wszystkich pasujących wzorów (przed limitem i offsetem)"
- Changed
list_fonts_threads1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
search1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
- Changed
search_products1 field changed- added
Output schema / properties / error / properties / hintAdded value: +{ + "description": "Wskazówka naprawy (invalid_input), np. lista nieznanych tagów", + "type": "string" +}
1 tool update
- Added
list_design_categories
9 tool updates
- Changed
fetch4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Added
get_ai_traffic_report - Changed
get_creator_link4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
get_product_options4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
list_colors4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
list_designs4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
list_fonts_threads4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
search4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
- Changed
search_products4 fields changed- added
Output schema / properties / error / properties / causeAdded value: +{ + "pattern": "^(timeout|http_\\d{3}|matomo_error|invalid_response|not_configured|matomo_method_unavailable)$", + "type": "string" +} - changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "invalid_input", - "not_found", - "shop_unavailable" -]New value: +[ + "invalid_input", + "not_found", + "shop_unavailable", + "analytics_unavailable" +] - changed
Output schema / properties / error / properties / retry_after_seconds / descriptionPrevious value: -"Po ilu sekundach ponowić żądanie (shop_unavailable)"New value: +"Po ilu sekundach ponowić żądanie (niedostępność źródła)" - added
Output schema / properties / error / properties / statusAdded value: +{ + "description": "Status błędu analityki; report_unavailable oznacza brak raportu/konfiguracji", + "enum": [ + "report_unavailable", + "error" + ], + "type": "string" +}
2 tool updates
- Changed
get_product_options1 field changed- added
Output schema / properties / contents / items / properties / design_category_idAdded value: +{ + "description": "Wzory dla tej pozycji wybieraj z list_designs, których categories zawiera tę kategorię", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Changed
search_products1 field changed- added
Input schema / properties / min_price_minorAdded value: +{ + "description": "Dolna granica ceny w groszach (włącznie), np. 20000 = 200 zł", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
4 tool updates
- Changed
get_creator_link2 fields changed- changed
Input schema / properties / slots / items / properties / option_id / descriptionPrevious value: -"ID opcji koloru z options[] dla slotu produktu"New value: +"ID koloru z list_colors dla typu przedmiotu slotu" - removed
Output schema / properties / tracked_creator_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" -}
- Changed
get_product_options10 fields changed- added
Output schema / properties / contentsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "asset_type_id": { + "description": "Parametr list_colors, tylko gdy colors > 1", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "colors": { + "description": "Liczba kolorów, tylko dla customizable", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "customizable": { + "type": "boolean" + }, + "disabled": { + "description": "Wyłączone elementy haftu; brak = wszystkie dostępne", + "items": { + "enum": [ + "drawing", + "text", + "thread", + "font" + ], + "type": "string" + }, + "type": "array" + }, + "item": { + "description": "Nazwa i rozmiar przedmiotu", + "type": "string" + }, + "positions": { + "description": "Numery slotów 1..n; slots[n-1] w get_creator_link", + "items": { + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "quantity": { + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "item", + "quantity", + "positions", + "customizable" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / dimensionsRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / is_on_saleRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / lead_timeRemoved value: -{ - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - } - ] - }, - { - "type": "null" - } - ], - "description": "Czas realizacji (tekst lub obiekt z etykietami z API sklepu)" -} - removed
Output schema / properties / materialRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - changed
Output schema / properties / regular_price_formatted / descriptionPrevious value: -"Cena regularna jako tekst w PLN, np. „339,00 zł”; null gdy brak"New value: +"Cena regularna (tylko w promocji) jako tekst w PLN, np. „339,00 zł”; null gdy brak" - changed
Output schema / properties / regular_price_minor / descriptionPrevious value: -"Cena regularna w groszach (PLN), liczba całkowita; null gdy brak"New value: +"Cena regularna (tylko w promocji) w groszach (PLN), liczba całkowita; null gdy brak" - removed
Output schema / properties / shippingRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "cheapest_price_formatted": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Najtańsza wysyłka jako tekst w PLN, np. „339,00 zł”; null gdy brak" - }, - "cheapest_price_minor": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Najtańsza wysyłka w groszach (PLN), liczba całkowita; null gdy brak" - }, - "currency": { - "type": "string" - }, - "free_shipping_threshold_formatted": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Próg darmowej wysyłki jako tekst w PLN, np. „339,00 zł”; null gdy brak" - }, - "free_shipping_threshold_minor": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Próg darmowej wysyłki w groszach (PLN), liczba całkowita; null gdy brak" - }, - "methods": { - "items": { - "additionalProperties": false, - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "price_formatted": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Koszt metody wysyłki jako tekst w PLN, np. „339,00 zł”; null gdy brak" - }, - "price_minor": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Koszt metody wysyłki w groszach (PLN), liczba całkowita; null gdy brak" - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "name", - "type", - "description", - "price_minor", - "price_formatted" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "currency", - "cheapest_price_minor", - "cheapest_price_formatted", - "free_shipping_threshold_minor", - "free_shipping_threshold_formatted", - "methods" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / slotsRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "allows": { - "additionalProperties": false, - "properties": { - "color": { - "type": "boolean" - }, - "drawing": { - "type": "boolean" - }, - "font": { - "type": "boolean" - }, - "text": { - "type": "boolean" - }, - "thread": { - "type": "boolean" - } - }, - "required": [ - "color", - "drawing", - "text", - "thread", - "font" - ], - "type": "object" - }, - "customizable": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "options": { - "items": { - "additionalProperties": false, - "properties": { - "color_hex": { - "anyOf": [ - { - "pattern": "^#[0-9A-Fa-f]{6}$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Kolor w formacie #RRGGBB lub null" - }, - "id": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - "name": { - "type": "string" - }, - "price_premium_formatted": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Dopłata za opcję jako tekst w PLN, np. „339,00 zł”; null gdy brak" - }, - "price_premium_minor": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dopłata za opcję w groszach (PLN), liczba całkowita; null gdy brak" - } - }, - "required": [ - "id", - "name", - "color_hex", - "price_premium_minor", - "price_premium_formatted" - ], - "type": "object" - }, - "type": "array" - }, - "position": { - "type": "number" - } - }, - "required": [ - "name", - "position", - "customizable", - "allows", - "options" - ], - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / tracked_creator_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" -}
- Added
list_colors - Changed
search_products9 fields changed- added
Input schema / properties / forAdded value: +{ + "description": "Dla kogo: jedna osoba (mama, tata, babcia, dziadek, przyjaciółka), para (rodzice, dziadkowie, narzeczeni, ślub, rocznica ślubu), rodzina (rodzina, nowy dom). Wynik zawiera też produkty bez for.", + "enum": [ + "jedna osoba", + "para", + "rodzina" + ], + "type": "string" +} - changed
Input schema / properties / max_price_minor / descriptionPrevious value: -"Maksymalna cena produktu w groszach (PLN), np. 35000 = 350 zł; bez parametru brak filtra budżetu"New value: +"Budżet w groszach, np. 35000 = 350 zł" - added
Output schema / properties / items / items / properties / containsAdded value: +{ + "description": "Skład, np. \"2× ręcznik kąpielowy 70×140 cm, 500 g/m²; kosz\"; brak, gdy szczegóły produktu są niedostępne", + "type": "string" +} - added
Output schema / properties / items / items / properties / forAdded value: +{ + "description": "Dla kogo; brak, gdy produkt nie ma danych odbiorcy", + "enum": [ + "jedna osoba", + "para", + "rodzina" + ], + "type": "string" +} - added
Output schema / properties / items / items / properties / product_url / descriptionAdded value: +"Link do produktu; z UTM dla klientów spoza zaufanych adresów" - removed
Output schema / properties / items / items / properties / short_descriptionRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / items / items / properties / tracked_product_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" -} - changed
Output schema / properties / items / items / requiredPrevious value: -[ - "id", - "name", - "short_description", - "price_minor", - "price_formatted", - "currency", - "product_url", - "tracked_product_url", - "image_url" -]New value: +[ + "id", + "name", + "price_minor", + "price_formatted", + "currency", + "product_url", + "image_url" +] - changed
Output schema / properties / total / descriptionPrevious value: -"Liczba pasujących produktów (po filtrze budżetu, przed limitem)"New value: +"Liczba pasujących produktów (po filtrach for i budżetu, przed limitem)"
2 tool updates
- Changed
list_fonts_threads6 fields changed- removed
Output schema / properties / fonts / items / properties / preview_image_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / fonts / items / properties / preview_markdown / descriptionAdded value: +"Gotowy markdown obrazu podglądu ; null gdy brak podglądu" - changed
Output schema / properties / fonts / items / requiredPrevious value: -[ - "id", - "name", - "preview_image_url", - "preview_markdown" -]New value: +[ + "id", + "name", + "preview_markdown" +] - removed
Output schema / properties / threads / items / properties / preview_image_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / threads / items / properties / preview_markdown / descriptionAdded value: +"Gotowy markdown obrazu podglądu ; null gdy brak podglądu" - changed
Output schema / properties / threads / items / requiredPrevious value: -[ - "id", - "name", - "color_hex", - "preview_image_url", - "preview_markdown" -]New value: +[ + "id", + "name", + "color_hex", + "preview_markdown" +]
- Changed
search_products8 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -10New value: +20 - removed
Output schema / properties / items / items / properties / creator_urlRemoved value: -{ - "format": "uri", - "type": "string" -} - removed
Output schema / properties / items / items / properties / is_on_saleRemoved value: -{ - "type": "boolean" -} - changed
Output schema / properties / items / items / properties / regular_price_formatted / descriptionPrevious value: -"Cena regularna jako tekst w PLN, np. „339,00 zł”; null gdy brak"New value: +"Cena regularna (tylko w promocji) jako tekst w PLN, np. „339,00 zł”; null gdy brak" - changed
Output schema / properties / items / items / properties / regular_price_minor / descriptionPrevious value: -"Cena regularna w groszach (PLN), liczba całkowita; null gdy brak"New value: +"Cena regularna (tylko w promocji) w groszach (PLN), liczba całkowita; null gdy brak" - removed
Output schema / properties / items / items / properties / secondary_nameRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / items / items / properties / tracked_creator_urlRemoved value: -{ - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" -} - changed
Output schema / properties / items / items / requiredPrevious value: -[ - "id", - "name", - "secondary_name", - "short_description", - "price_minor", - "price_formatted", - "regular_price_minor", - "regular_price_formatted", - "is_on_sale", - "currency", - "product_url", - "tracked_product_url", - "creator_url", - "tracked_creator_url", - "image_url" -]New value: +[ + "id", + "name", + "short_description", + "price_minor", + "price_formatted", + "currency", + "product_url", + "tracked_product_url", + "image_url" +]
1 tool update
- Changed
get_creator_link1 field changed- added
Output schema / properties / configuration_noticeAdded value: +{ + "description": "Informacja, że link otworzy kreator bez ustawień personalizacji; obecna przy wywołaniu bez slots[], tab i slot", + "type": "string" +}
1 tool update
- Changed
list_designs2 fields changed- changed
Output schema / properties / items / items / properties / texts / items / properties / slot_key / descriptionPrevious value: -"Klucz pola tekstowego (klucz texts w linku do kreatora)"New value: +"Klucz pola tekstowego (klucz texts w linku do kreatora); brak dla ogólnego pola tekstowego" - changed
Output schema / properties / items / items / properties / texts / items / requiredPrevious value: -[ - "slot_key", - "label", - "max_chars" -]New value: +[ + "label", + "max_chars" +]
1 tool update
- Changed
get_creator_link3 fields changed- added
Input schema / properties / slotAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / slotsAdded value: +{ + "items": { + "properties": { + "drawing_id": { + "description": "ID wzoru z list_designs", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "font_id": { + "description": "ID czcionki z list_fonts_threads", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "option_id": { + "description": "ID opcji koloru z options[] dla slotu produktu", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "texts": { + "additionalProperties": { + "type": "string" + }, + "description": "Teksty haftu jako mapa klucz-wartość, np. {\"names\":\"Zażółć\"}", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "thread_id": { + "description": "ID nici z list_fonts_threads", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / tabAdded value: +{ + "enum": [ + "produkt", + "wzory", + "nici", + "czcionki", + "tekst" + ], + "type": "string" +}
1 tool update
- Added
list_fonts_threads
1 tool update
- Added
list_designs
5 tool updates
- Changed
fetch2 fields changed- added
Output schema / properties / errorAdded value: +{ + "additionalProperties": false, + "description": "Tylko przy isError: { code, message, ... }", + "properties": { + "code": { + "enum": [ + "invalid_input", + "not_found", + "shop_unavailable" + ], + "type": "string" + }, + "correlation_id": { + "description": "Identyfikator do zgłoszenia problemu (shop_unavailable)", + "type": "string" + }, + "fields": { + "description": "Nazwy błędnych parametrów (invalid_input)", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "retry_after_seconds": { + "description": "Po ilu sekundach ponowić żądanie (shop_unavailable)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "id", - "title", - "text", - "url" -]
- Changed
get_creator_link1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "creator_url": { + "format": "uri", + "type": "string" + }, + "error": { + "additionalProperties": false, + "description": "Tylko przy isError: { code, message, ... }", + "properties": { + "code": { + "enum": [ + "invalid_input", + "not_found", + "shop_unavailable" + ], + "type": "string" + }, + "correlation_id": { + "description": "Identyfikator do zgłoszenia problemu (shop_unavailable)", + "type": "string" + }, + "fields": { + "description": "Nazwy błędnych parametrów (invalid_input)", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "retry_after_seconds": { + "description": "Po ilu sekundach ponowić żądanie (shop_unavailable)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "name": { + "type": "string" + }, + "product_id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "tracked_creator_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" + } + }, + "type": "object" +}
- Changed
get_product_options1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "creator_url": { + "format": "uri", + "type": "string" + }, + "currency": { + "description": "Kod waluty, zawsze PLN", + "type": "string" + }, + "dimensions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "error": { + "additionalProperties": false, + "description": "Tylko przy isError: { code, message, ... }", + "properties": { + "code": { + "enum": [ + "invalid_input", + "not_found", + "shop_unavailable" + ], + "type": "string" + }, + "correlation_id": { + "description": "Identyfikator do zgłoszenia problemu (shop_unavailable)", + "type": "string" + }, + "fields": { + "description": "Nazwy błędnych parametrów (invalid_input)", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "retry_after_seconds": { + "description": "Po ilu sekundach ponowić żądanie (shop_unavailable)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "is_on_sale": { + "type": "boolean" + }, + "lead_time": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + }, + { + "type": "null" + } + ], + "description": "Czas realizacji (tekst lub obiekt z etykietami z API sklepu)" + }, + "material": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Aktualna cena jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Aktualna cena w groszach (PLN), liczba całkowita; null gdy brak" + }, + "regular_price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Cena regularna jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "regular_price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Cena regularna w groszach (PLN), liczba całkowita; null gdy brak" + }, + "shipping": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "cheapest_price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Najtańsza wysyłka jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "cheapest_price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Najtańsza wysyłka w groszach (PLN), liczba całkowita; null gdy brak" + }, + "currency": { + "type": "string" + }, + "free_shipping_threshold_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Próg darmowej wysyłki jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "free_shipping_threshold_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Próg darmowej wysyłki w groszach (PLN), liczba całkowita; null gdy brak" + }, + "methods": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Koszt metody wysyłki jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Koszt metody wysyłki w groszach (PLN), liczba całkowita; null gdy brak" + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "name", + "type", + "description", + "price_minor", + "price_formatted" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "currency", + "cheapest_price_minor", + "cheapest_price_formatted", + "free_shipping_threshold_minor", + "free_shipping_threshold_formatted", + "methods" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "slots": { + "items": { + "additionalProperties": false, + "properties": { + "allows": { + "additionalProperties": false, + "properties": { + "color": { + "type": "boolean" + }, + "drawing": { + "type": "boolean" + }, + "font": { + "type": "boolean" + }, + "text": { + "type": "boolean" + }, + "thread": { + "type": "boolean" + } + }, + "required": [ + "color", + "drawing", + "text", + "thread", + "font" + ], + "type": "object" + }, + "customizable": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "additionalProperties": false, + "properties": { + "color_hex": { + "anyOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Kolor w formacie #RRGGBB lub null" + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "name": { + "type": "string" + }, + "price_premium_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Dopłata za opcję jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "price_premium_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Dopłata za opcję w groszach (PLN), liczba całkowita; null gdy brak" + } + }, + "required": [ + "id", + "name", + "color_hex", + "price_premium_minor", + "price_premium_formatted" + ], + "type": "object" + }, + "type": "array" + }, + "position": { + "type": "number" + } + }, + "required": [ + "name", + "position", + "customizable", + "allows", + "options" + ], + "type": "object" + }, + "type": "array" + }, + "text_max_length": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Maksymalna długość tekstu haftu (znaki)" + }, + "tracked_creator_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" + } + }, + "type": "object" +}
- Changed
search2 fields changed- added
Output schema / properties / errorAdded value: +{ + "additionalProperties": false, + "description": "Tylko przy isError: { code, message, ... }", + "properties": { + "code": { + "enum": [ + "invalid_input", + "not_found", + "shop_unavailable" + ], + "type": "string" + }, + "correlation_id": { + "description": "Identyfikator do zgłoszenia problemu (shop_unavailable)", + "type": "string" + }, + "fields": { + "description": "Nazwy błędnych parametrów (invalid_input)", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "retry_after_seconds": { + "description": "Po ilu sekundach ponowić żądanie (shop_unavailable)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "results" -]
- Changed
search_products2 fields changed- added
Input schema / properties / max_price_minorAdded value: +{ + "description": "Maksymalna cena produktu w groszach (PLN), np. 35000 = 350 zł; bez parametru brak filtra budżetu", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "additionalProperties": false, + "description": "Tylko przy isError: { code, message, ... }", + "properties": { + "code": { + "enum": [ + "invalid_input", + "not_found", + "shop_unavailable" + ], + "type": "string" + }, + "correlation_id": { + "description": "Identyfikator do zgłoszenia problemu (shop_unavailable)", + "type": "string" + }, + "fields": { + "description": "Nazwy błędnych parametrów (invalid_input)", + "items": { + "type": "string" + }, + "type": "array" + }, + "message": { + "type": "string" + }, + "retry_after_seconds": { + "description": "Po ilu sekundach ponowić żądanie (shop_unavailable)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "creator_url": { + "format": "uri", + "type": "string" + }, + "currency": { + "description": "Kod waluty, zawsze PLN", + "type": "string" + }, + "id": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_on_sale": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Aktualna cena jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Aktualna cena w groszach (PLN), liczba całkowita; null gdy brak" + }, + "product_url": { + "format": "uri", + "type": "string" + }, + "regular_price_formatted": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Cena regularna jako tekst w PLN, np. „339,00 zł”; null gdy brak" + }, + "regular_price_minor": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Cena regularna w groszach (PLN), liczba całkowita; null gdy brak" + }, + "secondary_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "short_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "tracked_creator_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" + }, + "tracked_product_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "URL z parametrami UTM do mierzenia ruchu z asystenta AI; null, gdy śledzone linki są wyłączone (MCP_TRACKED_URLS=0)" + } + }, + "required": [ + "id", + "name", + "secondary_name", + "short_description", + "price_minor", + "price_formatted", + "regular_price_minor", + "regular_price_formatted", + "is_on_sale", + "currency", + "product_url", + "tracked_product_url", + "creator_url", + "tracked_creator_url", + "image_url" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Liczba pasujących produktów (po filtrze budżetu, przed limitem)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "type": "object" +}
4 tool updates
- Changed
fetch1 field changed- removed
Input schema / properties / id / minLengthRemoved value: -1
- Changed
get_creator_link1 field changed- changed
Input schema / properties / product_id / minimumPrevious value: -1New value: +-9007199254740991
- Changed
get_product_options1 field changed- changed
Input schema / properties / product_id / minimumPrevious value: -1New value: +-9007199254740991
- Changed
search1 field changed- removed
Input schema / properties / query / minLengthRemoved value: -1
5 tool updates
- First observed
fetch - First observed
get_creator_link - First observed
get_product_options - First observed
search - First observed
search_products
Related MCP Connectors
Server MCP read-only: catalog Picătura Naturii (doTERRA) — căutare produse, preț, stoc, conținut.
Öffentlicher Read-only-MCP: Med-Dent24 Produktkatalog. Kein Login, keine Kundendaten.
Merchant product catalogs for AI agents: price, availability, specs, variants, buy links. Read-only.
MCP gateway for eaglesandangelsltd.com: products, prices, stock, cart links and articles.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for verifying Polish business entities from the National Court Register (KRS) and VAT White List. Allows querying by KRS, NIP, or REGON to retrieve official company data including name, address, board, and capital.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA read-only MCP server for querying product inventory, providing tools to retrieve product details and stock quantities.-
- AlicenseNot gradedqualityBmaintenancePublic, read-only MCP server that lets an AI assistant search Seoul's Dongdaemun wholesale fashion market — finding items by keyword in eight languages, listing the newest arrivals, and locating stalls by name, stall number, building or floor, with links back to each item or store page. It returns no prices, stock or merchant contact details and cannot place orders.MIT
- AlicenseNot gradedqualityFmaintenancePublic Telegram catalog MCP server: search 1.4M+ channels, groups, bots, and posts, and browse marketplace listings, with no auth or API key.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.