Suorigo Konfigurátor
Server Details
Potisk triček a textilu na míru (ČR) — katalog, ceny, příprava designu a objednávky.
- Status
- Healthy
- Uptime
- 98.6% over 58 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Most tools target a clearly distinct resource+action (design, order, payment link, status, pickup points, products, company), and descriptions are detailed and explicit. The only real overlap is get_quote vs quote_order, both price estimators, but the descriptions clearly scope one to a single product and the other to the full order, so confusion is limited.
All ten tools use a consistent snake_case verb_noun pattern (cancel_order, create_design, create_order, find_pickup_points, get_order_status, get_payment_link, get_quote, list_products, lookup_company, quote_order). No mixed conventions or vague verb styles.
With 10 tools this is well-scoped for a custom-print e-commerce server; each tool covers a distinct step (catalog, design, quoting, ordering, payment, status, cancel, shipping, company lookup). Nothing feels redundant or missing at the count level.
The purchase lifecycle is largely covered: catalog, design, quoting, ordering, payment link retrieval, status, cancellation, pickup points, and company lookup. Minor gaps remain (no order history/list for the customer, no explicit refund or reorder path, cancellation limited to unpaid orders), but core workflows are complete.
Available Tools
10 toolscancel_orderADestructiveIdempotentInspect
Stornuje NEZAPLACENOU objednávku, která ještě není ve výrobě — stejně jako tlačítko na stránce stavu (zákazník dostane e-mail o stornu, otevřená platba kartou se zavře). Zaplacenou objednávku stornovat nejde (napiš na potisk@suorigo.cz). Jen se statusToken a jen na výslovný pokyn zákazníka.
| Name | Required | Description | Default |
|---|---|---|---|
| statusToken | Yes | statusToken z create_order (poslední část statusUrl) — plný přístup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds valuable behavioral context: the customer receives a cancellation email, an open card payment is closed, and the operation is restricted to unpaid orders. It also adds the constraint that it must be done only on explicit customer instruction. The idempotentHint=true annotation is not contradicted; the description doesn't claim non-idempotency. Slight gap: no mention of what happens if the order is already in production, but the 'not yet in production' condition implies it.
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?
The description is compact but information-dense. Every sentence earns its place: the condition, the effect, the exclusion, the fallback contact, and the authorization constraint. It is front-loaded with the most important condition (unpaid, not in production).
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 single-parameter tool with a clear schema and annotations, the description covers the essential context: what it does, when it's allowed, what side effects occur, and what to do when it can't be used. The only minor gap is not explicitly stating the behavior for an order already in production, but the 'not yet in production' condition implies it's not cancellable via this tool.
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 100%, so the schema already documents the statusToken parameter. The description adds meaning by explaining where the token comes from (last part of statusUrl from create_order) and that it grants full access, which is useful context beyond the schema's bare description.
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 clearly states the tool cancels an UNPAID order not yet in production, and explicitly says paid orders cannot be cancelled. It distinguishes itself from sibling tools by naming the exact condition (unpaid, not in production) and the action (same as the button on the status page).
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?
The description gives explicit when-to-use guidance: only with a statusToken, only on explicit customer instruction, and only for unpaid orders not yet in production. It also tells the agent what to do if the order is paid (write to potisk@suorigo.cz), which is a clear alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_designAInspect
Zvaliduje a uloží design (logo/text na stranách trička): vrátí vrstvy s nahranými URL pro create_order, orientační příplatek za potisk a previewUrl — odkaz, kde zákazník uvidí návrh na tričku v konfigurátoru (a může ho tam i sám objednat).
| Name | Required | Description | Default |
|---|---|---|---|
| layers | Yes | vrstvy: {type:'image'|'text', side:'front'|'back'|'sideLeft'|'sideRight', x,y,width,height v % 0–100, rotation?, src? (https URL nebo data:URL obrázku), text?, fontFamily?, fontSize?, fill?} | |
| colorId | No | ||
| product | Yes | ||
| previewBackDataUrl | No | ||
| previewFrontDataUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints false, the description carries the behavioral burden — and it delivers: it discloses persistence ('uloží' — saves), an upload side effect (returns layers with uploaded URLs), that the surcharge is only indicative ('orientační'), and that the design becomes customer-visible/orderable via the previewUrl. No contradiction with annotations; only validation-failure behavior is left undisclosed.
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?
The description is one dense, run-on compound sentence packing validation, saving, three return values, and a customer-ordering detail. It is front-loaded with the core action, but the structure hurts scannability; splitting into two or three sentences would improve readability without adding length.
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 5-parameter tool with 20% schema coverage, no output schema, and all-false annotations, the description must carry more weight. It explains return values well (needed since no output schema exists) and the workflow, but leaves the required 'product' parameter and other three optional parameters completely unexplained — an agent cannot reliably invoke this tool correctly without guessing their formats.
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 20% — four of five parameters (colorId, product, previewBackDataUrl, previewFrontDataUrl) are undocumented in the schema, and the description does not compensate for any of them. The layers parameter has a rich inline schema description, but the tool description itself adds no parameter-level meaning beyond the phrase 'logo/text na stranách trička', which loosely maps to layers content only.
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 action ('Zvaliduje a uloží design' — validates and saves a design) with a specific resource (logo/text on t-shirt sides). It goes beyond the title 'Připravit design' by detailing what it returns (uploaded layer URLs, surcharge, previewUrl) and clearly positions itself as the preparation step feeding into create_order, distinguishing it from order-creation and quoting siblings.
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 context is implied through workflow references: the returned layers are 'pro create_order' (for create_order), and the previewUrl lets the customer order from the configurator. This tells the agent this tool precedes order creation, but there are no explicit when-not-to-use conditions or comparisons against alternatives like get_quote or quote_order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_orderIdempotentInspect
Založí ZÁVAZNOU objednávku (čeká na platbu). paymentMethod 'bank_transfer' (výchozí) vrátí číslo účtu, variabilní symbol a QR; 'card' vrátí paymentUrl — zabezpečenou stránku Stripe pro tuto objednávku, kde zákazník sám zadá kartu (agent kartu nikdy nezadává ani nevidí; po zaplacení jede faktura a výroba stejně jako u objednávky z webu). Vždy vrátí statusUrl a statusToken (pro get_order_status, get_payment_link, cancel_order) a zákazníkovi pošle e-mail. Volej až po výslovném souhlasu zákazníka s položkami a cenou z quote_order. Povinné: skutečný e-mail (doména musí přijímat poštu, jinak 422), jméno a příjmení, shippingId (+ pickupPointId u výdejního místa, jinak adresa), consent:true; nad 10 000 Kč bez IČO fakturační adresa. Kartou nejméně 15 Kč. Nezaplacená karta propadne po 48 h, převod po 7 dnech. Limity: 3 objednávky / IP / den, 2 nezaplacené a 3 objednávky za 24 h na e-mail (429). Při opakování po timeoutu pošli stejný idempotencyKey.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | položky objednávky (každá velikost/barva zvlášť) | |
| notes | No | vzkaz zákazníka k objednávce (co má dílna vědět); uloží se k zakázce jako poznámka od zákazníka, delší text se ořízne | |
| consent | Yes | souhlas zákazníka s obchodními podmínkami (https://suorigo.cz/obchodni-podminky), musí být true | |
| customer | Yes | zákazník: email (povinné, skutečná doména s poštou), name (povinné — jméno A příjmení, jde na daňový doklad), phone?, address? (doručovací adresa jedním řádkem u doručení na adresu) nebo deliveryStreet/deliveryCity/deliveryZip, firma: companyName?, ico? (doplní se z ARES), dic?, fakturační adresa billingStreet/billingCity/billingZip/billingCountry (nad 10 000 Kč bez IČO povinná) | |
| promoCode | No | slevový kód; neplatný kód = chyba (nikdy tiše plná cena) | |
| shippingId | Yes | doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (69 Kč), dpd-vydejni (89 Kč), ppl (na adresu, 119 Kč), dpd (na adresu, 109 Kč); od 1 500 Kč zdarma | |
| paymentMethod | No | bank_transfer = převod + QR (výchozí); card = odkaz na platbu kartou (Stripe Checkout, Apple/Google Pay podle prohlížeče) | |
| pickupPointId | No | id výdejního místa z find_pickup_points (povinné u dopravy na výdejní místo) | |
| idempotencyKey | No | libovolný unikátní klíč této objednávky (např. UUID); opakované volání se stejným klíčem a obsahem vrátí stejnou objednávku (replayed:true, u karty tentýž platební odkaz), stejný klíč s jiným obsahem = 409 | |
| deliverySpeedId | No | termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost) | |
| pickupPointName | No | název výdejního místa (volitelné, doplní se samo) |
find_pickup_pointsARead-onlyInspect
Vyhledá výdejní místa dopravce podle města, PSČ, ulice nebo názvu (Zásilkovna vč. Z-BOXů, Balíkovna, PPL ParcelShop, DPD Pickup). Vrácené id patří do create_order.pickupPointId.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | počet výsledků (výchozí 10) | |
| query | Yes | město, PSČ, ulice nebo název (min. 2 znaky), např. „Brno Lidická“ nebo „60200“ | |
| shippingId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict them. It adds useful integration context by noting the returned id is meant for create_order, but it does not describe response shape, pagination, availability, or provider-specific caveats.
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 sentences, front-loaded with the core action and followed by the integration note. There is no filler, repetition, or unnecessary detail; every sentence earns its place.
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 three-parameter lookup tool with annotations and no output schema, the description provides enough to call it correctly: carriers, search criteria, and the meaning of the returned id. A minor gap is that it does not mention what other fields appear in results, but the tool's evident purpose is to supply an id for order creation.
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 documents query and limit, but shippingId has no description. The description's carrier list ('Zásilkovna vč. Z-BOXů, Balíkovna, PPL ParcelShop, DPD Pickup') gives human-readable meaning to the otherwise opaque enum values, and it reinforces query semantics with city/PSČ/street/name examples.
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 opens with a specific verb and resource: 'Vyhledá výdejní místa dopravce' (searches carrier pickup points), lists the supported carriers, and states the search dimensions. It is clearly distinct from the order/catalog siblings and directly explains what the tool returns.
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?
The sentence 'Vrácené id patří do create_order.pickupPointId' clearly frames the tool as a prerequisite lookup step before order creation. It establishes the intended usage context, though it does not explicitly name alternative tools or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusARead-onlyInspect
Stav objednávky: platba (pending/paid/failed/refunded), výroba (new → shipped/delivered, cancelled), očekávaný termín. Se statusToken navíc statusUrl, faktura (PDF po zaplacení) a sledování zásilky. S orderNumber + email jen základní stav (čísla objednávek jsou předvídatelná). Neshoda = found:false.
| Name | Required | Description | Default |
|---|---|---|---|
| No | e-mail zákazníka z objednávky — jen spolu s orderNumber | ||
| orderNumber | No | číslo objednávky (9 číslic) — jen spolu s e-mailem | |
| statusToken | No | statusToken z create_order (poslední část statusUrl) — plný přístup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, and the description adds context beyond that: it explains the different output richness depending on the provided parameters, and warns that order numbers are predictable (a security consideration). It doesn't contradict annotations. The description effectively conveys behavioral nuances such as the fact that the tool is safe but may return partial or no data depending on input.
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?
The description is a single dense paragraph, but it front-loads the core purpose and then details the two access modes concisely. While it could be split into clearer bullet points, every sentence adds value and there's no redundancy. It's efficient and readable.
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 no output schema, the description carries the burden of explaining return values, and it does so well: it lists payment statuses, production statuses, expected date, and additional fields available with the token. A notable gap is the behavior when no parameters are provided (none are required), which is not addressed. Overall, it's nearly complete for a read‑only status tool.
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 100%, so parameters are already documented. The description adds meaningful semantics by clarifying that orderNumber and email must be used together, and that statusToken (the last part of statusUrl) provides full access. This goes beyond the schema's plain descriptions and helps the agent construct correct calls.
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 clearly states it provides order status ('Stav objednávky') and enumerates the specific data it returns: payment status, production status, and expected date. It distinguishes between basic and full access based on the token, giving a clear sense of the tool's scope. However, it does not explicitly name alternative sibling tools or contrast its purpose with them, so it's slightly below a perfect score.
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?
The description gives concrete usage guidance: using statusToken grants full access (including statusUrl, invoice, and tracking), whereas orderNumber + email yields only basic status. It also notes that mismatches result in found:false. This implies when and how to call the tool, but it stops short of explicitly stating when to choose this over other order-related tools like get_payment_link or get_quote, so it's not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_linkAIdempotentInspect
Vrátí odkaz na zaplacení existující objednávky kartou (paymentUrl na Stripe) — když zákazník odkaz ztratil nebo vypršel (platí ~24 h). Stejná cesta jako tlačítko „Dokončit platbu kartou“ na webu: otevřenou platbu znovu použije, zaplacenou jen potvrdí, rozpracované ověření v bance nechá doběhnout. Jen pro objednávky kartou (převod má platební údaje v create_order). Autorizace: statusToken → vrátí paymentUrl; orderNumber + email → odkaz NEvrací, pošle ho zákazníkovi na e-mail z objednávky (max 1× / 15 min, 3× / den).
| Name | Required | Description | Default |
|---|---|---|---|
| No | e-mail zákazníka z objednávky — jen spolu s orderNumber | ||
| orderNumber | No | číslo objednávky (9 číslic) — jen spolu s e-mailem | |
| statusToken | No | statusToken z create_order (poslední část statusUrl) — plný přístup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals important side effects: orderNumber+email does not return the link but sends an email to the customer, with rate limits (max 1×/15 min, 3×/day). It also explains behavior for open, already-paid, and in-progress bank-verification payments. There is no contradiction with readOnlyHint=false, idempotentHint=true, or destructiveHint=false.
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 dense sentences are front-loaded with the core purpose, then add scope, behavioral nuances, authorization rules, and rate limits. Every sentence carries decision-relevant information with no filler or redundancy.
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 tool with no output schema, the description covers triggers, card-only constraints, alternative flows, authorization modes, side effects, payment-state behavior, and rate limits. It gives an agent enough context to call the tool correctly in both supported parameter combinations.
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 input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds value by clarifying that statusToken produces a direct paymentUrl response while orderNumber+email only triggers an email delivery, which the schema alone does not fully convey.
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 the exact function: returns a Stripe paymentUrl for an existing card order, and explicitly ties it to the lost/expired-link scenario. It also narrows scope to card-only orders, which clearly differentiates it from transfer-payment flows and sibling tools like create_order or get_order_status.
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 explicitly states when to use the tool ('když zákazník odkaz ztratil nebo vypršel') and when not to ('Jen pro objednávky kartou', with transfer orders pointing to create_order). It also documents the two authorization modes and their different behaviors, so an agent knows which parameters return the link versus trigger an email.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteARead-onlyInspect
Rychlý odhad ceny JEDNOHO produktu (vč. DPH) podle množství/velikostí a počtu potištěných stran. Přesnou cenu celé objednávky (doprava, kupón, termín) vrací quote_order.
| Name | Required | Description | Default |
|---|---|---|---|
| sizes | No | mapování velikost→počet, např. {"M":10,"L":5} | |
| product | Yes | ||
| quantity | No | ||
| promoCode | No | ||
| printedSides | No | počet potištěných stran 0–4 | |
| printSideHeightsCm | No | výška motivu v cm na každé potištěné straně |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds useful behavioral context: the result is a rapid estimate, includes VAT, is scoped to one product, and is not the final order price. There is no contradiction with annotations.
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?
The description is two tight sentences with the primary action front-loaded and the sibling distinction in the second sentence. Every phrase contributes meaning, and there is no redundant 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?
The description is sufficient for tool selection and basic routing, but for a 6-parameter tool with a nested sizes object and no output schema, it would benefit from clarifying which parameters are expected together and how print-side heights are used. The sibling mention mitigates this partially, but invocation details remain incomplete.
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 50%, and the description adds some domain meaning by naming quantity/sizes and number of printed sides as price drivers. However, it does not clarify the required 'product' parameter, the role of 'promoCode', or how 'printSideHeightsCm' relates to the estimate, leaving part of the invocation behavior under-specified.
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: 'Rychlý odhad ceny JEDNOHO produktu (vč. DPH)', i.e., a quick price estimate for a single product including VAT. It also explicitly contrasts itself with quote_order, which returns the exact full-order price, clearly differentiating it from the sibling tool.
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?
The description provides explicit routing guidance: use this tool for a quick single-product estimate, and use quote_order for the exact order total including shipping, coupon, and delivery date. This is a clear when-to-use / when-not-to-use statement with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-onlyInspect
Vrátí katalog triček/mikin Suorigo (barvy, velikosti, ceny vč. množstevních slev) nebo jeden produkt podle id/slug.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | id nebo slug konkrétního produktu (volitelné) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only behavior is known. The description adds context about the returned data (colors, sizes, prices, discounts) and that output varies based on whether the product parameter is provided.
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?
One concise sentence that front-loads the action and resource, contains no filler, and is easy to scan.
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?
The tool is simple, with one optional parameter, full schema coverage, and annotations covering safety. The description adequately explains the return behavior. Although it does not mention pagination or response format, these are not essential for this low-complexity tool.
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 fully describes the optional 'product' parameter as id/slug, and the description echoes that role. However, it does not add extra syntax or formatting details. With 100% schema coverage, the baseline of 3 applies.
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 clearly states it returns a catalog of Suorigo t-shirts/hoodies (colors, sizes, prices, discounts) or a single product by id/slug. The verb and resource are specific, and it is easily distinguished from sibling tools like create_order or get_quote.
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?
The description implies when to use it: to fetch product catalog or a specific product. It does not explicitly name alternatives or exclusions, but the sibling tool names are distinct enough that no ambiguity arises.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_companyARead-onlyInspect
Dohledá firmu podle IČO v ARES (název, DIČ, sídlo) — pro nákup na firmu. Vrací pole ve tvaru create_order.customer (companyName, ico, dic, billingStreet…).
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | IČO (7–8 číslic) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false), and the description adds worthwhile behavioral context: it queries the external ARES registry and returns a structured customer-shaped object. It does not disclose failure modes or rate limits, but for a read-only lookup this is a minor gap given the annotation coverage.
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 sentence packs purpose, data source, returned fields, use case, and output shape into a compact definition. No filler or repetition; the most important information is front-loaded.
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 one-parameter read-only lookup with no output schema, the description is complete: it explains the source, the data returned, the output shape reference, and the intended business scenario. An agent has enough to call the tool correctly and map the result forward into an order.
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 100% and the schema already documents ico as 'IČO (7–8 číslic)'. The description repeats the IČO concept but adds little beyond schema semantics; it does confirm the parameter identifies the company to look up in ARES. Baseline 3 is appropriate because the schema carries the parameter-meaning burden.
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 action ('Dohledá firmu podle IČO v ARES'), identifies the exact resource (ARES registry), and lists the data returned (název, DIČ, sídlo). It also ties the result to a concrete use case ('pro nákup na firmu') and connects the output shape to create_order.customer, making it easy for an agent to distinguish this lookup tool from order-management siblings.
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?
The description clearly indicates when this tool is relevant: when purchasing as a company and you need Czech company details by IČO. It does not explicitly name sibling alternatives or state when not to use it, but the ARES-specific lookup intent and the create_order.customer output shape provide enough contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_orderRead-onlyInspect
Přesná cena celé objednávky PŘED založením — stejný výpočet jako create_order (položky, doprava vč. dopravy zdarma od 1 500 Kč, kupón, termín výroby). Vrací totalVat, rozpis, dostupné termíny (deliverySpeeds), ceny dopravy a v requirements co ještě chybí k objednání. Nic neukládá.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | položky objednávky (každá velikost/barva zvlášť) | |
| customer | No | volitelné: email (kvůli limitu kupónu), name, ico, adresy — jen pro kontrolu requirements | |
| promoCode | No | slevový kód; neplatný kód = chyba (nikdy tiše plná cena) | |
| shippingId | No | doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (69 Kč), dpd-vydejni (89 Kč), ppl (na adresu, 119 Kč), dpd (na adresu, 109 Kč); od 1 500 Kč zdarma | |
| pickupPointId | No | id výdejního místa z find_pickup_points (povinné u dopravy na výdejní místo) | |
| deliverySpeedId | No | termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost) | |
| pickupPointName | No | název výdejního místa (volitelné, doplní se samo) |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
create_order1 field changed- changed
Input schema / properties / shippingId / descriptionPrevious value: -"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma"New value: +"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (69 Kč), dpd-vydejni (89 Kč), ppl (na adresu, 119 Kč), dpd (na adresu, 109 Kč); od 1 500 Kč zdarma"
- Changed
quote_order1 field changed- changed
Input schema / properties / shippingId / descriptionPrevious value: -"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma"New value: +"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (69 Kč), dpd-vydejni (89 Kč), ppl (na adresu, 119 Kč), dpd (na adresu, 109 Kč); od 1 500 Kč zdarma"
2 tool updates
- Changed
create_order2 fields changed- changed
Input schema / properties / shippingId / descriptionPrevious value: -"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma; osobni (Šitbořice) jen se slevovým kódem, který ho odemyká"New value: +"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma" - changed
Input schema / properties / shippingId / enumPrevious value: -[ - "zasilkovna", - "balikovna", - "ppl-vydejni", - "dpd-vydejni", - "ppl", - "dpd", - "osobni" -]New value: +[ + "zasilkovna", + "balikovna", + "ppl-vydejni", + "dpd-vydejni", + "ppl", + "dpd" +]
- Changed
quote_order2 fields changed- changed
Input schema / properties / shippingId / descriptionPrevious value: -"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma; osobni (Šitbořice) jen se slevovým kódem, který ho odemyká"New value: +"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma" - changed
Input schema / properties / shippingId / enumPrevious value: -[ - "zasilkovna", - "balikovna", - "ppl-vydejni", - "dpd-vydejni", - "ppl", - "dpd", - "osobni" -]New value: +[ + "zasilkovna", + "balikovna", + "ppl-vydejni", + "dpd-vydejni", + "ppl", + "dpd" +]
2 tool updates
- Changed
create_order3 fields changed- changed
Input schema / properties / deliverySpeedId / descriptionPrevious value: -"termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), rush3 = expres do 3 prac. dnů +100 % (jen černá/bílá trička Standart, objednávka 1 500–5 000 Kč, podání do 12:00), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost)"New value: +"termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost)" - changed
Input schema / properties / deliverySpeedId / enumPrevious value: -[ - "rush3", - "d7", - "d14", - "d30" -]New value: +[ + "d7", + "d14", + "d30" +] - changed
Input schema / properties / items / items / properties / colorName / descriptionPrevious value: -"název barvy (rozhoduje i o expresu: jen černá/bílá)"New value: +"název barvy"
- Changed
quote_order3 fields changed- changed
Input schema / properties / deliverySpeedId / descriptionPrevious value: -"termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), rush3 = expres do 3 prac. dnů +100 % (jen černá/bílá trička Standart, objednávka 1 500–5 000 Kč, podání do 12:00), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost)"New value: +"termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost)" - changed
Input schema / properties / deliverySpeedId / enumPrevious value: -[ - "rush3", - "d7", - "d14", - "d30" -]New value: +[ + "d7", + "d14", + "d30" +] - changed
Input schema / properties / items / items / properties / colorName / descriptionPrevious value: -"název barvy (rozhoduje i o expresu: jen černá/bílá)"New value: +"název barvy"
8 tool updates
- Added
cancel_order - Changed
create_design1 field changed- changed
Input schema / properties / layers / descriptionPrevious value: -"vrstvy: {type:'image'|'text', side:'front'|'back'|'sideLeft'|'sideRight', x,y,width,height v % 0–100, rotation?, src? (URL nebo data:URL obrázku), text?, fontFamily?, fontSize?, fill?}"New value: +"vrstvy: {type:'image'|'text', side:'front'|'back'|'sideLeft'|'sideRight', x,y,width,height v % 0–100, rotation?, src? (https URL nebo data:URL obrázku), text?, fontFamily?, fontSize?, fill?}"
- Changed
create_order16 fields changed- changed
Input schema / properties / consent / descriptionPrevious value: -"souhlas s obchodními podmínkami, musí být true"New value: +"souhlas zákazníka s obchodními podmínkami (https://suorigo.cz/obchodni-podminky), musí být true" - changed
Input schema / properties / customer / descriptionPrevious value: -"{email (povinné), name?, phone?, address?, companyName?, ico?, dic?, billingStreet?, billingCity?, billingZip?, billingCountry?}"New value: +"zákazník: email (povinné, skutečná doména s poštou), name (povinné — jméno A příjmení, jde na daňový doklad), phone?, address? (doručovací adresa jedním řádkem u doručení na adresu) nebo deliveryStreet/deliveryCity/deliveryZip, firma: companyName?, ico? (doplní se z ARES), dic?, fakturační adresa billingStreet/billingCity/billingZip/billingCountry (nad 10 000 Kč bez IČO povinná)" - added
Input schema / properties / customer / propertiesAdded value: +{ + "address": { + "type": "string" + }, + "billingCity": { + "type": "string" + }, + "billingCountry": { + "type": "string" + }, + "billingStreet": { + "type": "string" + }, + "billingZip": { + "type": "string" + }, + "companyName": { + "type": "string" + }, + "deliveryCity": { + "type": "string" + }, + "deliveryStreet": { + "type": "string" + }, + "deliveryZip": { + "type": "string" + }, + "dic": { + "type": "string" + }, + "email": { + "type": "string" + }, + "ico": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } +} - added
Input schema / properties / customer / requiredAdded value: +[ + "email", + "name" +] - added
Input schema / properties / deliverySpeedIdAdded value: +{ + "description": "termín: d14 = do 14 prac. dní (výchozí, bez příplatku), d7 = do 7 dní +30 % (jen trička Standard), rush3 = expres do 3 prac. dnů +100 % (jen černá/bílá trička Standart, objednávka 1 500–5 000 Kč, podání do 12:00), d30 = do měsíce −10 %; nedostupný termín = 400 s důvodem (quote_order ukáže dostupnost)", + "enum": [ + "rush3", + "d7", + "d14", + "d30" + ], + "type": "string" +} - changed
Input schema / properties / idempotencyKey / descriptionPrevious value: -"libovolný unikátní klíč této objednávky (např. UUID); opakované volání se stejným klíčem a obsahem vrátí stejnou objednávku (replayed:true), stejný klíč s jiným obsahem = 409"New value: +"libovolný unikátní klíč této objednávky (např. UUID); opakované volání se stejným klíčem a obsahem vrátí stejnou objednávku (replayed:true, u karty tentýž platební odkaz), stejný klíč s jiným obsahem = 409" - changed
Input schema / properties / items / descriptionPrevious value: -"položky: {product (id/slug), colorId?, colorName?, size, quantity, printMethod?, layers? (z create_design)}"New value: +"položky objednávky (každá velikost/barva zvlášť)" - added
Input schema / properties / items / items / propertiesAdded value: +{ + "colorId": { + "type": "string" + }, + "colorName": { + "description": "název barvy (rozhoduje i o expresu: jen černá/bílá)", + "type": "string" + }, + "layers": { + "description": "vrstvy z create_design (určují příplatek za potisk)", + "items": { + "type": "object" + }, + "type": "array" + }, + "printMethod": { + "type": "string" + }, + "product": { + "description": "id nebo slug produktu z list_products", + "type": "string" + }, + "quantity": { + "minimum": 1, + "type": "integer" + }, + "size": { + "description": "velikost z katalogu, např. M", + "type": "string" + } +} - added
Input schema / properties / items / items / requiredAdded value: +[ + "product", + "size", + "quantity" +] - added
Input schema / properties / paymentMethodAdded value: +{ + "description": "bank_transfer = převod + QR (výchozí); card = odkaz na platbu kartou (Stripe Checkout, Apple/Google Pay podle prohlížeče)", + "enum": [ + "bank_transfer", + "card" + ], + "type": "string" +} - added
Input schema / properties / pickupPointIdAdded value: +{ + "description": "id výdejního místa z find_pickup_points (povinné u dopravy na výdejní místo)", + "type": "string" +} - added
Input schema / properties / pickupPointNameAdded value: +{ + "description": "název výdejního místa (volitelné, doplní se samo)", + "type": "string" +} - added
Input schema / properties / promoCode / descriptionAdded value: +"slevový kód; neplatný kód = chyba (nikdy tiše plná cena)" - changed
Input schema / properties / shippingId / descriptionPrevious value: -"např. 'zasilkovna','balikovna','ppl','dpd' (volitelné)"New value: +"doprava: zasilkovna (výdejní místo / Z-BOX, 89 Kč), balikovna (69 Kč), ppl-vydejni (79 Kč), dpd-vydejni (89 Kč), ppl / dpd (na adresu, 129 Kč); od 1 500 Kč zdarma; osobni (Šitbořice) jen se slevovým kódem, který ho odemyká" - added
Input schema / properties / shippingId / enumAdded value: +[ + "zasilkovna", + "balikovna", + "ppl-vydejni", + "dpd-vydejni", + "ppl", + "dpd", + "osobni" +] - changed
Input schema / requiredPrevious value: -[ - "items", - "customer", - "consent" -]New value: +[ + "items", + "customer", + "shippingId", + "consent" +]
- Added
find_pickup_points - Changed
get_order_status4 fields changed- changed
Input schema / properties / email / descriptionPrevious value: -"e-mail zákazníka použitý v objednávce"New value: +"e-mail zákazníka z objednávky — jen spolu s orderNumber" - changed
Input schema / properties / orderNumber / descriptionPrevious value: -"číslo objednávky z create_order (9 číslic)"New value: +"číslo objednávky (9 číslic) — jen spolu s e-mailem" - added
Input schema / properties / statusTokenAdded value: +{ + "description": "statusToken z create_order (poslední část statusUrl) — plný přístup", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "orderNumber", - "email" -]New value: +[]
- Added
get_payment_link - Added
lookup_company - Added
quote_order
2 tool updates
- Changed
create_order1 field changed- added
Input schema / properties / idempotencyKeyAdded value: +{ + "description": "libovolný unikátní klíč této objednávky (např. UUID); opakované volání se stejným klíčem a obsahem vrátí stejnou objednávku (replayed:true), stejný klíč s jiným obsahem = 409", + "maxLength": 128, + "type": "string" +}
- Changed
get_order_status3 fields changed- added
Input schema / properties / emailAdded value: +{ + "description": "e-mail zákazníka použitý v objednávce", + "type": "string" +} - added
Input schema / properties / orderNumber / descriptionAdded value: +"číslo objednávky z create_order (9 číslic)" - changed
Input schema / requiredPrevious value: -[ - "orderNumber" -]New value: +[ + "orderNumber", + "email" +]
1 tool update
- Changed
create_order2 fields changed- added
Input schema / properties / notes / descriptionAdded value: +"vzkaz zákazníka k objednávce (co má dílna vědět); uloží se k zakázce jako poznámka od zákazníka, delší text se ořízne" - added
Input schema / properties / notes / maxLengthAdded value: +1000
5 tool updates
- First observed
create_design - First observed
create_order - First observed
get_order_status - First observed
get_quote - First observed
list_products
Related MCP Connectors
Aktuelle priser i DKK, muligheder og fragtpriser for trykte reklameartikler.
Design custom T-shirts, preview artwork, personalize team shirts and prepare a checkout link.
401Vyhledávání a detail českých firem, finanční výkazy a ukazatele z veřejných rejstříků.
Aktuelle Preise, Optionen und Versandkosten für bedruckte Werbeartikel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server for the allover.art print-on-demand store: search 30,000+ all-over-print 100% cotton tees, build and edit a cart, apply promo codes and prepare checkout.1MIT
- AlicenseNot gradedqualityDmaintenanceSearch product catalogs across thousands of Central European e-shops. Semantic search, keyword matching, GTIN/EAN lookup — via REST API or MCP. \~2,500 e-shops | ~8.5M products | 7 countries (CZ, SK, PL, HU, RO, DE, AT)MIT
- AlicenseAqualityDmaintenanceLets Claude compare Magic: The Gathering single-card prices across six Czech online card shops, with optional Cardmarket fallback. Queries all shops in parallel and returns a normalized, price-sorted list.103MIT
- AlicenseAqualityCmaintenanceEnables searching products, retrieving product details, listing stores, checking stock availability, and comparing prices across Czech DIY retailers.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.